This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530接收BasicRF接收端数据字节大小的问题

Other Parts Discussed in Thread: SIMPLICITI

在用CC2530的BasicRF做通信的时候,发现当发送端一包数据发10个字节可以接收,发送20个字节就接收不到了。

对如下的接收程序进行分析,发现:

static void appLight()
{
// Initialize BasicRF
basicRfConfig.myAddr = RECEIVE_ADDR;
if(basicRfInit(&basicRfConfig)==FAILED) { //初始化basicRf数据结构
HAL_ASSERT(FALSE);
}
basicRfReceiveOn(); //允许接收

while (1) {
while(!basicRfPacketIsReady()); //检测是否接收到数据

//调用函数接收数据,接收完成置位
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) { // receive data
UartSend_String("R:",2);
UartSend_String(pRxData,APP_PAYLOAD_LENGTH);
UartSend_String("\n",1); 
LED2=!LED2; 
}
}
}

发现:

1.当一包数据小于10个字节的时候,程序可以运行过while(!basicRfPacketIsReady()); 函数,并将接收的数据串口打印出来;

2.当一包数据大于10个字节的时候,程序卡在while(!basicRfPacketIsReady()); 函数,程序卡死,不运行了;

3.当一包数据大于10个字节的时候,将while(!basicRfPacketIsReady()); 注释了,串口可以打印出数据包中大于10个字节的数据;

求问这是什么问题?

  • 做这种应用,推荐使用simpliciTI,包含收发驱动,支持2530,考虑了退避冲突,比basicRF好很多。

    http://www.ti.com/tool/SimpliciTI?keyMatch=simpliciTI&tisearch=Search-EN-Everything