[MM32硬件] 灵动MCU的UART利用DMA 进行通信

[复制链接]
2065|11
 楼主| LOVEEVER 发表于 2024-9-27 17:52 | 显示全部楼层 |阅读模式
利用DMA 发送
使用DMA 进行发送时,首先在DMA 控制寄存器上将UART_TDR 寄存器的地址配置成
DMA 传输的目的地址,将存储器地址配置成DMA 传输的源地址,并配置传输的数据量。
通过设置UART_GCR 寄存器的DMAMODE 位来激活DMA 模式。当TXEN 位被置‘1’
时,DMA 就从指定的SRAM 区传送数据到UART_TDR 寄存器。

利用DMA 接收
使用DMA 进行接收时,首先在DMA 控制寄存器上将UART_RDR 寄存器的地址配置成
DMA 传输的源地址,将存储器地址配置成DMA 传输的目的地址,并配置传输的数据量。
通过设置UART_GCR 寄存器的DMAMODE 位来激活DMA 模式。当RXEN 位使能时,每
接收到一个字节,DMA 就把数据从UART_RDR 寄存器传送到指定的SRAM 区。

星星点点didi 发表于 2024-10-23 18:01 | 显示全部楼层
灵动MCU(如MM32SPIN05)的UART模块支持使用DMA(直接内存访问)进行通信,以提高数据传输效率并减少CPU的负担
nqty 发表于 2024-10-23 19:08 | 显示全部楼层
初始化UART模块,配置波特率、数据位、停止位和校验位等参数。然后配置DMA就行了
suncat0504 发表于 2024-10-23 19:31 | 显示全部楼层
对于不定长度的串口通讯,使用DMA的话,是不是要及时调整DMA的长度?还是可以通过特殊字节,让DMA自动识别?
canfeil 发表于 2024-10-23 20:15 | 显示全部楼层
我觉得直接可以找例程的啊,官方例程是有DMA的
hight1light 发表于 2024-10-23 21:15 | 显示全部楼层
确实,DMA的寄存器基本没咋看过,都是直接扔到里面发送就完事儿了
miltk 发表于 2024-10-23 22:33 | 显示全部楼层
还看寄存器干啥,直接例程搞起就好了
twinkhahale 发表于 2024-10-23 23:45 | 显示全部楼层
一般不都是固件库来弄吗,固件库还是比较简单的
suiziq 发表于 2024-10-24 08:30 | 显示全部楼层
灵动的资料还是比较全面的,直接按照官方例程来操作就行
nuan11nuan 发表于 2024-10-24 09:42 | 显示全部楼层
其实很多都是类似于ST的芯片,所以你按照ST的逻辑来操作UART+DMA也行的
yuliangren 发表于 2024-10-24 10:02 | 显示全部楼层
讲的很好,不过一般人应该也不会使用寄存器来操作吧
gongqijuns 发表于 2024-10-24 13:00 | 显示全部楼层
如果灵动有可视化配置软件就更好了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

2689

帖子

7

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