打印

关于F4的DMA的FIFO应用心得

[复制链接]
573|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
roucun|  楼主 | 2018-7-10 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于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错误。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

421

主题

446

帖子

0

粉丝