微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2530周期性发送数据定时时间问题

CC2530周期性发送数据定时时间问题

时间:10-02 整理:3721RD 点击:
利用CC2530,一个作协调器,一个作终端,点对点无线通信,终端周期性发送数据给协调器,协调器讲收到的数据串口打印,但速度和理论相差甚远。
发送函数如下:

[C] 纯文本查看 复制代码

void SampleApp_Send_P2P_Message( void ){ uint8 data[2]="1"; if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc, SAMPLEAPP_P2P_CLUSTERID, 1, data, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else { // Error occurred in request to send. }}


仅发送一个字符串,定时时间为20ms,定时发送函数如下:
osal_start_timerEx( SampleApp_TaskID,
SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );// SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT为20ms

但测试中,协调器1s内仅能接收到3到4次数据,请问时间都耗在哪里呢?是osal_start_timerEx()函数问题吗? 如果想提高通信速率,该怎么解决呢,谢谢各位帮忙

你用抓包工具分析下网络通信,看看耗在网络上面通信的时间是多少,先排除这个,在看下是不是串口驱动有问题。

终端 唤醒后,还有别的事情要做。。 而且 其发送数据 在没有rout的情况下,更加复杂。

你设置的延时是 定时器唤醒延时,但是MCU唤醒后,还有很多其他的事情要做。。ZIGBEE的OS 不是实时OS 。需要等待排在前面的任务执行完成。

我也遇到这种传输时长比较长的问题。我猜测会不会是终端休眠的原因。但我也不知道是不是这个,好希望可以让终端不数据包biubiubiu的快速的发

uint8 osal_start_reload_timer( uint8 taskID, uint16 event_id, uint32 timeout_value );
你可以使用这个函数试试。另外你用串口发送一下进入事件的计数。

我也遇到过这个问题,你可以找到f8wConfig.cfg中的-DRFD_RCVC_ALWAYS_ON,将它改为TRUE,具体的含义你可以上网看看,这样会快一点,但是根据经验20ms的周期实在有点太快,MCU还得轮询其他事件

Z-stack协议栈默认轮询周期是100ms,也就是OSAL啥都不干,只等你发信息,1s钟也最多发10次,但是OSAL还要轮询和处理HAL层、网络层、MAC层、应用层的其它事件呢,都要花时间的。发送函数属于应用层事件的优先级比较低,所以你接收34次很正常,发送周期时间不能太短的。

估计要超过100MS吧。更长一点就稳定。一帧数据可以大点。搞个8090字节过去。

这个问题我也遇到过,时间改到100ms以下感觉基本没啥变化了。仔细想想毕竟51内核。

协议栈Tools中f8wConfig.cfg文件中如下图所示的代码应该对楼主有所帮助


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top