您现在的位置:首页 > 技术资料 | ![]() |
带大量I/O口扩展的串行芯片GM8164及其应用
摘要:GM8164是成都国腾电子设计中心生产的具有大量I/O口扩展功能的串行接口芯片,该芯片具有扩展I/O口数量多,与单片机接口简单的特点,文中介绍了该芯片的性能、特点和工作方式,给出了GM8164与AT89C2051单片机的硬件接口电路及接口程序。 关键词:I/O扩展; 串行口; 单片机; GM8164 分类号:TP334.7 文献标识码:B 文章编号:1006-6977(2003)01-0035-04 1 主要特点 随着非总线型小封装单片机的大量应用,传统的总线扩展型器件已不再适用。而在单片机应用系统的接口电路中,开关量却被大量使用着,但相应的非总线扩展型I/O接口芯片的种类却比较少,很难满足需要I/O口数量较多的应用场合,GM8164是成都国腾微电子设计中心推出的串行I/O扩展器。该器件具有72个I/O口线的扩展能力,因而非常适合于需要使用大量开关量的单片机应用系统。该芯片的级联非常方便,扩展I/O口的数量几乎不受限制。GM8164主要的性能特点如下: ●扩展I/O口数量众多,可提供32位数据输入口和40位数据输出口; ●可同时提供8个开漏输出口,并能方便地进行电平转换和驱动; ●带有可达1MHz的全速率同步串行接口,能非常方便地与通用MCU接口。 ●可多个芯片级联,以扩展I/O口的数量; ●工作电压为2.7-5.6V,可适应多种应用; ●静态电流典型值为3μA(3.3V时); ●动态电流在时钟频率为1MHz时的典型值为13μA(3.3V时); 2 引脚功能和主要参数 2.1 引脚功能 图1所示是GM8164采用PLCC-84封装时的引脚排列图,各引脚的功能见表1所列。
GM8164的极限参数如下: ●电源电压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位串入/并出和并入/串出的寄存器。其功能如下: ●将串行数据转换为并行数据时,可选择5个并行口中的任意一个口输出; ●将并口数据输入转换为串口输出; ●将串口数据输入转换为并口输出; ●可存储并行数据; ●可多芯片级联,并可任意扩充I/O口; GM8164的功能设置如表2所列,其具体工作方式如下:
(1)串行输入、并行输出工作方式 在OC=0、I/O=0时,如果LE为"1",则并行数据输入口10-I31为高阻态,此时在 CPU输出指令时钟CLK的上升沿作用下,串行数据将从DIN口输入,并在内部寄存器中 完成数据从低位向高位的移动,而后从O0-O39输出口输出。而当LE=0时锁存O0-O039。 (2)并行输入、串行输出工作方式 (3)级联工作方式 GM8164JN芯片有三个串行数据输出端DOU-TA、DOUTB、DOUTC,它们分别为内部16位、32位、40位移位寄存器O15、O31、O39(O37)所对应的内部寄存器。当用户系统所需要的输入输出口数量较少时(如分别少于16个),可以只使用10-I15、O0-O15,此时DOUTA则可作为串行数据输出端。而当系统需要的I/0口数量很多时,则可通过DOUTC再级联一片GM8164芯片,以扩展I/O数量。 GM8164在使用时应注意以下几点。 ●并行输出口受输出允许控制端OC和输出锁存控制端LE的控制,当OC=1时,输出O0-O39为高阻态禁止并行数据输出,但此时器件的串行输入、并行置数及串行输出功能不受影响。当OC=0时,若LE=1,则在O0-O39输出数据,而LE=0时,则将O0-O39的数据锁存。 ●当进行输出口控制时,无论改变多少个输出口的状态(即使是一位),也必须把所有的输出口状态按照一定的顺序重新输出一次,且当所有输出口都应置成所需的状态后,方能置锁存端为"1",然后再置"O"锁存。 ●由于O0-O7为OC门输出结构,可驱动电压较高的非TTL型负载(电压不得超过15V),因此当O0-O7用于普通输出口时,应外接上拉电阻。 ●读入输入口状态时,不能打开锁存端,需要读入的次数由输入端所处的位置决定,而不一 定要把所有的输入口状态都读入到CPU。 4 应用 GM8164非常适合于非总线单片机扩展I/O接口使用,这里以AT89C2051单片机为例来说明GM8164的具体应用电路。AT89C2051与GM8164的硬件连接电路如图3所示。
GM8164适合与单片机的UART相连,也可用I/O口线来模拟UART。为了提高数据传送速度,本设计使用了单片机的异步串行口,并使之工作于方式0(即移位寄存器方式),此时波特率为fosc/12,如采用12MHz晶振,则GM8164的fcLK=1MHz,完全可满足GM8164对时钟频率的要求。为了不影响单片机的串口通信功能,电路中使用了一片74HC4052双4 选一模拟开关来实现串行通信、输出口控制和并口数据输入的功能切换,并使用AT89C2051的P1.0、P1.1口实现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端输出串行数据,开关量输入缓冲区设在具有位寻址功能的20-23H,开关量输出缓冲区设在24-28H,并使用串口工作方式0。发送和接收数据采用等待查询方式。具体程序如下: ;位定义 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;设置开关量输入缓冲区指针 MOV R1,#04H ;设置开关量输入位数 SETB A ;选择开关量 CLR B ;输入功能 CLR LE CLR OC SETB I/O ;并行置数 CLR I/O ;I0-I31高阻态 RCV 1:CLR RI ;清接收结束标志 MOV SCON ,#10H ;设串口工作方式0, 并启动接收 WAIT 1:JNB RI,WAIT 1 ;未接收完等待 MOV A,SBUF ;将串行开关量数据送入A中 MOV @ R0 ,A ; 开关数据送开关量输入缓冲区 DJNZ R1,RCV 1 ;未接收完则继续接收 RET ;返回 ;串行输入/并行输出子程序 ;将输出口要求的开关状态由输出量缓冲区输出 OUTPUT:MOV R0,#24H ;设置开关量输出缓冲区指针 CLR A ;选择开关输出功能 CLR B CLR OC SETB LE ;允许输出数据 CLR I/O MOV SCON,#00H;设串行口工作方式0 LOOP: MOV A,@ R0 ;取开关量数据 CLR TI ;清发送结束标志 MOV SBUF,A ;发送数据 WAIT2 JNB TI,WAIT 2 ;未发送完等待 INC R0 ;指向下一缓冲区 DJNZ R1,LOOP ;未发送完则继续发送 CLK LE ;锁存O0-O39状态 RET ;返回 开关量输入缓冲区20H~23H中的每一位与输人口引脚10-I31一一对应。开关量输出缓冲区24H~28H中的每一位和输出口引脚O0~O39--一对应,缓冲区长度可根据使用的I/O口数量进行设置,输人口的状态可用位判别指令或字节判别指令来判断,输出口状态可用更新对应口线输出缓冲区字节内容的方法实现并口数据输出或用置位/复位指令来实现位控 5 结束语 GM8164串行I/O扩展芯片具有扩展I/O数量多,占用单片机硬件资源较少,接口电路及接口时序简单,数据传送速度快的特点,因而是一种较理想的开关量扩展芯片。 参考文献 1. 国腾微电子.GM8164I/O扩展器使用说明. 3. 力源产品目录.武汉力源信息技术服务有限公司,2002(1).
|