打印
[其他]

解决HC32F460 DMA 通道使能冲突的一种方法

[复制链接]
136|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kensilong|  楼主 | 2024-7-1 18:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
解决HC32F460 DMA 通道使能冲突的一种方法。
从HC32F460勘误表可以看到,这一系列的DMA使能寄存器各通道间由于非原子性操作可能导致冲突。这一系列的DMA是有链表功能的,因此我们可以用链表来解决这一问题。一般我们DMA都是用于大数据量通信时使用的,就分为接收和发送两种情况。接收的话,我们可以通过环形链表来实现,通过超时来让用户去获取数据长度,再处理数据。而发送的话,当通过链表发送,发送完成用空链表停止发送,下次发送再通过软件发送一个数据来启动。这里以UART为例做了的例子。附件是代码,供参考。

HC32F460_DDL_Rev3.1.0.part1.zip

5 MB

HC32F460_DDL_Rev3.1.0.part2.zip

5 MB

HC32F460_DDL_Rev3.1.0.part3.zip

4.93 MB

HC32F460_DDL_Rev3.1.0.part4.zip

928.31 KB

使用特权

评论回复
沙发
caigang13| | 2024-7-1 19:10 | 只看该作者
通道使能冲突是因为复用的原因,一般应用过程中DMA的通道数据源都是固定的吧。

使用特权

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

本版积分规则

4

主题

32

帖子

1

粉丝