[技术问题解答] 关于kinetis MK22FX512AVLH12 UART idle eDMA问题

[复制链接]
 楼主| 韬铸88 发表于 2016-2-1 22:28 | 显示全部楼层 |阅读模式
请教一下大家,在UART采用eDMA接收一帧数据后,利用UART IDLE产生中断,再进行一帧数据的处理。但是UART接收一帧数据后未进入空闲中断,该如何配置UART0_C1、UART0_C2、UART0_S1、UART0_C5这几个寄存器呢?调试的时候,eDMA可以接收到数据,但是无法进入UART IDLE中断,望大家知道的指点一下,谢谢!
 楼主| 韬铸88 发表于 2016-2-1 22:29 | 显示全部楼层
怎么总是刚发帖,就显示已结帖了呢
 楼主| 韬铸88 发表于 2016-2-2 10:34 | 显示全部楼层
如果不使用eDMA,仅仅配置UART发送接收,发送、接收、空闲中断,程序运行,在接收到一帧数据后,就会进入空闲中断;问题又来了,一旦进入空闲中断,就出不来了,一直空闲中断。该如何消除空闲中断呢?使得只有接收到一帧数据后只进行一次空闲中断,没有接收到数据,就不产生空闲中断。如何设置呢?
 楼主| 韬铸88 发表于 2016-2-2 11:32 | 显示全部楼层
在UART接收到一帧数据后,UART IDLE 空闲中断,先进行UART0_S1 |= UART_S1_IDLE_MASK;清除中断标准位,再进行读取数据UART_D中的数据。这样就不会再进入空闲中断了。只有在下次接收到数据后空闲,才进入空闲中断。这是在没搭配eDMA情况下做的。之前我没有在进行UART0_S1 |= UART_S1_IDLE_MASK;清除中断标准位后,进行读取UART_D中的数据,所以一直进入空闲中断。
 楼主| 韬铸88 发表于 2016-2-2 11:33 | 显示全部楼层
现在搭配eDMA试试看,情况是怎么样的。
a305566 发表于 2016-3-8 21:26 | 显示全部楼层
是调用库还是直接寄存器配置操作,现在edma可以用了吗?
 楼主| 韬铸88 发表于 2016-4-11 14:06 | 显示全部楼层
a305566 发表于 2016-3-8 21:26
是调用库还是直接寄存器配置操作,现在edma可以用了吗?

现在可以使用了,但是UART不能使用缓冲,开缓冲,接收数据重复错误;不知道是否是配置寄存器的问题或者的判断寄存器一些标志位问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

126

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部