嵌入式技术论坛
直播中

王秀珍

7年用户 1517经验值
私信 关注
[问答]

可以用串口空闲中断+DMA来实现串口接收不定长数据吗?

串口接收不定长数据,论坛上有人说可以用串口空闲中断+DMA来实现
1、串口空闲中断,没有硬件上的串口空闲中断,那是用串口中断+定时器中断来实现么?

2、DMA,RTT的DMA 是软件的DMA吧?而不是硬件DMA?不知道我的理解有没有错误。

回帖(3)

李玉兰

2023-3-7 14:50:20
1、在串口中断中判断是否idle中断,
if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE) != RESET)
如是,则去处理DMA中保存的接收到的串口数据。首先要在CubeMX中配置好。
2、不知道。
举报

陈敏

2023-3-7 14:50:28
1、如果硬件没有串口空闲中断或者超时中断的,是可以使用timer定时器来实现的,这个没问题。
2、RTT的DMA?RTT没有DMA啊,只是框架有针对DMA的接口,所以没什么软件DMA硬件DMA,只是一个软件接口,你可以通过这个接口结合你硬件的DMA控制器实现完整的DMA方式的串口驱动。
举报

陈丽

2023-3-7 14:50:35
1.先理解什么是空闲中断,简单讲就是当前波特率应该传输一个byte的时间内并没有数据,硬件就会给出一个DMA中断,自己找个时候去做个判断就知道是不是空闲中断。
2,先理解什么是DMA,你就会知道你这个说法是错的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分