jinshaopu 发表于 2014-10-27 17:12:05

C51模拟SPI读CC1101寄存器出错

本帖最后由 jinshaopu 于 2014-10-27 17:15 编辑

手里有4个cc1101的模块,准备自己做个小玩意
电路连接:
S52单片机供电5V

无线模块供电3.3V

SPI引脚直接连在P2口上

程序就是网上随便能下到的那个
因为接收程序上电之后就有数据(没发送的时候)考虑到可能是SPI的问题,就用串口写了下面一个读寄存器的测试来看SPI通信是不是正常。
看资料说这个返回结果应该是0x80但是我的结果基本是乱码。可以确定是模拟SPI的问题,换了几个模块都不行。
while(1)
{
if (Cmd==0x01)
                {
                        Cmd=0x00;
                        ros=1;
                        SendByte(0x01);
                        ros=0;
                        i=halSpiReadReg( CCxxx0_PARTNUM);
                        ros=1;
                        SendByte(i);
                        ros=0;       
                }                       
}

模拟SPI的过程 网上那个我也没改
uint8 SpiTxRxByte(uint8 dat)
{
        uint8 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_();
                //halWait(50);   本来想这是延时短的事,但测试感觉不是

                temp <<= 1;
                if(MISO)temp++;
                SCK = 0;
                _nop_();
                _nop_();
                //halWait(50);       
        }
        return temp;
}
也试过在MISOMOSI上加上拉电阻10K的感觉没什么改善
大家有没有调这个的经验 谢谢

wc261034 发表于 2015-6-13 22:20:30

0x30( 0xF0): PARTNUM-芯片 ID我用PIC单片机硬件SPI读这个寄存器,读出来是0x02. 楼主解决了吗

Li_Nick 发表于 2015-11-18 10:58:19

没人回答?楼主,这个问题要是解决了的话,麻烦把解决方案晒出来大家学习学习吧。
页: [1]
查看完整版本: C51模拟SPI读CC1101寄存器出错