新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 具有串行接口的I/O扩展器EM83010及其应用

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

作者: 时间:2006-05-07 来源:网络 收藏

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

本文引用地址:https://www.eepw.com.cn/article/226467.htm

关键词: 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)

具有串行接口的I/O扩展器EM83010及其应用 · 工作电压宽:2.5V~5.5V

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

· 18DIP/SOIL封装形式

1.1 管脚定义

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

1.2 内部功能框图

具有串行接口的I/O扩展器EM83010及其应用 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保持高电平状态。

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

具有串行接口的I/O扩展器EM83010及其应用 (a) 控制字节的传送

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

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

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

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

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

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

具有串行接口的I/O扩展器EM83010及其应用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位无意义。

具有串行接口的I/O扩展器EM83010及其应用 ·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相连

具有串行接口的I/O扩展器EM83010及其应用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的扩展。



评论


相关推荐

技术专区

关闭