1 主要特點 隨著非總線型小封裝單片機的大量應用,傳統(tǒng)的總線擴展型器件已不再適用。而在單片機應用系統(tǒng)的接口電路中,開關量卻被大量使用著,但相應的非總線擴展型I/O接口芯片的種類卻比較少,很難滿足需要I/O口數(shù)量較多的應用場合,GM8164是成都國騰微電子設計中心推出的串行I/O擴展器。該器件具有72個I/O口線的擴展能力,因而非常適合于需要使用大量開關量的單片機應用系統(tǒng)。該芯片的級聯(lián)非常方便,擴展I/O口的數(shù)量幾乎不受限制。GM8164主要的性能特點如下: ●擴展I/O口數(shù)量眾多,可提供32位數(shù)據(jù)輸入口和40位數(shù)據(jù)輸出口; ●可同時提供8個開漏輸出口,并能方便地進行電平轉換和驅動; ●帶有可達1MHz的全速率同步串行接口,能非常方便地與通用MCU接口。 ●可多個芯片級聯(lián),以擴展I/O口的數(shù)量; ●工作電壓為2.7-5.6V,可適應多種應用; ●靜態(tài)電流典型值為3μA(3.3V時); ●動態(tài)電流在時鐘頻率為1MHz時的典型值為13μA(3.3V時); ●具有PLCC-84和QFP-80兩種封裝形式。 2 引腳功能和主要參數(shù) 2.1 引腳功能 圖1所示是GM8164采用PLCC-84封裝時的引腳排列圖,各引腳的功能見表1所列。 2.2性能參數(shù) GM8164的極限參數(shù)如下: ●電源電壓Vcc:-0.5-7V; ●輸入電壓VI:-0.5-Vcc+0.5V; ●輸出電壓V。:-0.5-Vcc+0.5V; ●直流漏極電流(每個輸出)I。:土25mA; ●直流電流(Vcc)或地端電流Icc:±50mA ●工作溫度范圍:-25-+85℃; 為了使GM8164能夠安全可靠的工作,通常應按以下工作條件操作: ● 電源電壓Vcc為2.0-6.0V; ●輸入電壓VI為0-Vcc+; ●輸出電壓V。為0~Vcc+; ●輸入脈沖上升、下降時間tr、tf為0-500ns; ●時鐘頻率為1MHz(3.3V)或2MHz(5V)。 3 結構功能 GM8164是一個CMOS器件,圖2所示是其內部結構,該器件內部包括5組8位串入/并出和并入/串出的寄存器。其功能如下: ●將串行數(shù)據(jù)轉換為并行數(shù)據(jù)時,可選擇5個并行口中的任意一個口輸出; ●將并口數(shù)據(jù)輸入轉換為串口輸出; ●將串口數(shù)據(jù)輸入轉換為并口輸出; ●可存儲并行數(shù)據(jù); ●可多芯片級聯(lián),并可任意擴充I/O口; ●在時鐘上升沿有效。 GM8164的功能設置如表2所列,其具體工作方式如下: (1)串行輸入、并行輸出工作方式 在OC=0、I/O=0時,如果LE為"1",則并行數(shù)據(jù)輸入口10-I31為高阻態(tài),此時在 CPU輸出指令時鐘CLK的上升沿作用下,串行數(shù)據(jù)將從DIN口輸入,并在內部寄存器中 完成數(shù)據(jù)從低位向高位的移動,而后從O0-O39輸出口輸出。而當LE=0時鎖存O0-O039。 (2)并行輸入、串行輸出工作方式 當LE=0、OC二0時,若I/O為"1",則并行置數(shù),此時并行數(shù)據(jù)從10-I31輸入至內部寄存器。若將I/0置"0"并斷開輸入端,那么在CPU輸出指令時鐘CLK上升沿的作用下,內部寄存器中的數(shù)據(jù)將從串行數(shù)據(jù)輸出端DOUTA、DOUTB或DOUTC輸出。 (3)級聯(lián)工作方式 GM8164JN芯片有三個串行數(shù)據(jù)輸出端DOU-TA、DOUTB、DOUTC,它們分別為內部16位、32位、40位移位寄存器O15、O31、O39(O37)所對應的內部寄存器。當用戶系統(tǒng)所需要的輸入輸出口數(shù)量較少時(如分別少于16個),可以只使用10-I15、O0-O15,此時DOUTA則可作為串行數(shù)據(jù)輸出端。而當系統(tǒng)需要的I/0口數(shù)量很多時,則可通過DOUTC再級聯(lián)一片GM8164芯片,以擴展I/O數(shù)量。 GM8164在使用時應注意以下幾點。 ●并行輸出口受輸出允許控制端OC和輸出鎖存控制端LE的控制,當OC=1時,輸出O0-O39為高阻態(tài)禁止并行數(shù)據(jù)輸出,但此時器件的串行輸入、并行置數(shù)及串行輸出功能不受影響。當OC=0時,若LE=1,則在O0-O39輸出數(shù)據(jù),而LE=0時,則將O0-O39的數(shù)據(jù)鎖存。 ●當進行輸出口控制時,無論改變多少個輸出口的狀態(tài)(即使是一位),也必須把所有的輸出口狀態(tài)按照一定的順序重新輸出一次,且當所有輸出口都應置成所需的狀態(tài)后,方能置鎖存端為"1",然后再置"O"鎖存。 ●由于O0-O7為OC門輸出結構,可驅動電壓較高的非TTL型負載(電壓不得超過15V),因此當O0-O7用于普通輸出口時,應外接上拉電阻。 ●讀入輸入口狀態(tài)時,不能打開鎖存端,需要讀入的次數(shù)由輸入端所處的位置決定,而不一 定要把所有的輸入口狀態(tài)都讀入到CPU。 ●當用戶系統(tǒng)輸入口數(shù)量在16個以下而又使用DOUTB及DOUTC做輸出口時,會出現(xiàn)2個(DOUTB端)或3個字節(jié)(DOUNTC端)的無效數(shù)據(jù);當用戶的輸入端口數(shù)目在32個以下時,DOUTC端會產生一個字節(jié)的無效數(shù)據(jù),而且在多片級聯(lián)時也會產生無效數(shù)據(jù),因此在軟件編程時應將無效數(shù)據(jù)舍棄。 4 應用 GM8164非常適合于非總線單片機擴展I/O接口使用,這里以AT89C2051單片機為例來說明GM8164的具體應用電路。AT89C2051與GM8164的硬件連接電路如圖3所示。 GM8164適合與單片機的UART相連,也可用I/O口線來模擬UART。為了提高數(shù)據(jù)傳送速度,本設計使用了單片機的異步串行口,并使之工作于方式0(即移位寄存器方式),此時波特率為fosc/12,如采用12MHz晶振,則GM8164的fcLK=1MHz,完全可滿足GM8164對時鐘頻率的要求。為了不影響單片機的串口通信功能,電路中使用了一片74HC4052雙4 選一模擬開關來實現(xiàn)串行通信、輸出口控制和并口數(shù)據(jù)輸入的功能切換,并使用AT89C2051的P1.0、P1.1口實現(xiàn)A、B通道的選擇。當P1.1P1.0=00時選擇串行輸入/并行輸出;P1.1P1.0=01時選擇并行輸入/串行輸出;P1.1P1.0=10時為串口通信功能;P1.1P1.0=11時禁止所有功能,同時使用單片機的P1.2-P1.4口來分別作為I/O控制、鎖存控制 和高阻輸出控制口。 以下給出串行輸入/并行輸出方式和并行輸入/串行輸出工作方式的子程序,本程序假設使用了全部32個輸入口和40個輸出口,并用DOUTC端輸出串行數(shù)據(jù),開關量輸入緩沖區(qū)設在具有位尋址功能的20-23H,開關量輸出緩沖區(qū)設在24-28H,并使用串口工作方式0。發(fā)送和接收數(shù)據(jù)采用等待查詢方式。具體程序如下: ;位定義 A BIT P1.0 ;4052通道選擇低位 B BIT P1.1 ;4052通道選擇高位 I/O BIT P1.2 ;I/O控制 LE BIT P1.3 ;LE鎖存控制 OC BIT P1.4 ;OC高阻控制 ;并行輸入/串行輸出子程序 INPUT:MOV R0,#20H;設置開關量輸入緩沖區(qū)指針 MOV R1,#04H ;設置開關量輸入位數(shù) SETB A ;選擇開關量 CLR B ;輸入功能 CLR LE CLR OC SETB I/O ;并行置數(shù) CLR I/O ;I0-I31高阻態(tài) RCV 1:CLR RI ;清接收結束標志 MOV SCON ,#10H ;設串口工作方式0, 并啟動接收 WAIT 1:JNB RI,WAIT 1 ;未接收完等待 MOV A,SBUF ;將串行開關量數(shù)據(jù)送入A中 MOV @ R0 ,A ; 開關數(shù)據(jù)送開關量輸入緩沖區(qū) INC R0 ;指向下一緩沖區(qū) DJNZ R1,RCV 1 ;未接收完則繼續(xù)接收 RET ;返回 ;串行輸入/并行輸出子程序 ;將輸出口要求的開關狀態(tài)由輸出量緩沖區(qū)輸出 OUTPUT:MOV R0,#24H ;設置開關量輸出緩沖區(qū)指針 MOV R1,#05H ;設置開關量輸出位數(shù) CLR A ;選擇開關輸出功能 CLR B CLR OC SETB LE ;允許輸出數(shù)據(jù) CLR I/O MOV SCON,#00H;設串行口工作方式0 LOOP: MOV A,@ R0 ;取開關量數(shù)據(jù) CLR TI ;清發(fā)送結束標志 MOV SBUF,A ;發(fā)送數(shù)據(jù) WAIT2 JNB TI,WAIT 2 ;未發(fā)送完等待 INC R0 ;指向下一緩沖區(qū) DJNZ R1,LOOP ;未發(fā)送完則繼續(xù)發(fā)送 CLK LE ;鎖存O0-O39狀態(tài) RET ;返回 開關量輸入緩沖區(qū)20H~23H中的每一位與輸人口引腳10-I31一一對應。開關量輸出緩沖區(qū)24H~28H中的每一位和輸出口引腳O0~O39--一對應,緩沖區(qū)長度可根據(jù)使用的I/O口數(shù)量進行設置,輸人口的狀態(tài)可用位判別指令或字節(jié)判別指令來判斷,輸出口狀態(tài)可用更新對應口線輸出緩沖區(qū)字節(jié)內容的方法實現(xiàn)并口數(shù)據(jù)輸出或用置位/復位指令來實現(xiàn)位控輸出,限于篇幅,在這里就不詳述了。 5 結束語 GM8164串行I/O擴展芯片具有擴展I/O數(shù)量多,占用單片機硬件資源較少,接口電路及接口時序簡單,數(shù)據(jù)傳送速度快的特點,因而是一種較理想的開關量擴展芯片。 |