第7章 单片机系统的串行扩展 西安思源学院 电子信息工程学院 1
7.1 MCS-51系统的串行扩展原理 目前,对控制系统微型化的要求越来越高,便携式的智 化仪器需求量越来越大。为了使仪器微型化,首先要设法减 少仪器所用芯片的引脚数。这样一来过去常用的并行总线 接口方案由于需要较多的引脚数而不得不舍弃,转而采用 只需少量引脚数的串行总线接口方案。SPI ( Serial Peripheral Interface )和I2C ( Inter-Integrated Circuit ) 就是两种常用的串行总线接口。 SPI三线总线只需3根引脚线就可与外部设备相连。而I2C 两线总线则只需2根引脚线就可与外部设备相连。
7.1.1 SPI三线总线 一.SPI总线概述 SPI实际上是一种串行总线接口 标准。SPI方式可允许同时同步 传送和接收8位数据,它工作 时传输速率最高可达几十兆位/ 秒。SPI用以下3个引脚来完成 通信: (1)串行数据输出SDO ( Serial Data Out )。 (2)串行数据输入SDI ( Serial Data In )。 (3)串行时钟SCK ( Serial Clock )。 图 7-1 主机、从机之间SPI总线连接示意图
二. SPI总线的结构与工作原理 SPI总线有主机、从机的概念。主机的发送与从机的接收相连,主机的接收与从机的发送相连,主机产生的时钟信号输出到从机的时钟引脚上,除了以上三根通讯线外,一般从机还需一根片选控制线。 由于SPI的数据输出线(SDO)和数据输入线(SDI)是分开的,因此允许主机、从机之间发送和接收同时进行,至于数据是否有效取决与应用软件。当主机发出片选控制信号以后,数据的传输节拍由主机的SCK信号控制。对具有SPI功能的单片机,时序图中的SDO和SCK的波形由硬件自动产生,数据的接收也是由硬件自动完成的。
主机的SS信号有效后,选中从设备,在SCK的上升沿主机发送数据,SCK的下降沿主机接收数据。而对没有SPI功能的单片机,则时序图中的SDO和SCK的波形要由软件产生,数据的接收也要由软件来完成。
7.2 单片机的外部串行扩展 串行外围器件由于具有体积小、价格低、占用I/O口线少等优点。正在越来越多的领域被广泛应用。下面分别介绍串行E2PROM、串行输入输出接口、串行A/D转换器。 7.2.1 串行扩展E2 PROM 串行E2PROM具有体积小(通常为8脚封装)、价格低、占用I/O口线少、寿命长(能重复使用100,000次及100年数据不丢失)、抗干扰能力强、不易被改写等优点。随着当今智能化仪表趋于小型化,再加真正需要预设的数据位、控制位、保密位等数据并不占据太多的存储空间,串行E2PROM正被广泛应用于多功能的智能化仪表中。表7-2列出了美国ATMEL公司I2C总线的AT24C系列串行E2PROM,表7-3列出了美国ATMEL公司SPI总线的AT25系列串行E2PROM 。为读者选择不同容量、不同接口总线及了解有关串行E2PROM的详细性能提供参考。
I2C的结构与工作原理 I2C总线上所有器件的SDA 线并接在一起,所有器件的SCL线并接在一起,且SDA 线和SCL线必须通过上拉电阻连接到正电源。图7-3为I2C总线器件的连接图。 图7-3 I2C总线器件电气连接图
I2C总线的数据传输协议要比SPI总线复杂一些, 因为I2C总线器件没有片选控制线,所以I2C总线数据传输的开 始必须,由主器件产生通讯的开始条件(SCL高电平时,SDA 产生负跳变);通讯结束时,由主器件产生通讯的结束条件 (SCL高电平时,SDA产生正跳变)。SDA线上的数据在SCL高 电平期间必须保持稳定,否则会被误认为开始条件或结束条 件,只有在SCL低电平期间才能改变SDA线上的数据。图7-4为 I2C总线的数据传输波形图。 图7-4 I2C总线的数据传输波形图。
一.AT24C系列E2PROM的功能及特点 图7-5 AT24C系列串行E2PROM的引脚图 AT24C系列为美国ATMEL公司推出的串行CMOS型E2PROM,具有功耗小,宽电压范围等优点。工作电流约3mA,静态电流随电源电压不同为30uA~110 uA,存储容量有128×8、256×8、512×8、1K×8、2K×8、4K×8、8K×8、16K×8、32K×8和64K×8等多种规格,图7-5为AT24C系列串行E2PROM的引脚图。图中A0、A1、A2为器件地址引脚,VSS为地,VCC为正电源, 写保护, SCL为串行时钟线,SDA为串行数据线。 图7-5 AT24C系列串行E2PROM的引脚图
二.AT24C系列E2PROM接口及地址选择 AT24C系列E2PROM采用I2C总线,I2C总线上可挂接多个接口器件,在I2C总线上的每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位二进制数,它与1位数据方向位构成一个器件寻址字节。器件寻址字节的最低位(D0)为方向位(读/写);最高4位(D7~D4)为器件型号地址(不同的I2C总线接口器件的型号地址由厂家给定,AT24C系列E2PROM的型号地址皆为1010);其余3位(D3~D1)与器件引脚地址A2A1A0相对应。器件地址格式:1010 A2A1A0
对于E2PROM的片内地址,AT24C01和AT24C02由于芯片容量可用一个字节表示,故读写某个单元前,先向E2PROM写入一个字节的器件地址,再写入一个字节的片内地址。而AT24C04、AT24C08 和AT24C16分别需要9位、10位和11位片内地址,所以AT24C04把器件地址中的D1作为片内地址的最高位,AT24C08把器件地址中的D2D1作为片内地址的最高两位,AT24C16把器件地址中的D3D2D1作为片内地址的最高三位。凡在系统中把器件的引脚地址用作片内地址后,该引脚在电路中不得使用,作悬空处理。AT24C32、 AT24C64、 AT24C128、 AT24C256和 AT24C512的片内地址采用两个字节。
三. AT24C系列E2PROM的读写操作原理 下列读写操作中SDA线上数据传送状态标记注释如下: S为开始信号(SCL高电平时,SDA产生负跳变), 由主机发送。 P为结束信号(SCL高电平时,SDA产生正跳变),由 主机发送。 addr、addr_H 和addr_L 为地址字节,指定片内某一 单元地址,由主机发送。 data 为数据字节,由数据发送方发送。 0为肯定应答信号,由数据接收方发送。 1为否定应答信号, 由数据接收方发送。
主机控制数据线SDA时,在SCL高电平期间必须保持SDA线上的数据稳定,否则会被误认为对从机开始条件或结束条件。主机只能在SCL低电平期间改变SDA线上的数据。主机写操作期间,用SCL的上升沿写入数据;主机读操作期间,用SCL的下降沿读出数据。 AT24C系列AT24C01~AT24C16芯片的存储容量最多为中读n个字节的数据格式 从AT24C系列AT24C01~AT24C16中读n个字节的数据格式:
从AT24C系列AT24C32~AT24C512中读n个字节的数据格式: 向AT24C系列AT24C01~AT24C16中写n个字节的数据格式(n≦页长,且n个字节不能跨页): 向AT24C系列AT24C32~AT24C512中写n个字节的数据格式(n≦页长,且n个字节不能跨页):
图7-6 AT24C系列E2PROM与MCS-51单片机的连接电路图 的数据交换 图7-6 为一片AT24C系列E2PROM与MCS-51单片机的连接电 路图。若有多片E2PROM与MCS-51单片机相连,则各 E2PROM的器件地址引脚接线要不同。 图7-6 AT24C系列E2PROM与MCS-51单片机的连接电路图
7.2.2 串行扩展I/O接口 MCS-51单片机的并行I/O接口与外部RAM是统一编址的,即扩展并行I/O接口要占用单片机的外部RAM的空间。若用串行的方法扩展I/O接口,则可以节省系统的硬件开销,是一种经济、实用的方法。下面分别介绍串行输入接口和串行输出接口。 一.串行输入接口74LS165 74LS165是一个8输入,串行输出的接口电路。其内部结构如图7-7所示。 图7-7 74LS165内部结构图
二.串行输出接口74LS164 图7-8 74LS165级联使用电路连接图 为数据锁存端,当 为低电平时锁存数据;CP1和CP2为移位脉冲输入端;Q7为数据输出端;DS为数据输出端;CP的上升沿移出数据。74LS165作为串行输入接口可以单片使用,也可级联使用。级联使用的电路图7-8所示。 图7-8 74LS165级联使用电路连接图 二.串行输出接口74LS164 74LS164是一个串行输入,8位并行输出的接口电路。其内部结构如图7-9所示。 为清零端,当 为低电平时清零;A和B为数据输出端;CP端为移位脉冲输入端,CP的上升沿移入数据。74LS164作为串行输出接口可以单片使用,也可级联使用。级联使用的电路连接如图7-10
图7-9 74LS164内部结构图 图7-10 74LS164级联使用电路连接图
7.2.3 串行扩展A/D转换器 随着对智能化仪表微型化要求的越来越高,串行A/D转换器件由于具有体积小、价格低、占用I/O口线少等优点而被广泛应用。美国的模拟器件公司(ADI)、MAXIM公司和德州仪器(TI)公司等许多公司纷纷推出能满足不同用户要求的串行A/D转换器件。表7.4列出了美国TI公司系列串行A/D转换器件。 一、11通道12位串行模数转换器TLC2543引脚及内部结构介绍。
TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,最大转换时间10μs,11个模拟输入通道,3路内置自测试方式,采样率为66kbps,线性误差±1LSBmax,有转换结束输出EOC,具有单、双极性输出,可编程的MSB或LSB前导,可编程输出数据长度。它具有三个控制输入端,采用简单的3线SPI串行接口可方便地与微机进行连接,是12位数据采集系统的最佳选择器件之一。图7-11和图7-12分别是TLC2543的引脚排列图和内部结构图。TLC2543有两种封装形式。表7.5是TLC2543的引脚功能说明
图7-11 TLC2543的引脚排列图 图7-12 TLC2543的内部结构图
表7-5 TLC2543的引脚功能说明
二.TLC2543的工作方式和输入通道的选择 TLC2543是一个多通道和多工作方式的模数转换器件,其工作方式和输入通道的选择是通过向TLC2543的控制寄存器写入一个八位的控制字来实现的。这个八位的控制字由四个部份组成:D7 D6 D5 D4选择输入通道,D3 D2选择输出数据长度,D1选择输出数据顺序,D0选择转换结果的极性。八位控制字的各位的含义如表7-6~表7-9所示。主机以MSB为前导方式将控制字写入TLC2543的控制寄存器,每个数据位都是在CLOCK序列的上升沿被写入控制寄存器。
表7-6 输入通道选择 表7-7 输出数据长度选择
表7-8 输出数据顺序选择 表7-9 转换结果极性选择
三.TLC2543的读写时序 当片选信号为高电平时,CLOCK 和 DATA_ IN 被禁止、DATA_ OUT为高阻状态,以便为SPI总线上的其它器件让出总线。在片选信号的下降沿,A/D转换结果的第一位数据出现在DATA_ OUT引脚上,A/D转换结果的其它数据位在时钟信号CLOCK 的下降沿被串行输出到DATA_ OUT引脚。在片选信号下降沿以后,时钟信号CLOCK 的前八个上升沿将八位控制字从DATA_ IN引脚串行输入到TLC2543的控制寄存器。在片选信号下降沿以后,经历8个(或12个/或16个) 时钟信号完成对A/D转换器的一次读写。本次写入的控制字在下一次转换中起作用,本次读出的结果由上次输入的控制字决定。A/D转换可由片选的下降沿触发,也可由CLOCK信号触发。
图7-13是由片选的下降沿触发A/D转换,输出数据长度为8位、以MSB导前的读写时序图。图7-14是由CLOCK信号触发A/D转换,输出数据长度为8位、以MSB导前的读写时序图。图7-15是由片选的下降沿触发A/D转换,输出数据长度为12位、以MSB导前的读写时序图。图7-16是由CLOCK信号触发A/D转换,输出数据长度为12位、以MSB导前的读写时序图。图中的(A11 A10 A9 A8) A7 … A0为(12)8位的A/D转换结果,B7 B6 … B0为控制字。
图7-13 片选的下降沿触发A/D转换、输出数据长度为8位、以MSB导前的读写时序图。
图7-14 CLOCK信号触发A/D转换、输出数据长度为8位、以MSB导前的读写时序图。
图7-15 片选的下降沿触发A/D转换、输出数据长度为12位、以MSB导前的读写时序图。
图7-16 CLOCK信号触发A/D转换、输出数据长度为12位、以MSB导前的读写时序图。
四.MCS-51 单片机对TLC2543的读写子程序 以下的子程序RAD用于读上次的12位A/D转换结果和写下一次转换的控制字。转换结果存放于寄存器R4R5中。下一次转换的控制字选择AIN1通道、输出数据长度为12位、MSB导前、转换结果为单极性。MCS-51单片机与TLC2543的硬件连接为:P1.0 ,P1.1CLOCK,P1.2 DATA INPUT,P1.3 DATA OUT 。A/D转换的程序清单如下: AD_CS BIT P1.0 AD_SCK BIT P1.1 AD_SDI BIT P1.2 AD_SDO BIT P1.3 RAD: CLR AD_CS CLR A MOV R5,A MOV R2, #12 MOV A,#00010000B MOV R3,A
MOV R5, A NOP AD1: MOV C, AD_SDO MOV A, R5 RLC A MOV A, R4 RLC A MOV AD_SDI, C SETB AD_SCK NOP CLR AD_SCK DJNZ R2,AD1 SETB AD_CS RET
第七章 结 束 谢谢! 37