TI中文支持网
TI专业的中文技术问题搜集分享网站

2530串口发送大量数据

我需要广播一个半径为1的数据包,接收到这个数据包的设备返回一个带有这次通讯的LQI和RSSI的包回来,然后接收设备把发送方的短地址、发送的LQI和RSSI、接收的LQI和RSSI通过串口打印出来,从而知道该点的信号强度。

串口数据包的格式为:

包头(2字节) + 命令字(1) + 数据长度(1) + 短地址(2) + 设备识别码(1) + 发送LQI(1) + 发送RSSI(1) + 接收LQI(1) + 接收RSSI(1) + 校验和(1) + 包尾(2)

一共14个字节。

目前串口使用的是协议栈默认的DMA发送,缓存大小也是默认的128字节。发现周边节点一多,串口就发不全了。

128 / 14 ≈ 9,也就是最多只能发送9个数据包。

解决猜想:

一、 手动调用HalUARTPoll(),这样是否会发生DMA没发送完成导致的丢数据?

二、 关闭RF中断,等串口发送完再打开。这样是否会出现无线丢包?

三、 是否有其他更好的方法?

YiKai Chen:

方便把你的程序貼上來看看你怎樣做的嗎?

Susan Yang:

您可以尝试修改默认串口接收发送缓冲区MT_UART_DEFAULT_MAX_RX_BUFF及MT_UART_DEFAULT_MAX_TX_BUFF
另外您现在大约有多少节点?

Dandjinh:

回复 Susan Yang:

周边大概有20+设备。
扩大缓冲区我也想过,不过我不认为这是个好方法。如果最后迫不得已我会用这方法,现在最好的就是能直接触发串口的DMA发送而不用等下次osal循环。

user5342508:

回复 Dandjinh:

你有找到直接触发串口DMA的方法了吗?现在有个问题也需要在一次osal循环内多次发送串口。

赞(0)
未经允许不得转载:TI中文支持网 » 2530串口发送大量数据
分享到: 更多 (0)