当前位置: 代码迷 >> 单片机 >> PIC18F2580+TC72获取温度的有关问题(SPI模式)
  详细解决方案

PIC18F2580+TC72获取温度的有关问题(SPI模式)

热度:217   发布时间:2016-04-28 14:44:29.0
PIC18F2580+TC72获取温度的问题(SPI模式)
byte ReadTC72(byte command_byte) 
  {
    byte tmp_data;
    CS_TC72=1;
    SSPBUF=command_byte;
    while(!SSPSTATbits.BF);
    tmp_data=SSPBUF;
    SSPBUF=0x00;
    while(!SSPSTATbits.BF);
    tmp_data=SSPBUF;

    CS_TC72=0;
    return (tmp_data);

  };
  这是读取温度的子程序,我一直不明白红色部分有什么作用,感觉是多余的,因为第一个tem_date不就是温度值了吗?
------解决思路----------------------
没用过,但看流程应该是这样解释
SPI是全双工的,当发送command_byte时会同时收到一个字节(参考SPI逻辑), 这个字节一般没意义
所以有第一次
    while(!SSPSTATbits.BF);
     tmp_data=SSPBUF;

当TC72收到command_byte后, 会返回所需要的数据(这里是温度), 但SPI的特性决定, 主机想要读取这个数据的话必须再发一个过去,随便发什么字节, 所以才有SSPBUF=0x00;,发0x00的同时,接收需要的数据字节.

你仔细看SPI的逻辑流程就明白了