基于LPC2103的SPI總線(xiàn)技術(shù)的應用
關(guān)鍵詞: SPI總線(xiàn);主模式;LPC2103;74HC595本文引用地址:http://dyxdggzs.com/article/163070.htm
SPI( Serial Peripheral Interface) 總線(xiàn)是Motorola公司提出的一個(gè)同步串行外設接口, 允許MCU與各種外圍器件以串行方式進(jìn)行通信、數據交換。SPI可以同時(shí)發(fā)出和接收串行數據, 它只需4條線(xiàn)就可以完成MCU與各種外圍器件的通信。一般使用的4條線(xiàn)為:串行時(shí)鐘線(xiàn)SCK、主機輸入/從機輸出數據線(xiàn)MISO、主機輸出/從機輸入數據線(xiàn)MOSI和低電平有效的從機選擇線(xiàn)SSEL。這些外圍器件可以是簡(jiǎn)單的TTL移位寄存器、復雜的LCD顯示驅動(dòng)器、Flash、RAM、A/D轉換器、網(wǎng)絡(luò )控制器及其他MCU等[1]。
本文給出了一種基于SPI總線(xiàn)的LPC2103控制外圍LED顯示的設計方法。利用74HC595驅動(dòng)靜態(tài)共陽(yáng)LED數碼管,使用串轉并的方式實(shí)現I/O口的擴展。
1 LPC2103中的SPI功能特性
LPC2103是一個(gè)基于支持實(shí)時(shí)仿真的16/32位ARM7 TDMI-S CPU的微控制器,內部具有2個(gè)完全獨立的SPI控制器,采用全雙工的數據通信方式,最大數據位速率為外設時(shí)鐘Fpclk的1/8。與SPI總線(xiàn)接口有關(guān)的專(zhuān)用寄存器有:(1)SPCR控制寄存器。該寄存器包含一些可編程位來(lái)控制SPI總線(xiàn)的功能,而且在數據傳輸之前進(jìn)行設定,主要有時(shí)鐘相位控制、時(shí)鐘極性控制、主從模式選擇、字節傳輸移動(dòng)方向及SPI中斷使能;(2)SPSR狀態(tài)寄存器(為只讀寄存器)。用于監視SPI功能模塊的狀態(tài),包括一般性功能和異常情況。主要用途是檢測數據傳輸是否完成,通過(guò)判斷SPIF位來(lái)實(shí)現,其他位用于指示異常情況;(3)SPDR數據寄存器。為SPI提供數據的發(fā)送和接收,處于主模式時(shí),向該寄存器寫(xiě)入數據,將啟動(dòng)SPI數據傳輸。串行數據的發(fā)送和接收通過(guò)內部移位寄存器來(lái)實(shí)現;(4)SPCCR時(shí)鐘計數器寄存器。用于設置SPI時(shí)鐘分頻值,SPI處于主模式時(shí),該寄存器用于控制時(shí)鐘速率,即SPI總線(xiàn)速率,寄存器值為1位SCK時(shí)鐘所占用的PCLK周期數,并且值為偶數,必須不小于8;(5)SPINT中斷標志寄存器。包含了SPI的中斷標志位,由數據傳輸完成及發(fā)生模式錯誤來(lái)引發(fā)[2]。
1.1 SPI電氣連接
利用SPI總線(xiàn)可在軟件的控制下構成各種系統,如1個(gè)主MCU和幾個(gè)從MCU、幾個(gè)從MCU相互連接構成多主機系統(分布式系統)、1個(gè)主MCU和1個(gè)或幾個(gè)從I/O設備所構成的各種系統等。在大多數應用場(chǎng)合, 可使用1個(gè)MCU 作為主機來(lái)控制數據,并向1個(gè)或幾個(gè)從外圍器件傳送該數據。從器件只有在主機發(fā)命令時(shí)才能接收或發(fā)送數據。同一時(shí)刻只允許有1個(gè)主機操作總線(xiàn)。在數據傳輸過(guò)程中,總線(xiàn)上只能有1個(gè)主機和1個(gè)從機通信。在一次數據傳輸中,主機總是向從機發(fā)送1個(gè)字節數據,而從機也總是向主機發(fā)送1個(gè)字節數據[3]。圖1為SPI在主模式下控制2個(gè)SPI從機的硬件連接圖。
1.2 SPI數據傳輸
在SPI數據傳輸中,SPCR控制寄存器的CPHA和CPOL位作用非常關(guān)鍵。CPHA為時(shí)鐘相位控制,該位決定SPI傳輸時(shí)數據和時(shí)鐘的關(guān)系,并控制從機傳輸的起始和結束,該位為1,時(shí)鐘前沿數據輸出,后沿數據采樣;為0,時(shí)鐘前沿數據采樣,后沿數據輸出。CPOL為時(shí)鐘極性控制,為1時(shí),SCK為低電平有效;為0時(shí),SCK為高電平有效[4]。
評論