《电子技术应用》
您所在的位置:首页 > 模拟设计 > 业界动态 > 具有串行接口的I/O扩展器EM83010及其应用

具有串行接口的I/O扩展器EM83010及其应用

2009-02-05
作者:曹立进 高敦堂 都思丹 孙宗琪

  摘 要: 介绍了具有串行接口I/O扩展器EM83010的性能和特点,利用EM83010实现了对MCS51单片机的I/O扩展。
  关键词: I/O扩展 串行接口 MCS51单片机


  单片机I/O口的扩展,过去常常采用门电路或可编程逻辑器件等来实现,比较麻烦。本文介绍具有串行接口的I/O扩展器EM83010及其应用,从而为设计者提供一种新的I/O口扩展方法。使用EM83010进行I/O扩展,不仅非常简便,而且具有强大的功能。
1 EM83010简介
  EM83010是EMC公司生产的带串行接口的I/O扩展器,它具有以下功能及特点:
  · 14个双向I/O口线
  · 2个I/O寄存器,2个I/O控制寄存器
  · 144×8bit片内RAM
  · 与MCU通过2线串行接口相连
  · 2线最多可同时接8片EM83010(此时扩展I/O数量为112个,RAM容量为1152×8bit)
  · 工作电压宽:2.5V~5.5V
  · 低功耗,工作电流0.5mA,静态电流15μA
  · 18DIP/SOIC封装形式
1.1 管脚定义
  对于18DIP封装的EM83010而言,其管脚功能如表1所示。


1.2 内部功能框图
  EM83010内部功能框图如图1所示。EM83010内部主要包括I/O控制逻辑、存储控制逻辑、地址指针、144字节的RAM、状态及控制寄存器、两个端口及其对应的数据寄存器和控制寄存器。


1.3 2线串行接口
  EM83010支持双向2线串行接口,其中由SCK提供串行同步时钟,SDT收发数据,并且最多可以有8个EM83010同时共享该总线。
  串行总线上数据传送的时序如图2所示。


  数据传输依次为:START、GRP位、DATA(控制字节、数据或地址,高位在前,低位在后)、ACK位、STOP。其中START定义为SCK=“1”时SDT的下降沿;STOP定义为SCK=“1”时SDT的上升沿;若GRP=“0”,表示下面的字节是控制字节,否则表示下面的字节是数据或地址;ACK的产生方法是在ACK周期(回应时钟)的高电平期间将SDT拉低。STOP产生之后,SCK、SDT保持高电平状态。
  串行总线上定义了三种数据格式:
  (a) 控制字节的传送

  
  (b) 随机地址的数据读写

  
  (c) 连续地址的数据读写

  
  在以上数据格式中,S:开始(START);P:停止(STOP);D:数据(8位);1:(GRP)高电平;0:(GRP)低电平;A:地址(8位);K:读数据时有回应(ACK);C:控制字节(8位);NK:读数据时无回应(No ACK)。
1.4 控制字节
  控制字节的位定义如表2所示。


  注:(T1 T0 A2 A1 A0)=(1 1 0 0 0)被保留,
  用于R-option地址。
1.5 寄存器(I/O端口及RAM)
1.5.1 寄存器(I/O端口、RAM)分配表
  寄存器(I/O端口及RAM)分配表如表3所示。


1.5.2 R00~R01(端口0~端口1)
  ·R00是6位寄存器,对应端口0,读写R00的高2位无意义。
  ·R01是8位寄存器,对应端口1。
  ·每个I/O管脚均可定义为输入或输出。
  ·写入R00和R01时是串行传送的,但数据被刷新到管脚上是同时的;读R00和R01时,管脚数据的采样也是同时的。
1.5.3 R02和R03(IOC0和IOC1)
  ·IOC0(R02)是6位寄存器,控制端口0数据I/O的方向,读写IOC0的高2位无意义。
  ·IOC1(R03)是8位寄存器,控制端口1数据I/O的方向。
  ·IOC0和IOC1中的“1”置对应管脚为高阻,表示输入;“0”置对应管脚为输出状态。
  ·上电后,IOC0和IOC1各位均为“1”。
  ·IOC0和IOC1的接收是串行的,但写入寄存器是同时的。
1.5.4 R04~R93(通用寄存器)
  ·R04~R93为144字节的通用寄存器(SRAM)。
1.6 R-option地址片选
  总线上有多个设备时,每个设备应具有不同的地址。如表1所示,P00~P02可作为R-option脚,用于芯片的片选。
  每个R-option管脚被内部电路微弱拉为高电平,若外接560kΩ电阻接地则读作“0”,否则读作“1”。
  上电后必须在控制字节中发出“读R-option”命令(此时CONTROL byte=11000001,且“STOP”上升沿之前应该延时500μs),将片选地址读入后,P00~P02的R-option地址片选才起作用。
  P00~P02可作为双向I/O管脚,由于R-option功能的原因,建议P00~P02用作输出脚。
1.7 EM83010的应用电路举例
  EM83010的应用电路如图3所示。R2~R8=560kΩ,R1=10kΩ,此电路有3片EM83010,共用2根总线(MCS51单片机的P10和P11)。由R2~R8的接法可知,3片EM83010的地址分别为000、001、010。


  这样,在图3中,2根I/O线(P10、P11)可扩展14×3=42个I/O口,以及144×3=432字节的RAM。
  可见EM83010用于I/O扩展时,不仅便于实现,而且功能强大。
2 EM83010用于MCS51的I/O扩展
2.1 硬件电路
  利用EM83010对MCS51单片机进行I/O扩展的硬件电路请参照图3。直接将MCS51单片机的2根I/O口线(如P10、P11)连至SDT、SCK即可。
2.2 软件设计
2.2.1 基本考虑

  EM83010的SCK时钟频率最高可为500kHz。对于主频12MHz的MCS51单片机而言,其指令周期不小于1μs,由指令产生的SCK时钟周期不小于2μs,完全满足上述条件。
2.2.2 程序编写
  下面以发送控制字节(CONTROL byte)子程序为例,说明MCS51系列单片机对EM83010的控制方法。
  ;发送控制字节子程序
  ;Control Byte 存放在累加器A中
  SDT bit P10 ; P10与EM83010的SDT相连
  SCK bit P11 ; P11与EM83010的SCK相连
  TransmitControl:
   SETB SDT ;
   SETB SCK ; 在SCK高电平期间
   CLR SDT ; 产生“START”(下降沿)
  CLR SCK ;
   SETB SCK ; 发送“GRP”(GRP=0)
   MOV R0,#08 ;发送8位的Control Byte
  OutByte:
   CLR SCK ;
   RLC A ;带进位标志循环左移位
   MOV SDT,C ;发送1位数据
   SETB SCK ;
   DJNZ R0,OutByte ;
   CLR SCK ;
   SETB SCK ;
   JB SDT,$ ;等待“ACK”
   CLR SCK ;
   CLR SDT ;
   SETB SCK ;在SCK高电平期间
   SETB SDT ;产生“STOP”(上升沿)
   RET ;子程序返回
  以上子程序将存放在累加器A中的控制字节(Control Byte)发送给EM83010,入口地址标号为TransmitControl。该程序在SDT上依次传输了START、GRP、8位Control Byte、ACK、STOP,其中8位Control Byte的串行化主要是由带进位标志循环移位指令(RLC A)实现的。
2.2.3 操作步骤
  系统上电后,MCS51单片机应先向EM83010发出“读R-option”命令(与TransmitControl子程序相似,参数A=0C1H,且发送“STOP”上升沿前应延时500μs),将片选地址读入后,P00~P02的R-option地址片选才起作用。
  接下来,可根据需要对EM83010的端口0、端口1及RAM进行读写,从而实现了单片机I/O口及RAM的扩展。
参考文献
1 EM83010-I/O EXPANDER. EMC Corp.
2 何立民. MCS-51系列单片机应用系统设计. 北京:北京航空航天大学出版社,1993

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。