博客
关于我
《STM32从零开始学习历程》——DMA直接存储区访问理论知识
阅读量:485 次
发布时间:2019-03-07

本文共 1452 字,大约阅读时间需要 4 分钟。

STM32DMA—从零开始学习历程

DMA简介

DMA(Direct Memory Access, 直接存储区访问)是一种独立于CPU的控制器。它的主要功能是实现数据在外设寄存器与存储器之间、存储器与存储器之间的独立于CPU的高速传输。

外设寄存器与存储器的数据传输

  • 外设寄存器到存储器传输:将外设数据寄存器内容转移到指定的内存空间中
  • 存储器到外设寄存器传输:将特定存储区域的内容转移到外设寄存器中
  • 存储器到存储器传输:将一个指定存储区内容拷贝到另一个指定的存储区中
  • 技术特点(针对STM32F4)

  • 高效传输速度
  • 数据传输无需CPU参与
  • 独立于CPU运行
  • FPGA DMA控制器框图分析

    核心功能模块

    • 通道:8路数据流
    • :64个通道
    • 数据传输流程:外设数据 → FIFO → 存储器

    FIFO模式与直接模式

    FIFO(First In First Out)模式下,数据会在FIFO缓冲区中存留,直到达到设定的阈值后才批量发送。直接模式下,数据直接传送到目标地址。

    突发模式配置

    • 突发数据传输的速度与节拍(4字节/8字节/16字节)相关
    • 节拍模式可以选择单次、增量4节拍、8节拍和16节拍

    FIFO阈值与数据传输模式

  • FIFO阈值配置:1/4、1/2、3/4 和1
  • 阈值对应的数据量:
    • 1/4:1字(4字节)
    • 1/2:2字(8字节)
    • 3/4:3字(12字节)
    • 1:4字(16字节)
  • 数据传输模式

  • 直接模式:FIFO缓冲区不存数据
  • FIFO模式:数据在FIFO中存留,直到达到阈值后批量传输
  • DMA初始化结构体

    typedef struct {(uint32_t DMA_Channel); // 通道选择(uint32_t DMA_PeripheralBaseAddr); // 外设地址(uint32_t DMA_Memory0BaseAddr); // 存储器0地址(uint32_t DMA_DIR); // 传输方向(uint32_t DMA_BufferSize); // 数据数目(uint32_t DMA_PeripheralInc); // 外设递增配置(uint32_t DMA_MemoryInc); // 存储器递增配置(uint32_t DMA_PeripheralDataSize); // 外设数据宽度(uint32_t DMA_MemoryDataSize); // 存储器数据宽度(uint32_t DMA_Mode); // 传输模式(uint32_t DMA_Priority); // 优先级(uint32_t DMA_FIFOMode); // FIFO模式(uint32_t DMA_FIFOThreshold); // FIFO阈值(uint32_t DMA_MemoryBurst); // 存储器突发传输配置(uint32_t DMA_PeripheralBurst); // 外设突发传输配置} DMA_InitTypeDef;

    中断事件处理

    • HTIF(半传输中断):传输量达一半时触发中断
    • TCIF(传输完成中断):完成一次数据传输触发中断
    • TEIF(传输错误中断):总线错误或存储器地址受限触发中断
    • FEIF(FIFO错误中断):FIFO下溢或上溢触发中断
    • DMEIF(直接模式中断):外设到存储器的直接模式错误触发中断

    总结

    DMA是STM32F4高效数据传输的核心技术。通过合理配置DMA控制器和FIFO机制,开发者可以实现高效率的数据处理任务。

    转载地址:http://smwcz.baihongyu.com/

    你可能感兴趣的文章
    oracle 学习
    查看>>
    oracle 定义双重循环例子
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 常用命令
    查看>>
    Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
    查看>>
    Oracle 权限(grant、revoke)
    查看>>
    oracle 查询clob
    查看>>
    Oracle 比较 B-tree 和 Bitmap 索引
    查看>>
    UML- 组件图(构件图)
    查看>>
    oracle 监听器的工作原理
    查看>>
    oracle 行转列
    查看>>
    Oracle 表
    查看>>
    oracle 课堂笔记
    查看>>
    Oracle 返回结果集的 存储过程
    查看>>
    Oracle 递归
    查看>>
    Oracle 递归函数与拼接
    查看>>
    oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
    查看>>
    oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
    查看>>
    oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
    查看>>
    oracle--用户,权限,角色的管理
    查看>>