STM32----DMA

本文介绍了DMA(直接存储器访问)控制器的工作原理,包括多个通道的仲裁机制、配置步骤(如外设地址、数据传输方向、数据量等),并指出丢失数据可能是由于发送未使用DMA或中断处理不当导致的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DMA 框图

 

 DMA通道

DMA1有七个通道,DMA2有五个通道, 但同一时刻只能接收一个通道的请求,如果出现两个或以上的通道请求,则需要仲裁。

仲裁流程: 

 1.经过软件判断,设置DMA_CCRx寄存器

2.如果软件无法判断,则经过硬件,对通道的编号进行对比,通道编号越小优先级越高

DMA配置

 1.DMA外设地址,内存地址配置

 2.DMA数据传输方向

1.外设到存储器

外设地址为源地址,DMA内存地址为目标地址

2.存储器到外设

DMA内存地址为源地址,外设地址为目标地址

3.存储器到存储器,如A传输至B,则此时,A为外设地址,B为内存地址

3.DMA传输的数据量及单位

同时需要配置数据宽度,如8/16/32,之后还要设置外设和存储器的指针增量

4.是否循环

5.使能

ps:

出现丢失的现象,可能是因为发送没有使用DMA,导致发送的速度比接收慢,然后溢出了?但感觉不至于,这个问题不太明白

发现一个问题了,空闲中断我没有去读,这就导致标志位没清零,所以有的时候会卡住。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值