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

2006-05-07 15:49:53来源: 电子技术应用

      摘 要: 介绍了具有串行接口的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)

  b1.gif (9167 字节)  · 工作电压宽:2.5V~5.5V

    · 低功耗,工作电流0.5mA,静态电流15μA

    · 18DIP/SOIL封装形式

    1.1 管脚定义

    对于18DIP封装的EM83010而言,其管脚功能如表1所示。

    1.2 内部功能框图

   t1.gif (7594 字节) 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保持高电平状态。

    串行总线上定义了三种数据格式:

   t2.gif (6626 字节) (a) 控制字节的传送

s1.gif (2856 字节)

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

s2.gif (3460 字节)

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

s3.gif (3870 字节)

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

    b2.gif (14675 字节)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位无意义。

  b3.gif (4692 字节)  ·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相连

    t3.gif (16319 字节)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的扩展。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/others/200605/2372.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved