找回密码
 立即注册
查看: 140|回复: 3

关于DMA发送的问题请教

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-24 11:40:18

8

主题

25

回帖

516

积分

高级会员

积分
516
发表于 2025-3-20 19:26:26 | 显示全部楼层 |阅读模式
  1. DMA_UR1T_CFG = 0x80;                //bit7 1:Enable Interrupt
  2.         DMA_UR1T_STA = 0x00;
  3.         DMA_UR1T_AMT = DMA_TX_LEN;                //设置传输总字节数:n+1
  4.         DMA_UR1T_TXA = DmaBuffer1;
  5.         DMA_UR1T_CR = 0xc0;                        //bit7 1:使能 UART1_DMA, bit6 1:开始 UART1_DMA 自动发送
复制代码
这是例程里面初始化,开始 UART1_DMA 自动发送,这里的自动发送是指发送DmaBuffer1的数据,发送完成后进入中断,清零标志位后再次开始发送

是这样理解吗?
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-20 19:28:00 | 显示全部楼层
在您提供的代码中,DMAUR1TCFG、DMAUR1TSTA、DMAUR1TAMT、DMAUR1TTXA和DMAUR1TCR等寄存器配置用于初始化UART1的DMA发送。具体操作如下:<br><br>1. DMAUR1TCFG = 0x80; 该配置使能了DMA传输完成中断(bit7置1),以便在数据传输完成后触发中断处理。<br><br>2. DMAUR1TSTA = 0x00; 该寄存器用于清除状态标志,确保DMA传输状态初始化为空闲。<br><br>3. DMAUR1TAMT = DMATXLEN; 设置DMA传输的总字节数,此处为DMATXLEN,实际传输字节数为n+1。<br><br>4. DMAUR1TTXA = DmaBuffer1; 设置DMA传输的源地址为DmaBuffer1,即从该缓冲区读取数据并发送。<br><br>5. DMAUR1TCR = 0xc0; 该配置使能UART1的DMA传输(bit7置1),并启动DMA自动发送(bit6置1)。<br><br>在DMA传输完成后,系统将进入中断服务程序(ISR),在ISR中应清除中断标志位,并根据需要重新配置DMA以进行下一次传输。整个过程实现了高效的数据传输,减少了CPU的负担。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-3-21 08:09:30 | 显示全部楼层
使用DMA_UR1T_CR触发发送后,会自动开始发送设定缓冲区的数据
并在发送完成后进入dma中断,但是需要注意的是,发送完成后不会自动开始下一次发送
进入完中断后发送就停止了。
如果想要连续发送,可以在中断里再次使用DMA_UR1T_CR触发发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-24 11:40:18

8

主题

25

回帖

516

积分

高级会员

积分
516
发表于 2025-3-21 18:56:10 | 显示全部楼层
王*** 发表于 2025-3-21 08:09
使用DMA_UR1T_CR触发发送后,会自动开始发送设定缓冲区的数据
并在发送完成后进入dma中断,但是需要注意的 ...

谢谢 明白了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 23:15 , Processed in 0.108559 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表