一个SPI模块包含两个FIFO,发送FIFO和接收FIFO,每个FIFO都有4个32位的word大小,我们可以通过PUSHR将数据写入TX_FIFO,通过访问POPR读出RX_FIFO中的数据。TX_FIFO和RX_FIFO也可以通过设置MCR寄存器将FIFO禁用。 主机模式下,TX_FIFO中的每个word都包括各16个bit的两部分,命令域和数据域,命令域包含了对传输属性的选择以及片选信号的选择等设置,数据域中存放要发送的数据。在发送之前,我们需要提前将和发送有关的命令以及数据组合成32bit的word,写入PUSHR。只要TX_FIFO不满,我们就可以持续的通过PUSHR寄存器向TX_FIFO中写入数据。可以通过轮询状态寄存器中的TFFF标志位获知。如果不使用轮询方式,也可以通过设置,在TFFF置1,即TX_FIFO未满的情况下,触发中断或DMA请求,以中断的方式或DMA方式向FIFO中送入数据。一旦FIFO已满,则TFFF将变为0。此时,DSPI模块会忽略向已满的FIFO中写入数据的操作。
详细内容见附件
,或单击以下链接
http://www.freescaleic.org/panpan_0315/blog/12-05/279218_c1e45.html
个人翻译整理的DSPI详解,仅供个人学习之用,如有笔误,欢迎指正
|