DMA控制器

张开发
2026/4/24 21:51:13 15 分钟阅读

分享文章

DMA控制器
DMA 全称 Direct Memory Access直接存储器访问可以理解为一个“专职数据搬运公司”。在没有 DMA 的情况下CPU 需要亲自把数据从一个地方搬到另一个地方。有了 DMA你只需要告诉它从哪搬到哪源地址 → 目标地址一次搬多少数据宽度总共搬多少次传输次数然后 DMA 就会独立完成搬运工作CPU 可以专心去做其他重要的事。等 DMA 搬完了它通过中断通知 CPU“活儿干完了你来处理结果吧”角色扮演DMA通道DMA控制器框图第一部分从哪搬到哪1️⃣通道在stm32f103系列中有两个DMA控制器共有12个通道(DMA1有7个通道DMA2有5个通道)每个通道专门用来管理来自于一个或多个外设对存储器访问的请求但是一个通道每次只能搬运一个外设的数据。⚠️芯片内部每个 DMA 通道的请求线是固定连接到某些外设的。这张表的目的是“你想用某个外设的 DMA 功能必须使用哪个 DMA 的哪个通道”。2️⃣仲裁器当多个 DMA 通道同时有请求时DMA 控制器采用两级优先级仲裁。优先权管理分2个阶段软件每个通道的优先权可以在DMA_CCRx寄存器中设置有4个等级最高优先级高优先级中等优先级低优先级硬件如果2个请求有相同的软件优先级则较低编号的通道比较高编号的通道有较高的优先权。例如通道2优先于通道4。3️⃣传输方向外设 → 内存Peripheral to Memory例如 ADC 采集数据存入数组。内存 → 外设Memory to Peripheral例如将数组数据通过串口发送。内存 → 内存Memory to Memory例如将数组 A 的内容复制到数组 B。4️⃣指针

更多文章