Freescale同步串行傳輸SPI優化設計
——
Freescale系列的MCU大部分都存在一個SPI模塊,它是一個同步串行外圍接口,允許MCU與各種外周設備以串行方式進行通信。
目前,Freescale系列的大多數單片機總線不能外部加以擴展,當片內I/O或者存儲器不能滿足需求時,可以使用SPI來擴展各種接口芯片。這是一種最方便的Free-scale系列單片機系統擴展方法。
SPI系統主機最高頻率=主機總線頻率/2,從機最高頻率=從機總線頻率,即硬件體系決定了SPI的最高工作頻率。如何在硬件體系結構已定的情況下,使I/O或存儲器數據傳輸效率最高,成為SPI使用的一個關鍵問題。
1 同步串行傳輸SPI結構及常規操作
圖1為Freescale同步串行傳輸SPI的體系結構圖。
對Freescale同步串行傳輸體系來說,一般有兩種操作模式:
①利用中斷通知已經傳輸結束,或者接收完成;
②采用輪詢方式,讀取相應寄存器位置,判斷傳輸是否完成。
無論是哪種模式,其常規操作流程(無配置過程)均如圖2所示。

2 常規操作中的時間浪費
從圖2中可以看出,當CPU向SPI數據寄存器中寫入1字節數據后,必須等待,直至SPI模塊通知傳輸結束,才能寫入下一個字節。這是由于SPI數據模塊由兩部分構成:一部分是數據寄存器;另一部分是移位寄存器。當CPU向SPI數據寄存器寫入1字節后,SPI模塊需要將8位數據傳入移位寄存器,在每個SPI時鐘周期內傳出1位數據。由于采樣的原因,SPI的最大速率=BUS_CLK/2,所以當CPU向SPI寫入一個8位數據后,必須等待8
評論