引言
串行護(hù)展總線技術(shù)是新一代單片機(jī)技術(shù)發(fā)展的一個(gè)顯著特點(diǎn)。其中PHILIPS公司推出的I2C總線最為著名,它包括一個(gè)兩端接口,通過一個(gè)帶有緩沖區(qū)的接口,數(shù)據(jù)可以被I2C發(fā)送或接收,控制和狀態(tài)信息則通過一套內(nèi)存映射寄存器來傳送。與并行擴(kuò)展總線相比,串行擴(kuò)展總線有突出的優(yōu)點(diǎn):電路結(jié)構(gòu)簡(jiǎn)單,程序編寫方便,易于實(shí)現(xiàn)用戶系統(tǒng)軟硬件的模塊化、標(biāo)準(zhǔn)化等。本文是把I2C總線應(yīng)用到MSP430單片機(jī)溫度控制系統(tǒng)中的一個(gè)典型實(shí)例。
I2C總線是用2根雙向I/O信號(hào)線(串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA)把多種器件連接起來,并實(shí)現(xiàn)器件之間的串行通訊。
; MSP430是TI公司一種具有超低功耗的功能強(qiáng)大的16位單片機(jī),MSP430F169是該系列中的一種型號(hào)。它內(nèi)部集成2個(gè)16位定時(shí)器,1個(gè)高速12位A/D轉(zhuǎn)換器,12位或8位的雙重D/A轉(zhuǎn)換器,2個(gè)通用同步/異步通訊接口和1個(gè)I2C模塊。我們就是利用其I2C模塊來對(duì)MSP430F169單片機(jī)進(jìn)行擴(kuò)展。
系統(tǒng)硬件設(shè)計(jì)
該系統(tǒng)實(shí)現(xiàn)對(duì)曲軸的熱處理進(jìn)行溫度控制。曲軸的熱處理工藝為:曲軸放入淬火加熱爐以350℃~400℃/h加熱,到910℃~930℃保溫1.5h,淬火冷卻至室溫,進(jìn)爐550℃?600℃回火2.5h。因此,系統(tǒng)需要同時(shí)對(duì)淬火爐和回火爐進(jìn)行溫度控制。在此系統(tǒng)中,我們需要分別設(shè)計(jì)鍵盤模塊和LED顯示模塊,通過鍵盤實(shí)現(xiàn)溫度、PID參數(shù)、時(shí)間周期等參數(shù)的人工輸入設(shè)定,通過LED分別實(shí)時(shí)顯示淬火爐和回火爐的溫度。在以往的單片機(jī)應(yīng)用系統(tǒng)中,鍵盤接口和LED顯示接口一般是通過并行總線擴(kuò)展的,其特點(diǎn)是信息傳送速度快,但占用的口線多,電路復(fù)雜。有了I2C BUS后,可通過I2C BUS進(jìn)行系統(tǒng)擴(kuò)展,這時(shí)只要用SCL和SDA兩根信號(hào)線就可將單片機(jī)與外圍器件連接起來,使占用的信號(hào)線少,電路大大簡(jiǎn)化,系統(tǒng)電路結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件電路圖
圖中鍵盤接口是通過PCF8574擴(kuò)展的,PCF8574是8位I/O擴(kuò)展器,具有8位準(zhǔn)雙向口和I2C總線接口,每位都可單獨(dú)設(shè)為輸入或輸出,功耗低,輸出有鎖存,驅(qū)動(dòng)能力強(qiáng),還具有中斷請(qǐng)求功能。本方案中,該芯片作為4×4矩陣式鍵盤與單片機(jī)接口,初始化后,P0-P3為輸出低電平,P4-P7為輸入,平時(shí)單片機(jī)執(zhí)行其它程序,當(dāng)有任一鍵按下時(shí),該芯片在INT端產(chǎn)生中斷請(qǐng)求信號(hào),CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序。
在該芯片中,A2-A0為地址引腳,由引腳電平確定,在該系統(tǒng)中A0接高電平,A1、A2接地;P0-P7為準(zhǔn)雙向口;INT為中斷請(qǐng)求輸出,低電平有效,需要注意的是該端應(yīng)通過上拉電阻上拉。當(dāng)單片機(jī)主節(jié)點(diǎn)對(duì)PCF8574進(jìn)行一個(gè)字節(jié)的寫操作時(shí),即實(shí)現(xiàn)了I/O口的數(shù)據(jù)輸出。I2C總線發(fā)送到PCF8574中的串行數(shù)據(jù),在應(yīng)答位后出現(xiàn)在I/O端口上,I2C總線不斷送數(shù),I/O上的數(shù)據(jù)不斷更迭。當(dāng)單片機(jī)主節(jié)點(diǎn)對(duì)PCF8574讀操作時(shí),即可實(shí)現(xiàn)I/O端口數(shù)據(jù)的輸入,讀入的數(shù)據(jù)存放在接收緩沖區(qū)MRD中。當(dāng)PCF8574輸入端電平狀態(tài)改變時(shí),中斷請(qǐng)求輸出端INT出現(xiàn)低電平,中斷輸出有效,在對(duì)其讀寫操作后,中斷請(qǐng)求復(fù)位。I2C總線對(duì)PCF8574 I/O口的輸入操作是一個(gè)字節(jié)的讀出操作,該系統(tǒng)中PCF8574的SLAW/SLAR為42H/43H。
圖中SAA1064為4位帶小數(shù)點(diǎn)的七段LED顯示器驅(qū)動(dòng)電路,該器件可靜態(tài)驅(qū)動(dòng)2位LED、動(dòng)態(tài)驅(qū)動(dòng)4位LED,只有一個(gè)地址引腳ADR,但可選擇4種電平狀態(tài)。SAA1064中有動(dòng)態(tài)驅(qū)動(dòng)控制電路,不須外部動(dòng)態(tài)驅(qū)動(dòng)管理。在該芯片中,ADR為地址引腳端,4個(gè)模擬電平狀態(tài)對(duì)應(yīng)4個(gè)引腳地址;CEXT為時(shí)鐘振蕩器外接電容,典型值為2.7nF;P1-P16為段驅(qū)動(dòng)輸出端口,口鎖存器置1時(shí),端口狀態(tài)為低電平;MX1、MX2為動(dòng)態(tài)顯示方式下,公共段驅(qū)動(dòng)輸出端,外部應(yīng)用驅(qū)動(dòng)晶體
管。SAA1064的器件地址是0111,地址引腳只有一個(gè),即ADR,引腳地址A2、A1、A0采取ADR模擬電平的比較編址,ADR引腳電平為0、3/8VDD、5/8VDD 、VDD時(shí),相應(yīng)引腳地址A2、A1、A0為000、001、010、011。
在該系統(tǒng)中,兩片SAA1064的ADR一個(gè)接地,一個(gè)接VDD,按圖中接法,左邊SAA1064的SLAW/SLAR為70H / 71H,右邊SAA1064的SLAW/SLAR為76H/77H。應(yīng)用動(dòng)態(tài)驅(qū)動(dòng)方式在兩片SAA1064上分別接3個(gè)LED,都采用P1-P8口動(dòng)態(tài)驅(qū)動(dòng)兩位LED顯示,P9-P16口單獨(dú)驅(qū)動(dòng)一位LED顯示。SAA1064中有5個(gè)寄存器單元,分別為1個(gè)控制寄存器和4個(gè)顯示寄存器,地址單元00H的裝載內(nèi)容為控制命令COM,地址單元01H、02H、03H、04H的裝載內(nèi)容分別為顯示段碼1、顯示段碼2、顯示段碼3、顯示段碼4,在本系統(tǒng)中,只用到前3個(gè)顯示段碼。單片機(jī)可從芯片中讀出狀態(tài)字節(jié),該狀態(tài)字節(jié)只用到最高位PR。PR=1表示從上次讀狀態(tài)后出現(xiàn)過掉電和加電,讀狀態(tài)字節(jié)后,PR清“0”。單片機(jī)也可向芯片寫入地址字節(jié)、指令字節(jié)、控制字節(jié)和數(shù)據(jù)字節(jié),指令字節(jié)(00000SC SB SA)中的SC、SB、SA規(guī)定指令字節(jié)后的數(shù)據(jù)字節(jié)從哪個(gè)單元開始寫入,以后地址自動(dòng)增量。
系統(tǒng)軟件設(shè)計(jì)
MSP430F169中的I2C控制器是通用串行同步/異步USART外圍模塊中的一部分,且只在USART0中具有I2C模式,其個(gè)別位的定義與SPI或UART模式不同。U0CTL寄存器的默認(rèn)值是UART模式,寄存器包含下面這些位:必須設(shè)置SYNC位才能選擇SPI或I2C模式,當(dāng)SWRST=1時(shí),設(shè)置SYNC位選擇SPI模式,當(dāng)SYNC=1設(shè)置I2C位選擇I2C模式,對(duì)USART0來說,SYNC位和I2C位可以在一條指令中同時(shí)設(shè)置使其運(yùn)行在I2C模式。
圖2 主發(fā)送程序流程圖圖
圖3 主接收程序流程圖
MSP430F169內(nèi)部的I2C模塊可以運(yùn)行在主發(fā)送、主接收、從發(fā)送或從接收方式,本應(yīng)用系統(tǒng)為單主系統(tǒng),所以單片機(jī)只運(yùn)行在主發(fā)送和主接收方式。MSP430F169單片機(jī)中用于管理I2C總線的寄存器有:中斷使能寄存器I2CIE,中斷標(biāo)志寄存器I2CIFG,數(shù)據(jù)量寄存器I2CNDAT,通用串行同步/異步模塊寄存器U0CTL,發(fā)送控制寄存器I2CTCTL,數(shù)據(jù)控制寄存器I2CDCTL,分頻計(jì)數(shù)寄存器I2CPSC,時(shí)鐘高電平寄存器I2CSCL
H,時(shí)鐘低電平寄存器I2CSCLL,數(shù)據(jù)寄存器I2CDR,主地址寄存器I2COA,從地址寄存器I2CSA,中斷向量寄存器I2CIV。在主運(yùn)行模式中,發(fā)送和接收操作主要由I2CRM、I2CSTT、I2CSTP三個(gè)位來控制,這三個(gè)位都是發(fā)送控制寄存器I2CTCTL中的位,其中I2CRM是循環(huán)重復(fù)模式控制位,其為0表示由I2CNDAT定義發(fā)送的字節(jié)數(shù),其為1表示發(fā)送的字節(jié)數(shù)由軟件控制,I2CNDAT不用。
I2CSTT是啟動(dòng)發(fā)送控制位,其設(shè)置為1用來啟動(dòng)數(shù)據(jù)發(fā)送,一旦數(shù)據(jù)傳送開始,這個(gè)位自動(dòng)清零。I2CSTP是停止發(fā)送控制位,這個(gè)位置1表示停止數(shù)據(jù)發(fā)送,一旦數(shù)據(jù)發(fā)送停止,該位自動(dòng)清零。在主發(fā)送模式中,一旦從地址字節(jié)和讀寫方向位發(fā)送之后,通過設(shè)置I2CTRX=0即可進(jìn)入主接收模式。主發(fā)送程序流程圖如圖2所示,主接收程序流程圖如圖3所示。
結(jié)語
由于把I2C總線技術(shù)引入到系統(tǒng)設(shè)計(jì)中,使該系統(tǒng)硬件電路變得非常簡(jiǎn)單,同時(shí)利用新型16位微處理器MSP430F169構(gòu)成整個(gè)控制系統(tǒng)的核心,因其自帶I2C接口,使系統(tǒng)的軟件編程也比較簡(jiǎn)單,因此不失為一種良好的系統(tǒng)設(shè)計(jì)方案。
參考文獻(xiàn):
1. MSP430X1XX Family user,s Guide.Texas Instruments Incorporation, 2003