新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于I2C總線的PIC單片機端口擴展技術(shù)

基于I2C總線的PIC單片機端口擴展技術(shù)

作者: 時間:2012-01-30 來源:網(wǎng)絡(luò) 收藏

1. 概述

隨著單片機技術(shù)的發(fā)展,單片機在機電產(chǎn)品領(lǐng)域的應(yīng)用越來越廣泛。一方面,希望單片機構(gòu)成的嵌入式系統(tǒng)功能盡可能強大,處理能力強,控制對象多;另一方面,又希望整個系統(tǒng)的成本盡可能低,即性價比好。因此,實際應(yīng)用中經(jīng)常會遇到單片機I/0接口資源不夠用的情形,在一些較復(fù)雜的應(yīng)用系統(tǒng)中,由于被控對象較多,如控制多個LED數(shù)碼管的顯示、超過30路狀態(tài)的顯示等,此時,端口供需矛盾尤其突出, 通常的解決方法是采用8155 , 8255 , 8259 , 74HC164,74HC165,74LS373 及74LS245 等外擴I/0 接口, 這樣必然會使系統(tǒng)更加復(fù)雜, 成本增加, 可靠性下降。

目前,功能較強的單片機中大多采用了FLASH技術(shù),并且在傳統(tǒng)的USART串行通信功能的基礎(chǔ)上增加了諸如SPI、I2C、CAN等先進實用的功能;并且許多外圍芯片具有I2C之類的通信接口,如具有64個按鍵、8×8個LED數(shù)碼管驅(qū)動的ZLG7290芯片。因此,單片機端口擴展可選用更方便、功能更強的擴展途徑。

I2C(內(nèi)部集成電路,Inter IC,IC TO IC)總線是Philips Semiconductors在20世紀80年代中期開發(fā)的,最初用于音頻和視頻目的。將I2C擴展為系統(tǒng)管理總線SMBus后可用于電源管理及CPU與其它組件的通信。I2C支持多主控模式,2.1版規(guī)定的傳輸速率在標準模式下為最高100kbit/s,快速模式下為400kbit/s,高速模式下為 3.4Mbit/s[1]。由于只需要微控制器的兩個端口引腳就可以傳輸任意特性的數(shù)據(jù),所以協(xié)議得到了廣泛的應(yīng)用,并促進了大量的I2C外部芯片的開發(fā)。可用于控制IC卡、數(shù)據(jù)轉(zhuǎn)換[2] 、LCD控制、時鐘控制[3]、存貯器控制[4]、、多機通信[5]等。本文主要討論MICROCHIP公司的PIC18F458用于控制汽車車身狀態(tài)顯示時,基于I2C接口的ZLG7290芯片的控制問題。

2. 的工作時序

串行總線I2C由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成,掛接在I2C總線上的器件可以是主控器Master(負責產(chǎn)生時鐘SCL信號),也可以是從動器件 Slave,可作為發(fā)送器,也可作為接收器。I2C總線轉(zhuǎn)換一次為9位,前8位按自MSB至LSB的順序傳送數(shù)據(jù),第9位為應(yīng)答ACK位,SCL信號為高電平時,SDA狀態(tài)的變化用來實現(xiàn)轉(zhuǎn)換的啟動和停止。并且,每一個數(shù)據(jù)位的傳送,需要一個SCL周期的支持,數(shù)據(jù)傳送過程中,SCL為高電平時,SDA線上的數(shù)據(jù)必須保持,僅當SCL為低時,才可改變SDA線的狀態(tài)(數(shù)據(jù))。基本I2C通信的過程為:START(RESTART)à7bit外設(shè)芯片地址+R/~W控制位à8bit外設(shè)芯片內(nèi)部寄存器地址à傳送的多個數(shù)據(jù)字節(jié)àSTOP。I2C總線數(shù)據(jù)傳送時序如圖1所示。


圖1 I2C總線數(shù)據(jù)傳送時序

3. ZLG7290擴展芯片

ZLG7290是廣州周立功單片機發(fā)展有限公司開發(fā)的基于I2C接口的鍵盤及LED驅(qū)動器,可驅(qū)動8 位共陰數(shù)碼管或64 只獨立LED 和64 個按鍵。ZLG7290 提供兩種控制方式:寄存器映象控制和命令解釋控制,寄存器映象控制是指以字節(jié)操作方式直接訪問底層寄存器實現(xiàn)基本控制功能;命令解釋控制是指通過解釋命令緩沖區(qū)CmdBuf0/ CmdBuf1 中的指令間接訪問底層寄存器實現(xiàn)擴展控制功能如實現(xiàn)寄存器的位操作,對顯示緩存循環(huán)移位,對操作數(shù)譯碼等。ZLG7290 的從地址( slave address)為70H(01110000B),內(nèi)部寄存器的地址為00~17H。ZLG7290內(nèi)部功能框圖如圖2所示,本次應(yīng)用中采取寄存器映象控制方式對LED實現(xiàn)控制。

圖2 ZLG7290內(nèi)部功能框圖

4.PIC18F458基于I2C通信的實現(xiàn)

PIC18F458是MICROCHIP公司開發(fā)的集成CAN控制器的高檔8位FLASH單片機,具有32K字節(jié)FLASH程序RAM空間,數(shù)據(jù)存貯器為1536字節(jié)RAM+256字節(jié)EEPROM,共33個I/O端口[6][7]。 PIC18F458的主同步串行端口(MSSP)模塊中提供了SPI和I2C通信功能,引腳RC4和RC3分別用作I2C模式下的數(shù)據(jù)SDA線和時鐘 SCL線;內(nèi)部有6個寄存器與I2C通信控制有關(guān),它們分別是:MSSP控制寄存器1 (SSPCON1)、MSSP控制寄存器2 (SSPCON2)、MSSP狀態(tài)寄存器 (SSPSTAT)、串行收/發(fā)緩沖器 (SSPBUF)、MSSP移位寄存器 (SSPSR)和MSSP地址寄存器 (SSPADD),其中,SSPCON1/SSPCON2用來設(shè)置工作方式,SSPADD用來設(shè)置器件地址(PIC18F458用作SLAVE時)或通信波特率(PIC18F458用作MASTER時),MASTER模式下,SSPADD的值應(yīng)滿足以下公式:

(Fosc/4)/FI2C=SSPADD+1

其中:

Fosc/4:PIC18F458內(nèi)部時鐘頻率,固定為晶振頻率的1/4;

FI2C:I2C通信的最高速率,單位:kbit/s,一般用100kbit/s

SSPADD值最后需圓整為大于或等于計算值的整數(shù)中的最小整數(shù)。

圖3為PIC18F458控制ZLG7290作為車身狀態(tài)顯示驅(qū)動器時硬件接線,ZLG7290的19腳和20腳用來實現(xiàn)與PIC18F458的通信控制,顯示控制在程序上的實現(xiàn)主要是通過調(diào)用函數(shù)WriteByte(SCANNUM,0x01)和 WriteByte(DPRAMi,Dig2word)來實現(xiàn),其中,SCANNUM為掃描次數(shù),DPRAMi(i=0~7)為8個數(shù)碼管對應(yīng)的段碼顯示緩沖器,如圖3所示,如果要點亮發(fā)光二極管D1所在列的全部8個發(fā)光二極管,則對應(yīng)的顯示 緩沖器的值應(yīng)為0XFF。

圖3 PIC18F458控制ZLG7290作為車身狀態(tài)顯示驅(qū)動器時硬件接線

5. 結(jié)論

利用I2C總線接口擴展單片機的端口大大簡化了嵌入式系統(tǒng)外圍硬件電路的設(shè)計,提高了系統(tǒng)工作的可靠性;同時,也簡化了系統(tǒng)控制軟件的設(shè)計,在基于 PIC18F458的車身狀況顯示控制系統(tǒng)中取得了較好的應(yīng)用效果。按照本文介紹的方法,可以很方便地將ZLG7290或類似芯片應(yīng)用于 MICROCHIP的其它類型的MCU的應(yīng)用場合。

參 考 文 獻

1.THE I2C-BUS SPECIFICATION,VERSION 2.1,www.semiconductors.philips.com /i2c/support

2.吳強,黃石紅. I~2C總線在智能化振動測試儀中的應(yīng)用研究.微計算機信息, 2002(10)

3.李彩等. 時鐘芯片PCF8563在海洋光學(xué)浮標中的應(yīng)用. 電子產(chǎn)品世界,2003(7)

4.金明,陶維清.MSP430系列單片機與I~2C總線方式的EEPROM接口.儀器儀表用戶,2003(6)

5.李秋生,王月忠.基于VB6的PC機與多臺單片機通信在鋰電池檢測化成設(shè)備中應(yīng)用.微計算機信息,2003(10)

6.PIC18FXX8 DATA SHEET, www.microchip.com

7.[美]約翰 B.皮特曼 著,鄭紅等譯. PIC18F452微控制器嵌入式設(shè)計.科學(xué)出版社,2005,1



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉