liushiming82 发表于 2024-3-14 15:06

有关HC32F460芯片DMA多个通道同时使用的问题

大家好,我第一次使用HC32F460的DMA, 使用DMA1的多个通道同时使用的问题,通道0没有用
通道1:DMA+SPI驱动LCD屏

通道2:UART4+TX
通道3:UART4+RX
出现问题时,串口接收数据间距小于500ms后,LCD屏就死锁,就是LCD屏不刷新(一直显示固定数据) ,用示波器检查发现,只要串口接收数据间隔小于500ms,SPI就没有信号输出,通过KEIL软件仿真发现,DMA的通海1没有把数据传过去。把串口DMA的通道关闭后LCD屏可以正常显示,说明HC32F460的DMA不能同时使用多个通道,大家有没有碰到这个问题,有没有解决方案,谢谢

wubangmi 发表于 2024-3-15 09:18

把SPI的DMA和UART的DMA分开两个单元单独来用。
详细来说上面这句话的意思就是SPI+DMA1,USART+DMA2,这是对于你不管是否写成功相对应寄存器的操作。

官方勘误表上有一句话如下:DMA 同一单元内,有通道正在进行 Block 传输时,无法修改本单元内其他通道的配置
提出的解决方式是:配置 DMA 寄存器后,读取对应寄存器值判断是否写入成功,如未成功,继续写直至成功或超时处理
官方勘误的表述是确保写成功,然而这样有可能在需要快速操作的时候是不能容忍的。

liushiming82 发表于 2024-3-15 15:39

谢谢大佬的回答,我的每个DMA都功能,所以我现在修改方案,我现在只用SPI功能,没有用DMA了,就可以了,也没有很多数据要写

yangxiaor520 发表于 2024-3-15 21:07

最好不要用同一个DMA

yangxiaor520 发表于 2024-3-15 21:08

最好不要用同一个DMA

daichaodai 发表于 2024-3-18 07:41

应该是通道配合问题没设置好

长江一道浪 发表于 2024-3-20 14:48

大哥多个通道实现没有?我两个串口DMA没有实现。

长江一道浪 发表于 2024-3-20 17:35

yangxiaor520 发表于 2024-3-15 21:08
最好不要用同一个DMA

确实,我使用库3.2.0的DMA异步例子,写了串口1和串口2,接收用的DMA1,发送用的DMA2,这样导致串口1接收数据异常,改成串口1为DMA1,串口2位DMA2就可以了。
有个问题问大佬,官方的例程中有一个串口DMA接收完成函数,但是这个函数在仿真时从未进入过,按照程序来说应该会进入这个中断,请问这是什么原因呢。

小夏天的大西瓜 发表于 2024-3-26 18:18

DMA使用的话,建议不要使用一个DMA

LOVEEVER 发表于 2024-3-27 10:59

wubangmi 发表于 2024-3-15 09:18
把SPI的DMA和UART的DMA分开两个单元单独来用。
详细来说上面这句话的意思就是SPI+DMA1,USART+DMA2,这是对于 ...

DMA应用细节确实没有注意到,学习到了{:victory:}

liushiming82 发表于 2024-3-28 10:31

谢谢大佬跟帖,也希望能帮助到大家,反正我花了很长时间,才知道是这问题

沙滩上的长颈鹿 发表于 2024-10-15 09:18

您好,我最近刚使用F460硬件SPI+DMA驱动lcd屏幕,尝试了很多方法都不成功,可以借鉴一下您的SPI+DMA驱动lcd的方法么

Alf76 发表于 2025-4-4 10:59

这个问题我也遇到过,必须要把DMA停下来才能加新的DMA通道。结果是自己写了个DMA驱动:
在起动时把需要DMA的模组都登记了,用LLP使DMA***不停下来,把用没实际作用的描述符写进未用到的DMA,并在工作后处于暂停状态;用到时把有用的描述符加进LLP的下一个描述符。这样就可以多个DMA不同时间开始而并行工作了。

发顺丰更大nc 发表于 2025-4-23 10:24

大家有没有碰到这个问题,有没有解决方案

发顺丰更大nc 发表于 2025-4-23 10:44

说明HC32F460的DMA不能同时使用多个通道

华力电子 发表于 2025-4-24 09:57

好的

Amazingxixixi 发表于 2025-4-24 14:34

按照以前的经验来说,这个是个不错的案例。但也有很多值得改进的地方。

有何不可0365 发表于 2025-4-30 15:46

很可能是由于 DMA 通道仲裁冲突或配置不当导致的数据传输阻塞,而不是 HC32F460 DMA 本身不能多通道同时工作。

有何不可0365 发表于 2025-4-30 15:47

SPI LCD刷屏数据量较大,若DMA带宽不够或中断响应慢,极易影响其他通道。

9dome猫 发表于 2025-6-30 15:59

学习一下
页: [1] 2
查看完整版本: 有关HC32F460芯片DMA多个通道同时使用的问题