当前位置: 首页 > news >正文

DMA 之FIFO的作用

目录

1.FIFO( 进先出存储器缓冲区)

2.FIFO的作用:


1.FIFO( 进先出存储器缓冲区)

当两个DMA都调用总线时,总线仲裁会根据优先级分配总线资源。即分配给其中优先级最高的DMA,另一个DMA的数据会暂时存储在FIFO中。

  1. DMA控制器和AHB有三个接口:

    1. 一个Slave接口(用于CPU对它进行编程)

    2. 两个Master接口,允许将DMA去开启两个AHB总线上两个从设备之间的信号通信。

    3. 每个DMA都具有8个Streams

          注意:不是在从外设到内存模式时双向传输,即同一模式下只能从单一方向传输

      1. 每个Stream都只能单向传输(图中双向箭头的意思是stream可以从外设到内存,内存到外设,内存到内存)

      2. Steam可被配置的模式

        1. 从内存到外设

        2. 从外设到内存

        3. 从内存到内存

 

假如没有FIFO,数据进来一次就立刻通过流输出,DMA占用了总线CPU就不能占用总线了,而总线的带宽一般是32为,一个字节进来就打断一次,效率太低了。

但是有了FIFO,可以先存够相应字节再一起发出去,提高了资源的利用率;FIFO缓存的大小可以看手册,stm32F4一般为16个字节。

2.FIFO的作用:

1,减少AHB带宽的占用,减少AHB总线的仲裁,让CPU能够在AHB总线上占用更大的带宽而不需要和DMA经常竞争总线。(DMA接收数据时可以旁路AHB总线)

2,减少溢出,在需要动态扩展内存时,DMA会暂存数据进入FIFO,给CPU执行动态扩展内存争取时间,防止溢出。

3、DMA多路Stream仲裁时,FIFO可以多路Stream缓冲,极大提高并发性。(假如串口和ADC都来数据,FIFO可以避免数据发生错误)

假如没有FIFO,数据进来一次就立刻通过流输出,DMA占用了总线CPU就不能占用总线了,而总线的带宽一般是32为,一个字节进来就打断一次,效率太低了。

但是有了FIFO,可以先存够相应字节再一起发出去,提高了资源的利用率;FIFO缓存的大小可以看手册。STM32F4的FIFO大小为16字节。

下一篇

DMA Burst的妙用https://mpbeta.csdn.net/mp_blog/creation/editor/146577388

相关文章:

  • CMake入门及生成windows下的项目示例讲解
  • RGB-D综述
  • Mysql5.7的my.cnf配置文件
  • Todesk介绍
  • Java-面向对象-多态和抽象类
  • 【Lua】一文快速掌握 Lua 语言指令(Lua 备忘清单)
  • 5分钟快速了解自动化测试
  • 【AI News | 20250327】每日AI进展
  • 本地ping虚拟机win10的地址
  • 【解决】:VSCode 中识别不到电脑中的已安装的 Git
  • 多模态大模型训练范式演进与前瞻
  • 算法解题有感
  • Python 简单的用户权限判断
  • 使用QuickReporter将多张图片插入在word多行的表格中
  • R语言对偏态换数据进行转换(对数、平方根、立方根)
  • MFC添加免费版大漠3.1233
  • AI编程工具哪家强?对比Cusor、Copilot、Cline
  • 中医病因辨证
  • Unity Shader 学习18:Shader书写基本功整理
  • 一款超级好用且开源免费的数据可视化工具——Superset
  • 网站设计公司排名前十/网络推广平台有哪些渠道
  • 行业协会网站建设的方案/百度一下图片识别
  • 网站推广活动方案/网页设计案例
  • 独立站是什么意思/竞价推广托管公司价格
  • readme.md做网站/全国疫情又严重了
  • 宇说建筑网站/seo应该怎么做