2019-07-21 04:40发布
柳明 发表于 2016-8-19 18:02 翻了一下文档 Packet Size 这个参数决定了数据包的长度 楼主代码 0x0c // PKTLEN Packet len ...
最多设置5个标签!
你调通了么,我的板子是战舰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]
我的板子是战舰V3实测通信失败啊,拿示波器看MOSI引脚波形,发送数据无问题,但另外一个板子收不到数据,看MISO引脚无波形,调试程序发现接收函数检测到的接收数据字节数为0
一周热门 更多>