本文共 971 字,大约阅读时间需要 3 分钟。
soc 中没有 dma 模块soc 中 其他模块 很多 都和 dma 有 直接关系
为 cpu 减负
内存A地址数据(源)到内存B地址(目的)的直接(without cpu)传输内存A地址数据(源)到设备B地址(目的)的直接(without cpu)传输设备A地址数据(源)到内存B地址(目的)的直接(without cpu)传输
dma控制器数据流通道(请求)仲裁器1个控制器 及1个仲裁器(根据数据流的优先级仲裁) 8个数据流 (有优先级) 8个通道可选,只能设置1个通道虽然1个数据流有8个通道,但是同一时间只有1个通道可以连接到该数据流,进而连接到控制器初始化时只能设置1个通道连接到该数据流,且固定位该通道数据流之间有优先级dma请求的触发 软件触发 外设触发一次dma请求包括什么 源地址 目标地址 数据项的长度(1-65535)// dma完成后会减到0源和目的的传输宽度不同(8bit,16bit,32bit),怎么处理 dma的FIFO模式自动封装、解封必要的传输数据来优化带宽增量运算dma 事件 dma半传输 dma传输完成 dma传输错误 dma fifo 错误 直接模式错误数据流配置 单缓冲类型事务 双缓冲类型事务发送模式 递增模式 循环模式
1. 关闭数据流 清0 DMA_SxCR 的 EN 位 .读若为0,则第二步2. 设置源地址,目标地址(DMA_SxPAR DMA_SxM0AR)3. 设置存储方向4. 配置一次传输数据数目.5. 将通道挂载到数据流 DMA_SxCR[2:0]6. 配置数据流的优先级 PL[1:0]7. 配置fifo使用情况(禁止 或 使能和接收阈值)8. 配置 外设和存储器增量/固定模式 单独或突发事务 外设和存储器数据宽度 循环模式 双缓冲区模式 和 中断标志位的使能9. 激活数据流 置位 DMA_SxCR[1] 9步之后,外设发出了dma请求,即可响应(数据搬运)。如果使能了标志位,还会来中断
源 目的外设->存储器 DMA_SxPAR DMA_SxM0AR存储器->外设 DMA_SxM0AR DMA_SxPAR存储器->存储器 DMA_SxPAR DMA_SxM0AR
转载地址:http://eengi.baihongyu.com/