STM32-CC1101无线模块(收发已调通)

2019-07-21 04:40发布

在这看了这么多资料,今天也发一发,希望能帮助到一点。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
41条回答
打洞者
2019-07-24 14:02
柳明 发表于 2016-8-19 18:02
翻了一下文档 Packet Size 这个参数决定了数据包的长度 楼主代码   

0x0c    // PKTLEN    Packet len ...

你调通了么,我的板子是战舰V3实测通信失败啊,拿示波器看MOSI引脚波形,发送数据无问题,但另外一个板子收不到数据,看MISO引脚无波形,调试程序发现接收函数检测到的接收数据字节数为0
[mw_shl_code=c,true]INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
{
    INT8U status[2];
    INT8U packetLength;
        INT8U i=(*length)*4;  // 具体多少要根据datarate和length来决定

    halSpiStrobe(CCxxx0_SRX);                //进入接收状态
        //delay(5);
    //while (!GDO1);
    //while (GDO1);
        delay(2);
        while (GDO0)
        {
                delay(2);
                --i;
                if(i<1)
                   return 0;             
        }         
    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
        {
        packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
        if (packetLength <= *length)                 //如果所要的有效数据长度小于等于接收到的数据包的长度
                {
            halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
            *length = packetLength;                                //把接收数据长度的修改为当前数据的长度
        
            // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
            halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);         //读出CRC校验位
                        halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
            return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
        }
                 else
                {
            *length = packetLength;
            halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
            return 0;
        }
    }
        else
        return 0;
}[/mw_shl_code]

一周热门 更多>