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