《单片机原理与应用技术第6章_外部串行总线接口技术(最新)》由会员分享,可在线阅读,更多相关《单片机原理与应用技术第6章_外部串行总线接口技术(最新)(80页珍藏版)》请在金锄头文库上搜索。
1、第6章 MCS-51单单片机外部串行总线总线 接口技术术u教学要求:本章让学生了解几种常用外部串行总线工作方式。熟悉常用串行接口芯片X5045、HD7279、TLC1543、TLC5165的工作原理、接口电路设计与 接口程序设计。u主要内容:本章首先讲述单片机常用串行接口总线如SPI、 I2C、1-wire等的特点、工作方式。然后以SPI总 线接口为例,介绍了几种常用的接口芯片的结 构、工作原理以及与单片机的接口电 路和接口 程序设计。Date1第6章 MCS-51单单片机外部串行总线总线 接口技 术术v6.1 几种外部串行总线工作方式v6.2 串行E2PROM X5045接口扩展技术v6.3
2、 串行专用键盘/显示器接口芯片HD7279v6.4 串行A/D转换接口芯片TLC1543v6.5 串行D/A转换接口芯片TLC5615v6.6 本章小结 *26.1.1 SPI串行总线 1.SPI总线的特点 (串行外围设备接口:serial peripheral interface)v一般使用4条线 串行时钟线(SCK) 主机输入/从机输出数据线MISO 主机输出/从机输入数据线MOSI 低电平有效的从机选择线SSSPI总线技术是Motorola公司推出的一种同步串行接口 6.1 几种外部串行总线工作方式 Date32.SPI总线系统的构成v单片机与多个SPI串行接口设备典型结构如图6.1所示
3、。图6.1 单片机与多个SPI串行接口设备典型连接Date43.SPI串行总线在MCS-51系列单片机中的实现 vMCS-51单片机I/O口模拟SPI总线接口原理图如图6.2所示 。 图6.2 MCS-51单片机I/O口模拟SPI总线接口原理图Date5v单片机,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。vA/D和D/A转换器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。v实时时钟RTC,如Dallas公司的DS1302/05/06等。v温度传感器,如AD公
4、司的AD7816/17/18;NS公司的LM74等。v其他设备,如LED控制驱动器MAX7219、HD7279等,集成看门狗、电压监控、E2PROM等功能的X5045等。 4.常用SPI串行总线接口的器件Date66.1.2 I2C总线 vI2C(Inter Integrated Circuit)常译为 内部集成电路总线,或集成电路间总线,它 是由Philips公司推出的芯片间串行传输总 线。使用2线实现数据通信。1根串行数据线(SDA)1根串行时钟线(SCL)。Date71. I2C总线的基本特性v硬件结构上具有相同的硬件接口界面。图6.3 I2C器件连接实例Date8v总线接口器件地址具有
5、很大的独立性。在单主系统中,每 个I2C接口芯片具有唯一的器件地址,各从器件之间互不干 扰,相互之间不能进行通信。MCU与I2C器件之间的通信是 通过独一无二的器件地址来实现的。v数据传输首先从最高位开始。传输速率在标准模式下可达 100kbit/s,在快速模式下达400kbit/s,在高速模式下达 3.4Mbit/s。v它是一个真正的多主机总线。如果两个或更多主机同时初 始化数据传输,可以通过冲突检测和仲裁防止数据被破坏 。v软件操作的一致性。任何器件通过I2C总线与MCU进行数据 传送的方式基本一样,决定了I2C总线软件编写的一致性。 Date92.I2C总线工作原理 (1)I2C总线信号
6、类型v开始信号:SCL为高电平时,SDA由高电平向低电平跳变, 开始传送数据。v结束信号:SCL为低电平时,SDA由低电平向高电平跳变, 结束传送数据。v应答信号:接收数据的器件在接收到8bit数据后,向发送 数据的器件(发送器)发出特定的低电平脉冲,表示已收 到数据。发送器接收到应答信号后,根据实际情况作出是 否继续传递信号的判断。若未收到应答信号,由判断为接 收器出现故障。 起始信号与结束信号都是由主器件产生。Date10(2)I2C总线数据传输 v主器件和从器件都可以工作于接收和发送状态。v总线必须由主器件(通常为单片机)控制,主器件产生串 行时钟控制总线的传输方向,并产生起始和停止条件
7、。v在起始信号结束后,主器件将发送一个用于选择从器件地 址的7位地址码和一个数据方向位(R/W),方向位为“0” 表示主器件把数据写到所选择的从器件中,此时主器件作 为发送器,而从器件作为接收器;方向位为“1”表示主器 件从所选择的从器件中读取数据,此时主器件作为接收器 ,而从器件作为发送器。在寻址字节后是按指定读、写操 作的数据字节与应答位。在数据传送完成后主器件必须发 送停止信号。Date116.1.3 单总线v单总线(1-Wire)是Dallas公司推出外围串行扩展总线, 采用单根信号线完成数据的双向传输。v单总线技术有三个显著的特点:v单总线芯片通过一根信号线进行地址信息、控制信息和数
8、 据信息的传送,并通过该信号线为单总线器件提供电源;v每个单总线芯片都具有全球唯一的访问序列号,当多个单 总线器件挂在同一单总线上时,对所有单总线芯片的访问 都通过该唯一序列号区分;v单总线芯片在工作过程中,不需要提供外接电源,而通过 它本身具有的“总线窃电”技术从总线上窃取电源。 Date12图6.4 单总线多节点系统的示意图Date136.1.4 Microwire串行总线vMicrowire总线是三线同步串行总线 时钟线(SK) 数据输入线(SI) 数据输出线(SO)Date146.2.1 X5045的基本功能1.X5045基本功能 上电复位 看门狗 低电压检测 串行E2PROM存储器6
9、.2 串行E2PROM X5045接口扩展技术Date152. 引脚排列与定义 图6.6 X5045的引脚分布 v :片选端。当为低电平时,X5045工作。vSO:串行数据输出端。v :写保护输入端。vVss :电源地 vSI :串行数据输入端。vSCK :串行时钟输入端。 vRESET :复位输出端。vVcc :电源电压。 Date166.2.2 X5045的控制与实现 1.X5045操作指令与寄存器 (1)X5045的指令集命令名称命令格式内 容WRSR0000 0001写状态寄存器(看门狗和块锁)WRITE0000 A8010把数据写入所选地址的存储器阵 列(116字节)READ0000
10、 A8011从所选地址的存储器阵列开始读 出数据WRDI0000 0100复位写使能锁存器(禁止写操作 )RDSR0000 0101读状态寄存器WREN0000 0110设置写使能锁存器(允许写操作 )Date17状态寄存器格式如下: 7654321000WD1WD0BL1BL0WELWIPvWIP:是否忙于向E2PROM写数据。 “0”时表示没有写操作,可以写 数据; “1”时,表示正在写操作,此时不能向E2PROM 写数据。vWEL:写使能锁存器的状态。为“1”时表示写使能置位,为“0”时表示 写使能复位。vBL1,BL0:设置E2PROM的块锁保护地址范围,它们的组合关系如 表6.3所列
11、。vWD1、WD0:看门狗定时器时状态,两位是可编程位。看门狗定时值 选择如表6.4所示。(2)寄存器 指令寄存器 写使能寄存器 状态寄存器Date18表6.3 块锁保护选择BL1BL0写保护的 单元地址00没有保护01180H1FFH10100H1FFH11000H1FFH表6.4 看门狗定时选择WD1WD0看门狗定时值 (典型值)001.4s01600ms10200ms11禁止 看门狗工作Date192. X5045的读/写操作与时序 (1)X5045的读操作与时序v读存储器阵列图6.7(a) 读E2PROM阵列操作时序Date20v读状态寄器时时序图6.7(b) 读状态寄存器操作时序 D
12、ate21(2) X5045的写操作与时序 v写使能锁锁存器的操作时时序图6.8(a) 写使能锁存器操作时序Date22v字节节写操作时时序图6.8(b) 字节写操作操作时序Date23图6.8(c) 写状态寄存器操作操作时序 v写状态态寄存器操作时时序Date246.3.3 MCS-51单片机与X5045的接口电路图6.9 X5045与单片机典型接口电路 Date256.2.4 X5045应用软件设计实例v接口软件主要包括v以图6.9接口方式,下面给出X5045与单片机的软件接口子 程序。 芯片初始化子程序 设置使能锁存器子程序 复位写使能锁存器子程序 写状态寄存器子程序 读状态寄存器子程序
13、 字节写、字节读子程序 页读、页写子程序 复位看门狗定时器子程序Date26(1)初始化引脚、状态寄存器及命令字节定义 CSBIT P1.0;片选信号SI BIT P1.1;串行数据输入SCK BIT P1.2;串行时钟输 入SO BIT P1.3;串行数据输出STATUS_REG EQU 00H;赋状态寄存器初始值READ_INST EQU 03H;READ指令WRITE_INST EQU 02H;WRITE指令RDSR_INST EQU 05H;RDSR指令WREN_INST EQU 06H;WREN指令WRSR_INST EQU 01H;WRSR指令WRDI_INST EQU 04H;W
14、RDI指令命 令 名 称命令 格式内 容W RS R0000 0001写状态寄存器( 看门狗和块锁)W RI TE0000 A801 0把数据写入所选 地址的存储器阵 列(116字节 ) RE AD0000 A801 1从所选地址的存 储器阵列开始读 出数据 W RD I0000 0100复位写使能锁存 器(禁止写操作 ) RD SR0000 0101读状态寄存器W RE N0000 0110设置写使能锁存 器(允许写操作 )Date27(2)子程序名称: OUTBYT 【功能】:向X5045 E2PROM写入8地址或数据,高位在前 ,低位在后。 【入口参数】:欲写内容在A中 OUTBYT:M
15、OV R7,#08H;置循环次数8 OUTBYT1:CLR SCK RLC A;ACC的最高位送Cy MOV SI, C ;Cy送 X5045的SI SETB SCK DJNZ R7,OUTBYT1 ;循环8次 CLR SCK RET Date28(3)子程序名称:INBYT 【功能】:从X5045 E2PROM中读出8位数据,高位在前, 低位在后。 【出口参数】:A的内容为读出的8位数据 INBYT:MOV R7,#08H;置循环次数8 INBYT1: STEB SCKCLR SCK;SCK的下降沿数据出现在SO端MOV C,SO;数据输出端的数据送入C中RLC A DJNZ R7,INBY
16、T1RET Date29(4)子程序名称:WREN 【功能】:写使能锁存器,使E2PROM或状态寄存器可写。WREN:LCALL STAX;启动X5045操作MOV A, #WREN_INSTLCALL OUTBYT;发送WREN指令LCALL ENDX;结束X5045操作RET (5)子程序名称:WRDI【功能】:复位写使能锁存器,禁止写E2PROM或状态寄存器。WRDI:LCALL STAXMOV A, #WRDI_INSTLCALL OUTBYT ;发送WRDI指令LCALL ENDXRET Date30(6)子程序名称:WRSR【功能】:对状态寄存器中位BLI、BL0、WD1、WD0进行设置。 【入口参数】:A中是要写入状态寄存器值 WRSR:LCALL STAXMOV A,#WRSR_INST ;送WRSR指令(写状态寄存器01)LCALL OUTBYTEMOV A,#STATUS_REG;送状态寄存器值(00)LCALL OUT