第9章串行扩展技术教学目的了解串行扩展的分类和特点。了解Microware、1-wire、USB和CAN总线。掌握I2C总线的原理。掌握SPI总线的原理。学习重点和难点I2C总线的软件模拟。SPI总线的软件模拟。第9章串行扩展技术9.1串行扩展概述9.2UART串行扩展接口9.3I2C串行扩展总线9.4SPI串行扩展接口本章小结习题9.1串行扩展概述9.1.1串行扩展的种类9.1.2串行扩展的特点9.1.1串行扩展的种类新一代单片机技术的显著特点之一就是串行扩展总线和接口的推出。常用的串行扩展总线和接口有I2C总线、SPI总线、Microware总线、1-wire总线和CAN总线等。(1)UART串行扩展接口(UniversalAsynchronousReceiver/Transmitter)UART通用异步收发器,既能同步又能异步通信的硬件电路称为UART。UART是用于控制计算机与串行设备的芯片,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。9.1.1串行扩展的种类(2)I2C(InterIntegratedCircuit)串行扩展总线I2C总线是Philip公司推出的芯片间串行传输总线。它用两根线实现了完善的全双工同步数据传送,可以极为方便地构成多机系统和外围器件扩展系统。(3)SPI(SerialPeripheralInterface)串行扩展接口SPI总线是Motorola公司提出的一种同步串行外设接口。允许MCU与各种外围设备以同步串行方式进行通信。其外围设备种类繁多,从最简单的TTL移位寄存器到复杂的LCD显示驱动器、网络控制器等,可谓应有尽有。9.1.1串行扩展的种类(4)Microware串行扩展接口Microware总线是NS公司提出的串行同步双工通信接口,用于8位COP800系列单片机和16位HPC系列单片机。(5)单总线(1-wire)串行扩展总线1-wire总线是Dallas公司研制开发的一种协议,用于便携式仪表和现场监控系统。(6)USB(UniversalSerialBUS)串行扩展总线USB总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一种计算机串行通信协议。9.1.1串行扩展的种类(7)CAN(ControllerAreaNetwork)串行扩展总线CAN总线是德国Bosch公司最先提出的多主机局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备。9.1.2串行扩展的特点串行扩展总线技术是新一代单片机技术发展的一个显著特点。与并行扩展总线相比,串行扩展总线有电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等优点。常用串行扩展总线和接口的特点简要说明如下:(1)UART串行扩展接口UART接口是二线制,8051单片机的UART既能作通用异步接收和发送器,又能作同步移位寄存器。它可以实现8051单片机系统之间点对点的单机通信或多机通信,也可以实现扩展I/O口。9.1.2串行扩展的特点(2)I2C总线I2C总线是二线制,采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。I2C总线简单,结构紧凑,易于实现模块化和标准化。(3)SPI串行扩展接口SPI总线是三线制,可直接与多种标准外围器件直接接口,在SPI从设备较少而没有总线扩展能力的单片机系统中使用特别方便。即使在有总线扩展能力的系统中采用SPI设备也可以简化电路设计,省掉很多常规电路中的接口器件,从而提高了设计的可靠性。9.1.2串行扩展的特点(4)Microware串行扩展接口Microware总线是三线制,由一根数据输出(SO)线、一根数据输入(SI)线和一根时钟(SK)线组成。所有从器件的时钟线连接到同一根SK线上,主器件向SK线发送时钟脉冲信号,从器件在时钟信号的同步沿输出/输入数据。主器件的数据输出线SO和所有从器件的数据输入线相接,从器件的数据输出线都接到主器件的数据输入线SI上。(5)1-wire总线1-wire总线是利用一根线实现双向通信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合1-wire协议的从芯片都有一个唯一的地址,包括8位分类码、48位的序列号和8位CRC代码。主芯片对各个从芯片的寻找依据这64位的不同来进行。单总线节省I/O引脚资源、结构简单、成本低廉、便于总线扩展和维护。9.1.2串行扩展的特点(6)USB串行扩展接口USB比较于其他传统接口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔(HotPlugging)。数据传输速度快,USB1.1接口的最高传输率可达12Mb/s;USB2.0接口的最高传输率可达480Mb/s。扩展方便,使用USBHub扩展,可以连接127个USB设备,连接的方式十分灵活。(7)CAN总线在由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。当信号传输距离达到10km时,CAN仍可提供高达50Kbit/s的数据传输速率。9.2UART串行扩展接口9.2.1串行口工作方式9.2.2UART串行扩展应用实例9.2.1串行口工作方式串行口有四种工作方式,每一种工作方式都有自己的特点。其中方式0是8位同步通信方式,用于串/并或并/串转换中,常用的串/并转换芯片有74LS164和并/串转换芯片74LS165等。74LS164是一个双列直插式8位串入/并出移位寄存器,其引脚如下图所示。其引脚定义如下:A:同步串行数据输入端B:同步串行数据输入端Q0~Q7:8位并行数据输出端CK:时钟脉冲输入端CLR:数据清除端(清除输出数据,通常用在移位完成时)GND:接地端VCC:电源端9.2.1串行口工作方式74LS165是一个双列直插式8位并入/串出移位寄存器,其引脚如下图所示。其引脚定义如下:LD:重新装载数据端(通常用在数据完全移出后)CK:内部数据移位时钟脉冲输入端D0~D7:并行数据输入端Q11:取反串行输出端GND:接地端Q11:串行输出端SE:用于填充数据移出后的空位的逻辑电平信号COK:和CK联合控制数据移动VCC:电源端9.2.1串行口工作方式1234567109811121314ABQ7GNDCKCLRVCCQ6Q5Q4Q3Q2Q1Q01213141516SED7VCCD6D5D4COKQ111234567LDCKD3Q11D2D1D0GND91110874LS164引脚图74LS165引脚图9.2.2UART串行扩展应用实例【例1】利用74LS164串行输入并行输出芯片作一个简单的电子钟,要求四个数码管显示时钟;其中LED1显示小时的十位,LED2显示小时的个位,LED3显示分钟的十位,LED4显示分钟的个位。解:原理图如下图,采用单片机的串行口输出字形码,用74LS164和74LS138作为扩展芯片。74LS164的功能是将AT89C2051串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。74LS138是一个3线-8线译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。因74LS138电流驱动能力较小,故用末级驱动三极管9013作为地址驱动。将4只LED的字段位都连在一起,它们的公共端则由74LS138分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式,其优点使用串行口进行LED通信程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可。9.2.2UART串行扩展应用实例串行动态LED扫描电路P3.2P3.3TXRX9.2.2UART串行扩展应用实例ORG0000HLJMPMAINORG0040HMAIN:MOVSCON,#00H;初始化串口为方式0MOVR3,#00HLOOP:MOVR4,#0E8HDELAY:LCALLDISPLAY;动态扫描显示DJNZR4,DELAYINCR3;显示数字增1CJNER3,#0AH,LOOP;不等于10转移LJMPMAIN下面是一个简单的动态扫描程序,如果再利用上第六章的定时器就可做成一个完整的电子钟,四个数码管显示为00:00这种形式。在本例中冒号就不显示出来了,分别用20H、21H、22H、23H地址存放时间的时钟的十位、时钟的个位、分钟的十位、分钟的个位。用中断方式做一个不带时钟芯片的电子钟,请读者自己完成。9.2.2UART串行扩展应用实例DISPLAY:CLRP3.2;显示LED1CLRP3.3LCALLDISPLCALLDELAY1SETBP3.3;显示LED2LCALLDISPLCALLDELAY1SETBP3.3;显示LED3CLRP3.2LCALLDISPLCALLDELAY1SETBP3.2;显示LED4SETBP3.3LCALLDISPLCALLDELAY1RET参考程序:9.2.2UART串行扩展应用实例DISP:MOVA,R3;将字形码送串口MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AWAIT:JNBTI,WAIT;等待串口传送CLRTIRETDELAY1:MOVR6,#10H;动态扫描的时间LOOP1:MOVR7,#38H;间隔DJNZR7,$DJNZR6,LOOP1RETTABLE:DB3FH,06H,,5BH;0~9的字形码DB4FH,66H,6DHDB7DH,07H,,7FH,,6FH参考程序:9.3I2C串行扩展总线9.3.1I2C总线的结构原理9.3.2I2C总线的软件模拟9.3.3I2C串行扩展应用实例9.3.1I2C总线的结构原理I2C总线是芯片间串行传输总线。它用数据线SDA和时钟线SCL两根线实现全双工同步数据传送,可方便地构成多机系统和外围器件扩展系统。I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。按照I2C总线规范,总线传输中的所有状态都生成相对应的状态码,系统中的主机能够依照这些状态码自动地进行总线管理,用户只要在程序中装入这些标准处理模块,根据数据操作要求完成I2C总线的初始化,启动I2C总线,就能自动完成规定的数据传送操作。9.3.1I2C总线的结构原理#1#2#3#4VDDSDASCLRPRPSDASDASDASDASCLSCLSCLSCLI2C总线接口电路结构9.3.1I2C总线的结构原理I2C总线接口为开漏或开集电极输出,需加上拉电阻。系统中所有的单片机、外围器件都将数据线SDA和时钟线SCL的同名端相连在一起,总线上的所有节点都由器件和管脚给定地址。系统中可以直接连接具有I2C总线接口的单片机,也可以通过总线扩展芯片或I/O口的软件仿真与I2C总线相连。在I2C总线上可以挂接各种类型的外围器件,如RAM/EEPROM、日历/时钟芯片、A/D转换器、D/A转换器、以及由I/O口、显示驱动器构成的各种模块。9.3.1I2C总线的结构原理SDA和SCL都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压;当总线空闲时,这两条线路都是高电平;连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C总线上数据的传输速率在标准模式下可达100kbit/s。在快速模式下可达400kbit/s。在高速模式下可达3.4Mbit/s。连接到总线的接口数量只由总线电容是400pF的限制决定关于高速模式主机器件的信息。9.3.1