发送端使用CC1101+MSP430发送数据
while (!(GDO0));
// Wait for GDO0 to be cleared -> end of packet
while (GDO0);
//halSpiStrobe(CCxxx0_SFTX);这条指令 能运行通过,没有卡住,说明发送成功?(不知道对不对)
然后接收端使用51单片机+CC1101 中间通过光耦连接解决5-3.3V的电平问题
然后接收端
- uint halRfReceivePacket(uchar *rxBuffer, uchar *length)
- {
- uchar status[2];
- uchar packetLength;
- uchar i=(*length)*4; // 具体多少要根据datarate和length来决定
- halSpiStrobe(CCxxx0_SRX); //进入接收状态
- //delay(5);
- //while (!GDO1);
- //while (GDO1);
- delay(20);
- while (GDO0)
- {
- delay(20);
- --i;
- if(i<1)
- return 0;
- }
- if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0 SPI读状态寄存输出当前值
- {
-
- LED_2=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;
- }
复制代码这个函数中接收到的字节数一直为0
小白。求大神知道
此帖出自
小平头技术问答
例程有很多,但就是找不出问题来。
太感谢了,之前CC1101发送成功了,但是一直接收不到同步字,调了一天都没找到问题,原来就是因为2个模块距离太近了,离远了之后立马收到了。
去年的帖子还有人回,也是难得
一周热门 更多>