codercmd 发表于 2025-3-28 22:33

RTT下,串口DMA没反应

使用了RTT STUDIO,参考了官网rtt官方的DMA的例程,没有接受的处理。
但是参考了RTT的中断又没有问题。

已经在board.h里,设置好了,同时在setting里也开启了DMA
#define BSP_USING_UART2
#define BSP_UART2_TX_PIN       "PA2"
#define BSP_UART2_RX_PIN       "PA3"
#define BSP_UART2_RX_USING_DMA


codercmd 发表于 2025-3-28 22:47

之前是使用STM32L435 DMA 串口开发的,业务扩展,AT32F435有8个串口准备移植到AT32来。
发现at32用RTT官方的驱动DMA,不起作用。

yzdel7 发表于 2025-3-29 18:45

STM32L4系列的串口DMA是直接挂在DMA1七个通道里面的channel6和channel 7上,而AT32F32跟STM32 DMA的机制有些区别,AT32的DMA还有个复用器,所以可能要修改RTT DMA的BSP。

sheltonyu 发表于 2025-3-31 09:45

本帖最后由 sheltonyu 于 2025-3-31 10:02 编辑

你好,有以下几点请注意一下:
1. 是某个串口的dma不能用还是所有串口dma都无法使用?
    dma外设通道设置默认进行了排布,外设间可能存在互斥导致没有实际开启,详见dma_config.h文件
2. debug确认一下setting里的串口dma支持是否有正确打开。
    打开后会生成RT_SERIAL_USING_DMA宏定义。
3. 如何判断的dma没起作用?
    串口接收是按loop buffer的方式不停的接收数据,收到数据时dma就自动进行收数据。4. 要以DMA的方式打开串口设备。




TimeRiddle 发表于 2025-4-7 16:09

代码贴一下,好分析

sanfuzi 发表于 2025-5-3 21:54

串口通信依赖于时钟信号,若晶振不起振或频率不准确,会影响串口和 DMA 的工作

usysm 发表于 2025-5-3 22:50

串口和 DMA 的引脚连接要正确。比如,串口的 TX、RX 引脚要和对应的 MCU 引脚连接好,DMA 通道的选择要和硬件设计一致。要检查引脚是否有松动、短路等情况。

earlmax 发表于 2025-5-4 00:21

DMA传输地址越界或数据长度配置错误。

sheflynn 发表于 2025-5-4 03:27

使用示波器或逻辑分析仪检查USART/DMA引脚信号是否正常。

biechedan 发表于 2025-5-4 19:56

DMA传输完成后的回调函数已被正确注册并实现。

febgxu 发表于 2025-5-6 09:59

确保 DMA 传输的源地址和目标地址正确。在 RTT 中,要注意缓冲区的地址是否为物理地址。

sheflynn 发表于 2025-5-6 11:47

RTT未正确绑定到UART外设或传输速率不匹配。

ingramward 发表于 2025-5-6 13:35

关闭DMA,改用轮询模式发送数据

sesefadou 发表于 2025-5-6 15:25

串口线接触不良或电平不兼容。            

olivem55arlowe 发表于 2025-5-6 17:32

DMA外设和UART外设的时钟已开启。

maudlu 发表于 2025-5-6 19:18

可以使用示波器观察晶振引脚的波形,判断晶振是否正常工作。

houjiakai 发表于 2025-5-6 21:01

确保 DMA 传输的缓冲区大小足够。如果缓冲区过小,可能会导致数据丢失或传输不完整。

youtome 发表于 2025-5-6 22:44

检查串口的TX、RX引脚是否正确连接。

pl202 发表于 2025-5-11 10:27

监控UART的TX/RX引脚信号,确认数据是否按预期发送。

gygp 发表于 2025-5-11 12:24

驱动未正确实现DMA接收回调或缓存机制,导致数据丢失
页: [1]
查看完整版本: RTT下,串口DMA没反应