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.

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中断,等串口发送完再打开。这样是否会出现无线丢包?

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