2回答

1收藏

[求助] 谁帮我看看这个时序图是怎么看的?

TI TI 3860 人阅读 | 2 人回复 | 2014-01-23

file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\251333903\QQ\WinTemp\RichOle\1HZ)]TS3SZS0B291C`}PNP7.jpguint SPI_RW(uint uchar)
{
     uint bit_ctr;
     for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
     {
          if(uchar & 0x80)         // output 'uchar', MSB to MOSI
               SPI_RF_MO_HIGH;
          else SPI_RF_MO_LOW;
          uchar = (uchar << 1);           // shift next bit into MSB..
          SPI_RF_SCK_HIGH;                      // Set SCK high..
          inerDelay_us(20);
          if (READ_MI)
               uchar|=0x01;                       // capture current MISO bit
          SPI_RF_SCK_LOW;                              // ..then set SCK low again
     }
     return uchar;                             // return read uchar
}

真的不明白时序图是怎么看。我看的上面的读写时序图,为什么理解的都是每当clk上升沿的时候读写数据,为什么程序里面的是上升沿输入,下降沿输出。我哪里理解错了,求大神指导?

QQ图片20140123211550.jpg (79.8 KB, 下载次数: 49)

QQ图片20140123211550.jpg
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

Janson__huang

发表于 2014-1-24 17:52:19 | 只看该作者

我是这么理解的:
时序图表示上升沿锁存,上升沿对应
SPI_RF_SCK_HIGH;                      // Set SCK high..

输出数据应在上升沿之前准备完成,故为
if(uchar & 0x80)         // output 'uchar', MSB to MOSI
  SPI_RF_MO_HIGH;
else SPI_RF_MO_LOW;
uchar = (uchar << 1);           // shift next bit into MSB..

到达上升沿后,数据稳定,此时可以读取数据,故为
if (READ_MI)
  uchar|=0x01;                       // capture current MISO bit

最后产生下降沿时钟
SPI_RF_SCK_LOW;                              // ..then set SCK low again
板凳

abu315

发表于 2014-1-26 11:14:23 | 只看该作者

我的理解:
1、该芯片的读写共需要24个时钟周期;
2、上述程序有8个时钟周期,所以该函数要调用3次;
3、在调用函数之前,SCK要初始化低电平;
4、写数据在SCK上升沿有效;
5、在SCK高电平时读取数据。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条