資源描述:
《第19章 串行外圍設(shè)備接口(spi)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第19章串行外圍設(shè)備接口(SPI)19.1概述串行外圍設(shè)備接口(SPIserialperipheralinterface)允許MPC8349E與其他PowerQUICC系列芯片、MC68360、M68HC11和M68HC05微控制器系列以及其他系列設(shè)備交換數(shù)據(jù)??梢詫PI用于與外圍設(shè)備的通信,例如EEPROM、實時時鐘、A/D轉(zhuǎn)換器和ISDN設(shè)備等。SPI是一個全雙工、同步、面向字符的通道,支持四線接口(接收、發(fā)送、時鐘和從選擇)。SPI部件由發(fā)送器和接收器單元、一個獨(dú)立的波特率發(fā)生器和一個控制單元組成。發(fā)送器和接收器單元使用相同的時鐘。這個時鐘在主模式下源自SPI波特率發(fā)生器,在從模式下由
2、外部提供。在SPI傳輸過程中,同時發(fā)送和接收數(shù)據(jù)。SPI接收器和發(fā)送器都是雙緩沖的,如圖19-1所示,有效FIFO尺寸(等待時間)為兩字符。首先移出SPI的MSB/LSB。當(dāng)SPI模式寄存器禁止SPI時(SPMODE[EN]=0),它的功耗非常小。19.2緒論SPI的結(jié)構(gòu)圖如圖19-1所示。19-1SPI結(jié)構(gòu)圖19.2.1特征SPI的主要特征如下所示:l四信號接口(SPIMOSI,SPIMISO,SPICLK和/SPISEL)l全雙工操作l使用32位的數(shù)據(jù)字符或4位到16位的數(shù)據(jù)字符l支持連續(xù)字符發(fā)送和接收l支持8/16/32字符長度的反向數(shù)據(jù)模式l支持主SPI模式l支持多主環(huán)境l最大時鐘頻率
3、在主模式下為(系統(tǒng)時鐘頻率/4),在從模式下為(系統(tǒng)時鐘頻率/2)l獨(dú)立的可編程波特率發(fā)生器l用于測試的本地回送能力l漏極開路輸出支持多主配置19.2.2SPI發(fā)送和接收過程由于SPI是面向字符通信單元,因此由核負(fù)責(zé)是打包和解包接收和發(fā)送的幀。一幀包含一個完整的SPI傳輸會話中發(fā)送或接收的所有字符,從寫入SPITD寄存器的第一個字符開始到設(shè)置SPCOM[LST]之后發(fā)送的最后一個字符為止。更多的信息參看19.4.1.4節(jié)“SPI命令寄存器(SPCOM)”。核通過讀SPI接收數(shù)據(jù)保持寄存器(SPIRD)接收數(shù)據(jù),然后SPI清除非空的SPIE[NE]以釋放SPIRD寄存器,為下一次接收操作做準(zhǔn)備。
4、核通過將數(shù)據(jù)寫入SPI發(fā)送數(shù)據(jù)保持寄存器(SPITD)以發(fā)送數(shù)據(jù),然后SPI清除SPI事件寄存器(SPIE)的非滿位(NF),指示SPITD寄存器包含待發(fā)送的字符。當(dāng)待發(fā)送的下一個字符為當(dāng)前幀中最后一個字符時,核置位SPCOM[LST],然后將最后一個字符寫入SPITD。SPI核握手協(xié)議可以通過輪詢或中斷來實現(xiàn)。當(dāng)采用輪詢方式時,核按照預(yù)定義的頻率讀SPIE,并且根據(jù)SPIE位的值進(jìn)行操作。輪詢頻率取決于SPI串行信道的頻率。當(dāng)采用中斷機(jī)制時,置位SPIE的非滿(NF)或非空(NE)位引起到e300核的中斷。然后核讀SPIE,并根據(jù)SPIE位的值進(jìn)行操作。三個基本的發(fā)送和接收模式為主、從和多主
5、模式。注意當(dāng)非滿(NF)和非空(NE)位均被置位時,e300核應(yīng)在發(fā)送新數(shù)據(jù)前讀取接收的數(shù)據(jù)。SPMODE[LEN]確定硬件發(fā)送的字符的長度。核負(fù)責(zé)位處理,將數(shù)據(jù)打包或者解包成合適的字符長度。更多信息參看表19-4中SPMODE[LEN]的說明。19.2.3操作模式可以把SPI設(shè)定在在單主設(shè)備或多主設(shè)備環(huán)境下工作。本節(jié)介紹單主設(shè)備配置時的SPI主和從操作。同時也討論了多主設(shè)備環(huán)境下SPI的操作。下面幾節(jié)總結(jié)了SPI支持的主要操作模式。19.2.3.1作為主設(shè)備的SPI在主設(shè)備模式下,SPI發(fā)送消息到從外設(shè),從外設(shè)同時發(fā)回應(yīng)答。帶有多個從設(shè)備的單主設(shè)備可以使用通用并行I/O信號有選擇地啟用從設(shè)備
6、,如圖19-2所示。為了消除單主設(shè)備環(huán)境下的多主設(shè)備的錯誤,應(yīng)通過外部上拉強(qiáng)制主設(shè)備的輸入無效。圖19-2單主設(shè)備/多從設(shè)備的配置為了開始交換數(shù)據(jù)。e300將待發(fā)送數(shù)據(jù)寫入SPITD寄存器。然后SPI為每一個字符在SPICLK產(chǎn)生可編程時鐘脈沖。將Tx數(shù)據(jù)在SPI主出從入(SPIMOSI)移出,同時將Rx數(shù)據(jù)在SPI主入從出(SPIMISO)移入。在發(fā)送過程中,無論何時SPI發(fā)出請求,核都負(fù)責(zé)提供數(shù)據(jù),從而保證操作的順暢。在最后一個數(shù)據(jù)(LST命令和緊接其后的數(shù)據(jù))發(fā)送完畢后,寫入SPITD的第一個字符作為SPI的開始命令。SPI連續(xù)地發(fā)送和接收字符,直到SPCOM[LST]被置位或者有錯誤發(fā)
7、生。只要發(fā)送緩沖區(qū)不滿,SPI就置位SPIE[NF]向中斷控制器發(fā)送可屏蔽中斷。在發(fā)送完最后一個字之后,SPI也置位NF。作為回應(yīng),核應(yīng)讀取與最后一個字相關(guān)的異常標(biāo)志。只要接收緩沖區(qū)填充了數(shù)據(jù),SPI就置位SPIE[NE],向中斷控制器發(fā)送可屏蔽中斷。19.2.3.2作為從設(shè)備的SPI在從模式下,SPI設(shè)備接收來自SPI主設(shè)備的信息并且同時發(fā)送回答。從設(shè)備的必須在識別出Rx時鐘之前有效。一旦信號有