打印

请问SPI通信问题

[复制链接]
1792|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yeen|  楼主 | 2008-2-27 01:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是SPI写通信,但不太明白

INT8U SpiTxRxByte(INT8U dat) 

        INT8U i,temp; 
        temp = 0; 
         
        SCK_0; 
        for(i=0; i<8; i++) 
        { 
                if(dat & 0x80)  //这几行什么含义?
                { 
                        MOSI_1; 
                } 
                else MOSI_0; 
                dat <<= 1; 


                SCK_1;  
                _nop_(); 
                _nop_(); 

                temp <<= 1; 
                if(MISO)temp &= 0x01;  
                SCK_0; 
                _nop_(); 
                _nop_();         
        } 
        return temp; 

相关帖子

沙发
huntington| | 2008-2-27 18:31 | 只看该作者

发送一个字节的一个位。。。

循环了8次,发送了一个字节。。。

使用特权

评论回复
板凳
hellomcu| | 2008-2-27 19:19 | 只看该作者

基本的C语言

   就是信号线对应确定的硬件罢了
相关链接:http://shop35088126.taobao.com

使用特权

评论回复
地板
yeen|  楼主 | 2008-2-27 20:07 | 只看该作者

还是不明白啊`

 if(dat & 0x80)                  
   { 
      MOSI_1;
    } 
      else MOSI_0; 
      dat <<= 1; 

它这里为什么要加一个判断dat & 0x80 呢? MOSI_1是不是指发送结束了?MOSI_0是不是指还没发送完?

还有它这是SPI读和写程序,哪里标志读和写啊?

使用特权

评论回复
5
huntington| | 2008-2-28 08:18 | 只看该作者

MOSI and MISO is pins of SPI interface.

Data receive/send from these two pins.

使用特权

评论回复
6
zlgmcuCHTZ| | 2008-2-28 08:38 | 只看该作者

晕,楼主还是去看下SPI协议

MOSI_0是MOSI线拉低,MOSI_1是MOSI线置1

使用特权

评论回复
7
zgl7903| | 2008-2-28 09:37 | 只看该作者

并行数据变为串行数据,高位先发

使用特权

评论回复
8
gzs8317| | 2008-2-29 16:40 | 只看该作者

请问SPI通信问题

一个字节分8次传输,每次传输一位并判断此位是高位还是低位,也就是是1还是0!

使用特权

评论回复
9
zgl7903| | 2008-3-1 11:58 | 只看该作者

楼上的不要误解了

一个字节 bit7-bit6-bit5-bit4-bit3-bit2-bit1-bit0 
bit7为高位  bit0为低位
与其中存储的是0还是1没有关系

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝