Freescale同步串行傳輸SPI優(yōu)化設(shè)計
Freescale系列的MCU大部分都存在一個SPI模塊,它是一個同步串行外圍接口,允許MCU與各種外周設(shè)備以串行方式進行通信。
目前,Freescale系列的大多數(shù)單片機總線不能外部加以擴展,當(dāng)片內(nèi)I/O或者存儲器不能滿足需求時,可以使用SPI來擴展各種接口芯片。這是一種最方便的Free-scale系列單片機系統(tǒng)擴展方法。
SPI系統(tǒng)主機最高頻率=主機總線頻率/2,從機最高頻率=從機總線頻率,即硬件體系決定了SPI的最高工作頻率。如何在硬件體系結(jié)構(gòu)已定的情況下,使I/O或存儲器數(shù)據(jù)傳輸效率最高,成為SPI使用的一個關(guān)鍵問題。
1 同步串行傳輸SPI結(jié)構(gòu)及常規(guī)操作
圖1為Freescale同步串行傳輸SPI的體系結(jié)構(gòu)圖。
對Freescale同步串行傳輸體系來說,一般有兩種操作模式:
?、倮弥袛嗤ㄖ呀?jīng)傳輸結(jié)束,或者接收完成;
②采用輪詢方式,讀取相應(yīng)寄存器位置,判斷傳輸是否完成。
無論是哪種模式,其常規(guī)操作流程(無配置過程)均如圖2所示。
2 常規(guī)操作中的時間浪費
從圖2中可以看出,當(dāng)CPU向SPI數(shù)據(jù)寄存器中寫入1字節(jié)數(shù)據(jù)后,必須等待,直至SPI模塊通知傳輸結(jié)束,才能寫入下一個字節(jié)。這是由于SPI數(shù)據(jù)模塊由兩部分構(gòu)成:一部分是數(shù)據(jù)寄存器;另一部分是移位寄存器。當(dāng)CPU向SPI數(shù)據(jù)寄存器寫入1字節(jié)后,SPI模塊需要將8位數(shù)據(jù)傳入移位寄存器,在每個SPI時鐘周期內(nèi)傳出1位數(shù)據(jù)。由于采樣的原因,SPI的最大速率=BUS_CLK/2,所以當(dāng)CPU向SPI寫入一個8位數(shù)據(jù)后,必須等待8
評論