打印
[MM32硬件]

灵动MCU的UART利用DMA 进行通信

[复制链接]
1066|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自动识别?

使用特权

评论回复
5
canfeil| | 2024-10-23 20:15 | 只看该作者
我觉得直接可以找例程的啊,官方例程是有DMA的

使用特权

评论回复
6
hight1light| | 2024-10-23 21:15 | 只看该作者
确实,DMA的寄存器基本没咋看过,都是直接扔到里面发送就完事儿了

使用特权

评论回复
7
miltk| | 2024-10-23 22:33 | 只看该作者
还看寄存器干啥,直接例程搞起就好了

使用特权

评论回复
8
twinkhahale| | 2024-10-23 23:45 | 只看该作者
一般不都是固件库来弄吗,固件库还是比较简单的

使用特权

评论回复
9
suiziq| | 2024-10-24 08:30 | 只看该作者
灵动的资料还是比较全面的,直接按照官方例程来操作就行

使用特权

评论回复
10
nuan11nuan| | 2024-10-24 09:42 | 只看该作者
其实很多都是类似于ST的芯片,所以你按照ST的逻辑来操作UART+DMA也行的

使用特权

评论回复
11
yuliangren| | 2024-10-24 10:02 | 只看该作者
讲的很好,不过一般人应该也不会使用寄存器来操作吧

使用特权

评论回复
12
gongqijuns| | 2024-10-24 13:00 | 只看该作者
如果灵动有可视化配置软件就更好了

使用特权

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

本版积分规则

288

主题

1897

帖子

4

粉丝