关于串口驱动驱动同时使能RX\TX DMA 导致无法发送

发布于 2021-04-12 09:05:10

MCU环境是STM32F103VCT6,使用官方的串口 DMA接收及轮询发送 demo;做压力测试,间隔20ms发送一次数据,每次发送字节数20Byts,串口驱动缓存 384Byts;

测试方式:
1、rt_device_open(serial, RT_DEVICE_FLAG_DMA_RX);程序正常
2、rt_device_open(serial, RT_DEVICE_FLAG_DMA_TX | RT_DEVICE_FLAG_DMA_RX);程序不正常;

错误的现象是:
无法发送数据,追踪发现是 rt_data_queue_push()满了,且此时无法再触发发送完成中断;

我之前使用自己的 串口DMA驱动+RTT 做压力测试 3*24h 是正常的;
是不是发送完成中断被覆盖了?
请教各位!感谢。

查看更多

关注者
0
被浏览
136
3 个回答
flashman2002
flashman2002 2021-04-12

请展示一下你的DMA发送代码。

james_s
james_s 2021-04-12

确认一下单独RT_DEVICE_FLAG_DMA_TX正常

mii
mii 2021-04-12

rt_data_queue_push 发送满了,有可能是发送不正常。你可以跟踪一下发送正常的情况下,由谁消耗这个队列,看看消耗的条件,以确认是什么条件不满足而造成这种情况 。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览