ch_liuping 发表于 2022-12-9 14:45

关于HC32F460 DMA 的疑问

根据 勘误表
■ 问题描述
DMA 通道传输完成后,硬件会使通道使能寄存器(DMA_CHEN)相应位自动清零。可能会和软件写使
能 DMA_CHEN 产生冲突。
■ 变通措施
避免在 DMA_CHEN 的某位或某几位自动清零时,对该寄存器内执行 RMW 操作

按照这个逻辑,DMA就是个**肋了啊,
现在需要使用多个通道,有没有可以绕开的办法?

QQ3461816790 发表于 2022-12-9 14:51

用例程跑跑看

ch_liuping 发表于 2022-12-9 16:23

本帖最后由 ch_liuping 于 2022-12-9 16:24 编辑

看了驱动库中的 DMA_ChCmd 函数的实现,在其它通道在使用中的情况下,如果待传输的数量大于10,则不等待,如果待传输的数量小于10,要等待通道传输完成。

如果理解没错,那最坏的情况是需要等待30个数据传输的时间,那每个数据传输的时间是不同外设来确定的,

哎!

tpgf 发表于 2023-1-1 13:46

这种清零以及软件冲突可以通过一定的数据处理滞后进行妥协吗

qcliu 发表于 2023-1-1 14:16

这个等待传输的数量 是指的数据包的数量还是值数据的数量啊

drer 发表于 2023-1-1 14:29

30个数据的传输时间是多少呢 跟波特率有关系吗

coshi 发表于 2023-1-1 14:36

如何避免在 DMA_CHEN 的某位或某几位自动清零时,对该寄存器内执行 RMW 操作呢

kxsi 发表于 2023-1-1 14:47

这个默认的等待时间可以通过配置进行更改吗

wiba 发表于 2023-1-1 15:04

任何模式下的数据传输在数据包之间都需要等待一定的时间
页: [1]
查看完整版本: 关于HC32F460 DMA 的疑问