打印
[技术问答]

M480系列芯片,为什么在开启PDMA功能后串口的中断就不能触发?

[复制链接]
310|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2023-4-11 14:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1、开启PDMA后,接收可用中断(RDAINT )不能触发,接收超时中断(RXTOINT) 只有在DMA设置的长度接收满时才触发。怎样才能让串口的中断能祥没开启PDMA时一样触发?

2、在定时读取PDMA缓存中的数据,首先判断当前通道的状态,但我使用PDMA_IS_CH_BUSY()判断时,一直获取不到正在占用的状态

使用特权

评论回复
沙发
jasontu| | 2023-4-12 09:15 | 只看该作者
、开启PDMA后,接收可用中断(RDAINT )不能触发,接收超时中断(RXTOINT) 只有在DMA设置的长度接收满时才触发。怎样才能让串口的中断能祥没开启PDMA时一样触发?
=>可以用pdma timeout中断处理,因为uart的中断发起已被pdma取值

2、在定时读取PDMA缓存中的数据,首先判断当前通道的状态,但我使用PDMA_IS_CH_BUSY()判断时,一直获取不到正在占用的状态
=>参考https://github.com/OpenNuvoton/M480BSP/tree/master/SampleCode/StdDriver/UART_PDMA

使用特权

评论回复
评论
panghongfei 2023-4-15 16:40 回复TA
超时中断如何知道PDMA已经接收的数量呢,那个寄存器能查询到 
板凳
onlycook| | 2023-4-12 14:00 | 只看该作者
1、PDMA就是将UART接收到数据读到RAM中,只要PDMA工作UART 接收区有数据就立刻被搬到RAM这是不会产生RDAINT 中断的。中断读数据和PDMA读数据同时有效那么数据不是乱套了

使用特权

评论回复
地板
onlycook| | 2023-4-12 14:00 | 只看该作者
2、PDMA接收到指定数量的数据会发生中断,在PDMA中断里面设置标志,中断外面读出数据比较好。另外,PDMA_IS_CH_BUSY()是UART有数据的时候,触发PDMA传输的那一小段时间才会置位,在定时器中断里面要读到这个bit为1比较困难。如果UART中的数据没有读走,可以检查这个bit

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1603

帖子

1

粉丝