基于I2C總線的PIC單片機(jī)端口擴(kuò)展技術(shù)
1. 概述
隨著單片機(jī)技術(shù)的發(fā)展,單片機(jī)在機(jī)電產(chǎn)品領(lǐng)域的應(yīng)用越來(lái)越廣泛。一方面,希望單片機(jī)構(gòu)成的嵌入式系統(tǒng)功能盡可能強(qiáng)大,處理能力強(qiáng),控制對(duì)象多;另一方面,又希望整個(gè)系統(tǒng)的成本盡可能低,即性價(jià)比好。因此,實(shí)際應(yīng)用中經(jīng)常會(huì)遇到單片機(jī)I/0接口資源不夠用的情形,在一些較復(fù)雜的應(yīng)用系統(tǒng)中,由于被控對(duì)象較多,如控制多個(gè)LED數(shù)碼管的顯示、超過(guò)30路狀態(tài)的顯示等,此時(shí),端口供需矛盾尤其突出, 通常的解決方法是采用8155 , 8255 , 8259 , 74HC164,74HC165,74LS373 及74LS245 等外擴(kuò)I/0 接口, 這樣必然會(huì)使系統(tǒng)更加復(fù)雜, 成本增加, 可靠性下降。
目前,功能較強(qiáng)的單片機(jī)中大多采用了FLASH技術(shù),并且在傳統(tǒng)的USART串行通信功能的基礎(chǔ)上增加了諸如SPI、I2C、CAN等先進(jìn)實(shí)用的功能;并且許多外圍芯片具有I2C之類(lèi)的通信接口,如具有64個(gè)按鍵、8×8個(gè)LED數(shù)碼管驅(qū)動(dòng)的ZLG7290芯片。因此,單片機(jī)端口擴(kuò)展可選用更方便、功能更強(qiáng)的擴(kuò)展途徑。
I2C(內(nèi)部集成電路,Inter IC,IC TO IC)總線是Philips Semiconductors在20世紀(jì)80年代中期開(kāi)發(fā)的,最初用于音頻和視頻目的。將I2C擴(kuò)展為系統(tǒng)管理總線SMBus后可用于電源管理及CPU與其它組件的通信。I2C支持多主控模式,2.1版規(guī)定的傳輸速率在標(biāo)準(zhǔn)模式下為最高100kbit/s,快速模式下為400kbit/s,高速模式下為 3.4Mbit/s[1]。由于只需要微控制器的兩個(gè)端口引腳就可以傳輸任意特性的數(shù)據(jù),所以I2C總線協(xié)議得到了廣泛的應(yīng)用,并促進(jìn)了大量的I2C外部芯片的開(kāi)發(fā)。I2C總線可用于控制IC卡、數(shù)據(jù)轉(zhuǎn)換[2] 、LCD控制、時(shí)鐘控制[3]、存貯器控制[4]、、多機(jī)通信[5]等。本文主要討論MICROCHIP公司的PIC18F458用于控制汽車(chē)車(chē)身狀態(tài)顯示時(shí),基于I2C接口的ZLG7290芯片的控制問(wèn)題。
2. I2C總線的工作時(shí)序
串行總線I2C由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成,掛接在I2C總線上的器件可以是主控器Master(負(fù)責(zé)產(chǎn)生時(shí)鐘SCL信號(hào)),也可以是從動(dòng)器件 Slave,可作為發(fā)送器,也可作為接收器。I2C總線轉(zhuǎn)換一次為9位,前8位按自MSB至LSB的順序傳送數(shù)據(jù),第9位為應(yīng)答ACK位,SCL信號(hào)為高電平時(shí),SDA狀態(tài)的變化用來(lái)實(shí)現(xiàn)轉(zhuǎn)換的啟動(dòng)和停止。并且,每一個(gè)數(shù)據(jù)位的傳送,需要一個(gè)SCL周期的支持,數(shù)據(jù)傳送過(guò)程中,SCL為高電平時(shí),SDA線上的數(shù)據(jù)必須保持,僅當(dāng)SCL為低時(shí),才可改變SDA線的狀態(tài)(數(shù)據(jù))?;綢2C通信的過(guò)程為:START(RESTART)à7bit外設(shè)芯片地址+R/~W控制位à8bit外設(shè)芯片內(nèi)部寄存器地址à傳送的多個(gè)數(shù)據(jù)字節(jié)àSTOP。I2C總線數(shù)據(jù)傳送時(shí)序如圖1所示。
圖1 I2C總線數(shù)據(jù)傳送時(shí)序
3. ZLG7290擴(kuò)展芯片
ZLG7290是廣州周立功單片機(jī)發(fā)展有限公司開(kāi)發(fā)的基于I2C接口的鍵盤(pán)及LED驅(qū)動(dòng)器,可驅(qū)動(dòng)8 位共陰數(shù)碼管或64 只獨(dú)立LED 和64 個(gè)按鍵。ZLG7290 提供兩種控制方式:寄存器映象控制和命令解釋控制,寄存器映象控制是指以字節(jié)操作方式直接訪問(wèn)底層寄存器實(shí)現(xiàn)基本控制功能;命令解釋控制是指通過(guò)解釋命令緩沖區(qū)CmdBuf0/ CmdBuf1 中的指令間接訪問(wèn)底層寄存器實(shí)現(xiàn)擴(kuò)展控制功能如實(shí)現(xiàn)寄存器的位操作,對(duì)顯示緩存循環(huán)移位,對(duì)操作數(shù)譯碼等。ZLG7290 的從地址( slave address)為70H(01110000B),內(nèi)部寄存器的地址為00~17H。ZLG7290內(nèi)部功能框圖如圖2所示,本次應(yīng)用中采取寄存器映象控制方式對(duì)LED實(shí)現(xiàn)控制。
圖2 ZLG7290內(nèi)部功能框圖
4.PIC18F458基于I2C通信的實(shí)現(xiàn)
PIC18F458是MICROCHIP公司開(kāi)發(fā)的集成CAN控制器的高檔8位FLASH單片機(jī),具有32K字節(jié)FLASH程序RAM空間,數(shù)據(jù)存貯器為1536字節(jié)RAM+256字節(jié)EEPROM,共33個(gè)I/O端口[6][7]。 PIC18F458的主同步串行端口(MSSP)模塊中提供了SPI和I2C通信功能,引腳RC4和RC3分別用作I2C模式下的數(shù)據(jù)SDA線和時(shí)鐘 SCL線;內(nèi)部有6個(gè)寄存器與I2C通信控制有關(guān),它們分別是:MSSP控制寄存器1 (SSPCON1)、MSSP控制寄存器2 (SSPCON2)、MSSP狀態(tài)寄存器 (SSPSTAT)、串行收/發(fā)緩沖器 (SSPBUF)、MSSP移位寄存器 (SSPSR)和MSSP地址寄存器 (SSPADD),其中,SSPCON1/SSPCON2用來(lái)設(shè)置工作方式,SSPADD用來(lái)設(shè)置器件地址(PIC18F458用作SLAVE時(shí))或通信波特率(PIC18F458用作MASTER時(shí)),MASTER模式下,SSPADD的值應(yīng)滿足以下公式:
(Fosc/4)/FI2C=SSPADD+1
其中:
Fosc/4:PIC18F458內(nèi)部時(shí)鐘頻率,固定為晶振頻率的1/4;
FI2C:I2C通信的最高速率,單位:kbit/s,一般用100kbit/s
SSPADD值最后需圓整為大于或等于計(jì)算值的整數(shù)中的最小整數(shù)。
圖3為PIC18F458控制ZLG7290作為車(chē)身狀態(tài)顯示驅(qū)動(dòng)器時(shí)硬件接線,ZLG7290的19腳和20腳用來(lái)實(shí)現(xiàn)與PIC18F458的通信控制,顯示控制在程序上的實(shí)現(xiàn)主要是通過(guò)調(diào)用函數(shù)WriteByte(SCANNUM,0x01)和 WriteByte(DPRAMi,Dig2word)來(lái)實(shí)現(xiàn),其中,SCANNUM為掃描次數(shù),DPRAMi(i=0~7)為8個(gè)數(shù)碼管對(duì)應(yīng)的段碼顯示緩沖器,如圖3所示,如果要點(diǎn)亮發(fā)光二極管D1所在列的全部8個(gè)發(fā)光二極管,則對(duì)應(yīng)的顯示 緩沖器的值應(yīng)為0XFF。
圖3 PIC18F458控制ZLG7290作為車(chē)身狀態(tài)顯示驅(qū)動(dòng)器時(shí)硬件接線
5. 結(jié)論
利用I2C總線接口擴(kuò)展單片機(jī)的端口大大簡(jiǎn)化了嵌入式系統(tǒng)外圍硬件電路的設(shè)計(jì),提高了系統(tǒng)工作的可靠性;同時(shí),也簡(jiǎn)化了系統(tǒng)控制軟件的設(shè)計(jì),在基于 PIC18F458的車(chē)身狀況顯示控制系統(tǒng)中取得了較好的應(yīng)用效果。按照本文介紹的方法,可以很方便地將ZLG7290或類(lèi)似芯片應(yīng)用于 MICROCHIP的其它類(lèi)型的MCU的應(yīng)用場(chǎng)合。
參 考 文 獻(xiàn)
1.THE I2C-BUS SPECIFICATION,VERSION 2.1,www.semiconductors.philips.com /i2c/support
2.吳強(qiáng),黃石紅. I~2C總線在智能化振動(dòng)測(cè)試儀中的應(yīng)用研究.微計(jì)算機(jī)信息, 2002(10)
3.李彩等. 時(shí)鐘芯片PCF8563在海洋光學(xué)浮標(biāo)中的應(yīng)用. 電子產(chǎn)品世界,2003(7)
4.金明,陶維清.MSP430系列單片機(jī)與I~2C總線方式的EEPROM接口.儀器儀表用戶,2003(6)
5.李秋生,王月忠.基于VB6的PC機(jī)與多臺(tái)單片機(jī)通信在鋰電池檢測(cè)化成設(shè)備中應(yīng)用.微計(jì)算機(jī)信息,2003(10)
6.PIC18FXX8 DATA SHEET, www.microchip.com
7.[美]約翰 B.皮特曼 著,鄭紅等譯. PIC18F452微控制器嵌入式設(shè)計(jì).科學(xué)出版社,2005,1
評(píng)論