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