引言
串行護(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)簡單,,程序編寫方便,易于實(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)線少,,電路大大簡化,,系統(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)硬件電路變得非常簡單,同時(shí)利用新型16位微處理器MSP430F169構(gòu)成整個(gè)控制系統(tǒng)的核心,因其自帶I2C接口,,使系統(tǒng)的軟件編程也比較簡單,因此不失為一種良好的系統(tǒng)設(shè)計(jì)方案,。
參考文獻(xiàn):
1. MSP430X1XX Family user,s Guide.Texas Instruments Incorporation, 2003