YTM32B1HA0芯片uart不进中断
-
发送用DMA,可以正常发送,接收用的Uart Idle Interrupt做不定长接收,发送的同时有数据要接收
问题现象:接收不进中断,读取不到数据,波特率250k,具体现象数据如下:
-
- 先调接收函数再调发送函数
2.发送也用中断模式或者Polling模式试试
- 先调接收函数再调发送函数
-
先调接收函数再调发送函数,使用中断模式,分别测试波特率250K,500k,1M和2M四种波特率,情况如下:
250K和500k能正常接收
1M和2M接收不到数据,不进接收中断
我们的应用是用串口做显示,需要高速刷新,需要使用DMA串口发送做刷新,波特殊2M,现在是不断降低波特来率查找问题 -
初始化函数
中断回调函数
uart引脚上都能抓到波形,MCU发送的数据和从机ACK的数据没有问题,所以波特率不会有问题的
-
会议链接: https://work.weixin.qq.com/webapp/tm/4sjNxaXVZebjQl5hKgtmN9
#会议号: 106-286-802 -
大概问题确认了,LINFlexD 在 2Mbps 情况下,如果 TX 使用DMA 发送,RX 使用 中断接收,可能没法做到全双工传输,接收数据可能会来不及读取,产生 overrun 事件。
建议都用 DMA 进行传输,即发送用 DMA,接收也用 DMA。同时当前 SDK 不支持用 DMA 传输模式时,接收不定长数据。
下方代码仅提供参考,可以通过 UART Start 位检测来判断接收数据开始,并且开启 Timeout 超时
-
“通过 UART Start 位检测来判断接收数据开始,并且开启 Timeout 超时”,这个方案有参考demo?
-
此主題已被删除!
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...