STM32自学笔记:DMA与FIFO的完美结合

一,单位

       由8个位bit组成1个字节Byte;在一台8位机中,它的一个字就是一字节,一台16位机,它的一个字就是两字节,同理32位机一个字是4个字节;半字就是字的一半。

二,FIFO

      每个数据流都独立拥有四级32位FIFO(先进先出存储器缓冲区)。FIFO的阈值, 分别为1/4、1/2、3/4和满,即分别为32位,64位,96位和128位。如果数据存储量达到阈值级别时,FIFO内容将传输到目标中。

      PBURST[1:0]和MBURST[1:0]位是位于DMA_SxCR寄存器中的,用于分别设置外设和存储器不同节拍数的突发传输, 对应为单次传输、4个节拍增量传输、8个节拍增量传输和16个节拍增量传输。节拍取决于MSIZE或PSIZE。

      突发传输需要结合FIFO使用,具体要求FIFO阈值一定要是内存突发传输数据量的整数倍。 FIFO阈值选择和存储器突发大小必须配合使用。

        举例:当MSIZE为字节:

        1.FIFO级别为1/4时,FIFO接受32位(共4个字节)满后发出,即刚好满足4个字节的一次突发;

        2.FIFO级别为1/2时,FIFO接受64位(共8个字节)满后发出,即当FIFO满时需要两次4个字节的突发,或一次8个字节突发才清空;

3/4与满同理。

        当MSIZE为半字:

        1.FIFO级别为1/4时,FIFO接受32位(共2个半字)满后发出,无法满足最低的4个半字要求,故禁止;

        2.FIFO级别为1/2时,FIFO接受64位(共4个半字)满后发出,即刚好满足4个半字的一次突发;

其他情况同理可得

作者:剃须刀0201

物联沃分享整理
物联沃-IOTWORD物联网 » STM32自学笔记:DMA与FIFO的完美结合

发表回复