《《清华单片机》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《清华单片机》PPT课件.ppt(35页珍藏版)》请在三一办公上搜索。
1、第八章 常用串行总线介绍及 应用,8.1 1-wire总线,目前单片机应用系统比较常见的串行扩展接口和串行扩展总线有:1-Wair单总线、SPI串行总线、IIC总线。,1-wire单总线采用单根信号线,既可以传输时钟又可以传输数据,而且数据传输是双向的。它具有节省I/O口资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。1-wire单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作,而当多个从机位于总线上时则系统按照多节点系统操作。我们以单总线温度传感器DS18B20的应用为例,详细介绍1-wire的应用。,8.1.1 DS18B2
2、0的简介,DS18B20可以程序设定912位的分辨率,测量温度范围为-55C+125C,在-10+85C范围内,在-10+85C范围内,精度为0.5C。可选更小的封装方式,更宽的电压适用范围,新的产品支持3V5.5V的电压范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。温度以单总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等,使系统设计更灵活、方便。,8.1.2 DS18B20的引脚及内部结构,1.DS18B20的封装DS18B20的封装采用TO-92和8-Pin SOIC封装,外形及管脚
3、排列如图8-1。DS18B20引脚定义:GND 为电源地。DQ 为数字信号输入/输出端。VDD 为外接供电电源输入端(在寄生 电源接线方式时接地)。NC 空引脚。,2.DS18B20的构成DS18B20内部结构图如图8-2所示。主要包括:寄生电源、温度传感器、64位激光(lasered)ROM、存放中间数据的高速暂存器RAM、非易失性温度报警触发器TH和TL、配置寄存器等部分。,1)寄生电源寄生电源由二极管VD1、VD2、寄生电容C和电源检测电路组成,电源检测电路用于判定供电方式,DS18B20有两种供电方式:3V5.5V的电源供电方式和寄生电源供电方式(直接从数据线获取电源)。寄生电源供电时
4、,VCC端接地,器件从单总线上获取电源。当I/O总线呈低电平时,由电容C上的电压继续向器件供电。该寄生电源有两个优点:第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。2)64位只读存储器ROMROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。64位光刻ROM序列号的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。,3)温度传感器D
5、S18B20中的温度传感器可以完成对温度的测量。DS18B20的温度测量范围是-55+125,分辨率的默认值是12位。DS18B20温度采集转化后得到16位数据,存储在DS18B20的两个8位RAM中,高字节的高5位S代表符号位,如果温度值大于或等于零,符号位为0;温度值小于零,符号位为1。低字节的第四位是小数部分,中间7位是整数部分。4)内部存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPROM,EEPROM用于存放高温度和低温度触发器TH、TL和配置寄存器的内容。高速暂存存储器由9个字节组成。,5)配置寄存器暂存器的第五字节是配置寄存器,可以
6、通过相应的写命令进行配置其内容如下表:低五位一直都是“1”,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置DS18B20的分辨率。,8.1.3 单总线开发使用,单总线的开发使用过程分三步:1)单总线的硬件连接结构;2)单总线的操作命令序列;3)单总线的通信协议,总线的操作时序。1硬件结构主机或从机通过一个漏极开路或三态端口连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。,为了使总线上所有电路的输出能完成“线与”的功能,连接到总线上的器件的输出级必须为“开漏”或“开集”的
7、形式。其内部等效电路如图8-3所示,单总线操作命令序列典型的单总线命令序列如图8-4所示,每次访问单总线器件,必须严格遵守这个命令序列,否则,单总线器件不会响应主机。但是,这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回,从初始化开始。,1)初始化基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道总线上有从机设备,且准备就绪。复位和应答脉冲的时间详见单总线信号部分。2)ROM操作命令在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位
8、ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态。从机设备可能支持5种ROM命令(实际情况与具体型号有关)每种命令长度为8位,主机在发出功能命令之前,必须送出合适的ROM命令。以下为几个ROM命令的功能:,(1)搜索ROMF0h命令(2)读ROM33h命令(仅适合于单节点)(3)匹配ROM55h命令(5)报警搜索ECh命令(仅少数1-wire器件支持)(4)跳越ROMCCh命令(仅适合于单节点)3)功能命令在主机发出ROM命令,以访问某个指定的DS18B20,接着就可以发出D
9、S18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20暂存器、启动温度转换以及判断从机的供电方式。,3单总线数据通讯协议数字式温度传感器和模拟传感器最大的区别,是将温度信号直接转化成数字信号,然通过串行通信方式输出。所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲序列;写0、写1、和读0、读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在前)。1)初始化序列复位和应答脉冲单总线上的所有通信都是以初始化序列开始。主机通过拉
10、低单线480us以上,产生复位脉冲,然后释放该线,进入Rx接收模式。主机释放总线时,4.7K的电阻将单总线拉高,产生一个上升沿。单线器件DS18B20检测到该上升沿后,延时1560us,DS18B20通过拉低总线60240us来产生应答脉冲。主机接收到从机的应答脉冲后,说明有单线器件在线。,总线初始化脉冲时序图如图8-5:2)写时隙 当主机将单总线DQ从逻辑高(空闲状态)拉为逻辑低时,即启动一个写时序。存在两种写时隙:“写1”和“写0”。主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。所有写时隙至少需要60us,且在两次独立的写时隙之间至少需要1us的恢复时间。,两种写时隙均起始于主
11、机拉低总线(图8-6所示)。产生写1时隙的方式:主机在拉低总线后,接着必须在15 us之内释放总线(向总线写1),由4.7K上拉电阻将总线拉至高电平;而产生写0时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60us)。在写时隙起始后15-60 us期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,则逻辑1被写入该器件;如果为0,则写入逻辑0。,3)读时隙 总线器件仅在主机发出读时隙时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60us,且在两次独立的读时隙之间至少需要1us的恢复时间。每个读时隙都
12、由主机发起,至少拉低总线1us 图8-7所示。,DS18B20的编程注意事项:较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。每次执行相应操作时,都应该遵循单总线的命令周期,复位ROM命令功能命令,否则无法完成命令。从DS18B20中读取温度数据,是按照先低字节再高字节,先低位(LSB)再高位(MSB的顺序读取。,8.2 IIC总线接口,IIC总线是PHILIPS公司推出的串行总线,它是一种简单、双向二线制同步串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息
13、。易于扩展凡是具有IIC接口的器件都可以挂接在IIC总线上。,8.2.1 IIC总线简介,下面是IIC总线的一些特征:1只要求两条总线线路 一条串行数据线 SDA 一条串行时钟线 SCL。2 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机 从机关系软件设定地址 主机可以作为主机发送器或主机接收器。3 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。4串行的8位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s。5片上的滤波器可以滤去总线数据线上的毛刺波 保证
14、数据完整。6连接到相同总线的IC数量只受到总线的最大电容400pF限制。,8.2.2 IIC总线数据的通信协议,1IIC接口 IIC总线接口的电气结构如图8-9,IIC总线的串行数据线SDA和串行时钟线SCL必须经过上拉电阻Rp接到正电源上。当总线空闲时,SDA和SCL必须保持高电平。为了使总线上所有电路的输出能完成“线与”的功能,连接到总线上的器件的输出级必须为“开漏”或“开集”的形式,所以总线上需加上拉电阻。,2起始和终止信号对IIC器件的操作总是从一个规定的启动(Start)时序开始,即SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据;信息传输完成后总是以一个规定的停止(Sto
15、p)时序结束,即SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。时序图如图8-10。起始信号和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生一段时间后,总线就处于空闲状态。,在进行数据传输时,SDA线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变,如图8-11所示。,3字节数据传送及应答信号IIC总线传送的每个字节均为8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个应答信号。首先传输的是数据的最高位,如图8-12所示,主控器件发送时钟脉冲信号,并在时钟信号的高电平期间保持数据
16、线(SDA)的稳定。由最高位开始一位一位的发送完一个字节后,在第9个时钟高脉冲时,从机输出低电平作为应答信号,表示对接收数据的认可,应答信号用ACK表示。,4完整的数据传送IIC数据的传输遵循上图 8-12 所示的格式。先由主控器发送一个启动信号(S),随后发送一个带读/写(R/W)标记的从地址字节(SLAVE ADDRESS),从机地址只有7位长,第8位是“读/写(R/W),用来确定数据传送的方向。1)写格式对于写格式,从机地址中第八位R/W应为0,表示主机控制器将发送数据给从机,从机发送应答信号(A)表示接收到地址和读写信息,接着主机发送若干个字节,每个字节后从机发送一个应答位(A)。注意
17、根据具体的芯片功能,传送的数据格式也有所不同。主机发送完数据后,最后发送一个停止信号(P),表示本次传送结束。,2)读格式主机发送从机地址(SLAVE ADDRESS)时将R/W设位1,则表示主机将读取数据,从机接收到这个信号后,将数据传送到数据线上(SDA),主机每接收到一个字节数据后,发送一个应答信号(A)。当主机接收完数据后,发送一个非应带信号(/A),通知从机表示接收完成,然后再发送一个停止信号。,8.2.3 IIC总线串行存储器AT24C02,1AT24C02简介AT24C02是美国ATMEL公司的串行EEPROM芯片,提供2Kbits的EEPROM存储空间,也就是256个字节的存储
18、空间。该芯片有页写功能,数据保存可到100年。2AT24C02的使用1)确定从机即AT24C02的地址AT24C02的地址字节格式如表8-2。高半字节是出厂固定的数据,A2、A1、A0由有引脚确定,本例中将三引脚全部接低电平。,2)对AT24C02写操作(1)字节写在字节写模式下,主器件发送起始命令和从器件地址信息(R/W位置零)给从器件,在从器件产生应答信号后,主器件发送AT24C02的字节地址(即写入的数据在AT24C02中存放的地址)。主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主器件产生停止信号后开始内部数据的擦写。在内部擦写过程中
19、AT24C02不再应答主器件的任何请求。,(2)页写用页写 AT24C02可以一次写入 16个字节的数据,页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号(主器件被允许发送15个额外的字节),每发送一个字节数据后AT24C02产生一个应答位,并将字节地址低位加 1,高位保持不变。如果在发送停止信号之前主器件发送超过16个字节,即字节地址的地位满16,地址计数器将自动翻转,将低位清零,高位不变,继续写入。先前写入的数据被覆盖。接收到16字节数据和主器件发送的停止信号后AT24C02启动内部写周期将数据写到数据区,所有接收的数据在一个写周期内写入AT24C02。,3)对AT2
20、4C02读操作当从器件的R/W位被置1,启动读操作。存在三种基本读操作:读当前地址内容,读指定地址内容,读连续地址内容。(1)读当前地址内容AT24C02片内包含一个地址计数器,此计数器保持被存取的最后一个字的地址,并在片内自动加1,因此,如果以前存取的地址为n,则下一个读操作从n+1地址中读出数据。在接收到从器件的地址中R/W位为1的情况下,AT24C02发送一个确认位并且发送8位数据。主器件接收到8位数据后,产生一个非响应信号(NACK),再发送一个停止信号,AT24C02就不再发送数据。,(2)读指定地址内容指定地址读操作允许主器件对AT24C02的任意字节进行读操作,主器件首先通过发送
21、起始信号、从器件地址和它想读取的字节数据的地址,执行一个伪写操作。在AT24C02 应答之后,主器件重新发送起始信号和从器件地址此时R/W 位置1,AT24C02响应并发送应答信号,然后输出所要求的一个8 位字节数据,主器件不发送应答信号但产生一个停止信号。(3)读连续地址内容读连续地址内容可通过立即读或选择性读操作启动。在AT24C02 发送完一个8 位字节数据后,主器件产生一个应答信号来响应,告知AT24C02主器件要求更多的数据,对应每个主机产生的应答信号AT24C02 将发送一个8 位数据字节。当主器件不发送应答信号而发送非应答信号和停止信号时结束此操作。,8.3 SPI总线扩展接口及
22、应用8.3.1 SPI简介,串行外设接口(Serial Peripheral Interface,SPI)是一种同步串行外设接口,允许MCU与各种外围设备以同步串行方式进行通信来交换信息。与IIC总线不同,SPI总线采用四线方式:SCK 串行时钟线MISO 主机输入/从机输出线MOSI 主机输出/从机输入线CS/SS 低电平有效的从机选择线SPI总线只需要34根线就可以实现与外设的通信,因此采用SPI总线接口可以简化硬件电路的设计,尤其在单片机端口紧张时使用SPI总线,可以解决I/O不够用的问题。,8.3.2 SPI接口系统,使用单片机作为主机来控制数据,并向一个或多个从机外围器件传送数据。从
23、机只有在主机发送命令时才能接收或发送数据。数据的传输格式是高位(MSB)在前,低位(LSB)在后。SPI总线接口系统典型的结构如图8-13:,8.3.3 SPI通信协议,SPI 模块输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设的时钟相位和极性应该一致。但是大多数的51单片机没有SPI模块接口,通常使用软件的办法来模拟SPI的总线操作,包括串行时钟、数据输入和输出。值得注意的是,对于不同的串行接口外围芯片,他们的时钟时序有可能不同。,按SPI数据和时钟的相位关系来看,通常有4种情况,这是由片选信号有效前的SCK电平和数据传送时的SCK有效沿区分的,传送8位数据的时序种类具体如图8-14所示 由时序图可知:1.SPI总线是边沿信号触发信号传送,数据传送的格式是高 位在前,低位在后。2.片选信号是低电平有效,数据在片选有效时进行数据的传送,无效时停止数据传送。3.片选信号的跳变发生在时钟SCK低电平时。,