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