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