OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3030|回复: 2

关于F4的DMA的FIFO应用心得

[复制链接]

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2019-4-22 07:53:53 | 显示全部楼层 |阅读模式
关于F4的DMA的FIFO应用
1、为什么需要FIFO,在F103中,如果DMA的P端和M端数字宽度不一样,那么,虽然可以传输,但会丢掉很多数据,有了FIFO以后,就算P端和M端的位宽不一致,也可以实现不丢包传输。这里注意一点:在不开启FIFO的情况下,传输的位宽,P端和M端是一样的,由PSIZE决定,与MSIZE无关。
2、FIFO传输原理是什么?
        FIFO有16个字节,也就是4个字,当P端有数据过来的时候,并不是马上写到M端,而是先写到FIFO,当FIFO的容量达到FIFO的阈值时,FIFO才会把数据写到M端。这里有一个特性,就是当DMA传输完成,如果FIFO中还含有数据,它会最后再写一次。有了这个特性,我们完全不用管FIFO阈值级别,就可以实现DMA的单次传输。但需要注意一点:DMA的传输数量,应为MSIZE/PSIZE的整数倍,如MSIZE为32位,而PSIZE为8位,那传输数量应该为4的整数倍。
3、什么是突发传输
        简单理解,突发传输就是一次触发,DMA响应N次,有4次、8次、16次,这个应用场景很少,笔者只在JPEG硬件解码中遇到这个情况。比如一个硬件每次产生16字节的数据,才产生一次硬件触发。而咱们一次只能读4字节的数据,这时如果用4节拍的突发传输,就刚好解决这个问题。但使用中需要注意FIFO阈值级别的问题,FIFO的阈值应该等于每次M端产生的数据量,不然会产生FIFO错误。



本人承接项目合作,如有需要,请联系:kmmyk@qq.com


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2011-5-27
在线时间
11 小时
发表于 2019-5-27 15:01:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

23

主题

151

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1463
金钱
1463
注册时间
2015-8-11
在线时间
205 小时
发表于 2019-5-27 19:55:25 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 22:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表