我使用协议栈的串口测试,CC2530接收到数据后,显示接收到的长度和事件。每隔1s发送136字节数据,过一段事件后现象如图片所示
如图所示:过一段事件后,发送的是136字节,但串口接收到不是136字节。事件依然是HAL_UART_RX_TIMEOUT事件。
请问这是为什么?有什么推荐的解决办法?
Viki Shi:
波特率多少?
user4711142:
回复 Viki Shi:
9600
Viki Shi:
回复 user4711142:
波特率为9600【或更低】的时候常发生数据包来不及接收的问题,需要增加接收DMA的启动延时
/ The timeout tick is at 32-kHz, so multiply msecs by 33.
#define HAL_UART_MSECS_TO_TICKS33
将DMA接受数据延时改大,比如300或者200
user4711142:
回复 Viki Shi:
我用的中断方式。
1、请问用中断方式和DMA方式那个好?
2、如果用ISR方式,应该更改哪里?
3、如果用DMA方式,将HAL_UART_MSECS_TO_TICKS改为300么?
Viki Shi:
回复 user4711142:
推荐看一下官方指导文档:www.ti.com/…/swra222b.pdf