第9章串行总线接口技术课件.ppt
《第9章串行总线接口技术课件.ppt》由会员分享,可在线阅读,更多相关《第9章串行总线接口技术课件.ppt(137页珍藏版)》请在三一办公上搜索。
1、1,2022/12/1,单片机原理与应用电子课件,第 9 章,串行总线接口技术,2022/12/1,2,本章主要内容,9.1 SPI串行总线接口技术9.2 I2C总线接口技术9.3 单总线(1-wire)接口,2022/12/1,3,第9章 串行总线接口技术,由于数据的串行传输连线少,因而采用串行总线扩展技术可以使系统的硬件设计简化,系统的体积减小,同时,系统的更改和扩充更为容易。 目前,单片机应用系统中常用的串行扩展总线有:I2C(Inter IC BUS)总线、SPI(Serial Peripheral Interface)总线、Microwire总线及单总线(1-Wire BUS)。 串
2、行扩展总线的应用是单片机目前发展的一种趋势。AT89系列单片机利用自身的通用并行线可以模拟多种串行总线时序信号,因此可以充分利用各种串行接口芯片资源。本章主要介绍I2C总线、SPI总线及单总线(1-Wire BUS)的基本知识、常用的串行总线接口器件及和单片机的接口应用。,2022/12/1,4,9.1 SPI串行总线接口技术,9.1.1 SPI串行总线简介 SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进
3、行通信以交换信息。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般包括以下四种信号:MOSI 主器件数据输出,从器件数据输入 MISO 主器件数据输入,从器件数据输出 SCLK 时钟信号,由主器件产生 /ss 从器件使能信号,由主器件控制,2022/12/1,5,SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 对于大多数不带SPI串行总线接口的AT89系列单片机来说,可以使用软件来模拟SPI的操作,包括串行时钟、数据输入和数据输
4、出。,2022/12/1,6,9.1.2 SPI串行接口A/D转换器TLC549及其软硬件设计 TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,通过SPI接口与单片机连接,从CLK输入的频率最高可达1.1MHz。 TLC549具有4MHz的片内系统时钟,片内具有采样保持电路,A/D转换时间最长17s,最高转换速率为40 000次/s。 TLC549的电源范围为+3V- +6V,功耗小于15Mw,总失调误差最大为0.5LSB,适用于电池供电的便携式仪表及低成本高性能的系统中。,2022/12/1,7,1.引脚功能TLC549有8个引脚,如图9-1所示。各引脚功能说明如下:REF+:
5、正基准电压输入端,2.5VREF+VCC+0.1V。REF-:负基准电压输入端, -0.1VREF-2.5V,且要求REF+ REF-1V。在要求不高时,也可将REF-接地,REF+接VCC。 AIN:模拟信号输入端,0AINVCC,当AINREF+时,转换结果为全1(FFH),AINREF-时,转换结果为全“”(00H)。/CS:芯片选择输入端,低电平有效。 DO:数据串行输出端,输出时高位在前,低位在后。 CLK:外部时钟输入端,最高频率可达1.1MHz。,图9-1 TLC549引脚图,2022/12/1,8,2TLC549的时序 TLC549的时序如图9-2所示。/CS变为低电平时,TL
6、C549芯片被选中,同时从DO端输出前次转换结果的最高有效位A7; 接着自CLK端输入个外部时钟信号,前个CLK信号输出上次转换结果的A6-A7位。 在第个CLK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第个CLK信号的下降沿使片内采样/保持电路进入保持状态并启动本次A/D开始转换。,图9-2 TLC549的时序,2022/12/1,9,TLC549没有启动控制端,只要读走前一次数据后马上就进行新的转换,转换完成后就进入保持状态,转换时间为36个系统时钟周期,最大为17uS。没有转换完成标志信号,只要采用延时操作即可控制每次读取数据的操作。3TLC549与单片机的接口 T
7、LC549与单片机的连接如图9-3所示。采用P1.0P1.2连接TLC549的串行接口。,图9-3 TLC549与单片机的硬件连接,2022/12/1,10,A/D转换的汇编语言程序:DO BIT P1.2CLK BIT P1.1CS BIT P1.0 TLC549_AD: CLR A ; TLC549 A/D转换子程序,转换结果在A中 CLR CLK MOV R5,#08H CLR CS ;选中TLC549 LOOP: SETB CLK ;产生时钟 NOP NOP NOP NOP MOV C,DO ;读取A/D转换的一位数据 RLC A ;左移进入A CLR CLK,2022/12/1,11
8、,NOP NOP DJNZ R5,LOOP ;判8次数据是否读完 SETB CS SETB CLK RET,2022/12/1,12,A/D转换的C语言程序:sbit DO = P12sbit CLK = P11sbit CS = P10bdata Unsigned char addata;sbit adin0 = addata 0; unsigned char TLC549 _ad(void) /*A/D转换程序*/ unsigned char i; Clk=0; CS=0; /*令CS为低选中TLC549*/ _nop_();,2022/12/1,13,for(i=0;i8;i+) /*循
9、环读取8位A/D转换结果*/ CLK =1; /*令CLK引脚为高,产生时钟*/ delay( ); /*延时*/ adin0 =DO; /*读取A/D转换后数据线的一位数据*/ addata = addata 1; /*左移一位,先读取为高位,后读为低位*/ CLK=0; /*令CLK恢复为0*/ _nop_( ); _nop_( ); return addata; /*返回A/D转换值*/void delay ( ) unsigned char i; for(i=0;i20;i+) ,2022/12/1,14,4简易数字电压表的设计举例 利用TLC549 A/D转换器设计一个简易数字电压表
10、,用4位LED显示器将被测电压显示出来,测量范围为0.000V-5.000V。将TLC549的、CLK、DO接到单片机的三条I/O口线, REF+、REF-直接接到Vcc、GND,模拟输入AIN接电位器的中心抽头,调节电位器即可改变被测输入电压值,硬件连接如图9-4所示。,图9-4 简易数字电压表硬件连接图,2022/12/1,15,软件设计的基本思路: 程序首先通过调用TLC549_ad( ),读取A/D转换结果存入addata,然后按公式u = addata /2555000(mV)计算电压值,再将u转换为4位BCD码送显示缓冲区,并调用显示程序disp_ad( )将其转换为字型码显示出来
11、,显示格式为x.xxxx,单位为v。程序请参照课本.,2022/12/1,16,9.1.3 SPI串行接口D/A转换器TLC5615及其软硬件设计 TLC5615 是SPI接口的10位电压输出的D/A转换器,通过3根串行总线就可以完成10 位数据的串行输入,易于和工业标准的微处理器或单片机接口,适用于电池供电的测量仪表、移动电话以及工业控制场合。其主要特点如下:5V单电源工作;3 线串行接口;DAC 输出的最大电压为2 倍基准输入电压; 上电时内部自动复位,确保可以重复启动;功耗低,最大功耗为1.75mW。,2022/12/1,17,1TLC5615的内部结构和引脚功能 TLC5615的内部结
12、构如图9-5所示,内部包含: 一个电压跟随器为参考电压端REFIN提供高输入阻抗 ; 10位DAC2 电路提供最大值为2倍于REFIN 的输出; 一个16 位移位寄存器, 接受串行移入的二进制数,并且有一个级联的数据输出端DOUT; 并行输入输出的10位DAC寄存器, 为10位DAC电路提供待转换的二进制数据。,图9-5 TLC5615的内部结构,2022/12/1,18,TLC5615的引脚如图9-6所示,各引脚功能如下:DIN:串行二进制数输入端 SCLK:串行时钟输入端/CS:芯片选择,低有效 DOUT:菊花链的串行数据输出端(用于多芯片的级联) REFIN:基准电压输入端 OUT:DA
13、C 模拟电压输出端,图9-6 TLC5615的引脚,2022/12/1,19,2、TLC5615的时序 TLC5615的时序如图9-7所示。/CS当为低电平时,在每一个SCLK时钟的上升沿从DIN 引脚移入一位数据,高位在前,低位在后。经16个时钟后,/CS的上升沿将16 位移位寄存器的10 位有效数据锁存到10位DAC寄存器, 供DAC电路进行转换。,图9-7 TLC5615的时序,2022/12/1,20,16位数据的高4位和低2位不会被转换,待转换数据输入的格式见表9-1:,设n为待转换的数字量,VREFIN为基准输入电压,则转换后的输出电压: VOUT=2VREFINn/1024,表9
14、-1 D/A转换数据输入格式,2022/12/1,21,3TLC5615与单片机的接口 TLC5615与单片机的硬件如图9-7所示,将TLC5615的SCLK、DIN分别与单片机的P1.0、P1.1、P1.2相连,基准电压接+5V。,图9-8 TLC5615与单片机的硬件连接,2022/12/1,22,D/A转换汇编语言程序:设要转换的数据放在R7R6中,R7为高8位,R6低8位 DIN BIT P1.2 ;引脚定义 CS BIT P1.1 SCLK BIT P1.0 TLC5615_DA:CLR C;将R7R6中数据左移2位(16位数据的最低2位添00) RLC R6 RLC R7 CLR
15、C RLC R6 RLC R7 SETB CS ;初始化片选信号为高 CLR SCLK ;初始化时钟为低 CLR DIN;D/A数据线置低 CLR CS;选中TLC5615,开始启动D/A MOV R5,#16 ;将16位数据从DIN端移进内部的16位移位寄存器,2022/12/1,23,LOOP: RLC R6;R7R6中数据左移一位,最高位进入CY RLC R7 MOV DIN,C;将数据送到DIN引脚 SETB SCLK ; 送时钟 NOPNOPNOPCLR SCLK;NOPNOPNOP DJNZ R5,LOOPSETB CS ;D/A片选拉高,10 位有效数据锁存到DAC寄存器,开始转
16、换 RET,2022/12/1,24,D/A转换C语言程序:sbit DA_clk=P10; /*引脚定义*/sbit DA_ cs=P11; sbit DA_in=P12; void delay_s(unsigned char n) /*延时*/ unsigned char i; for(i=0;in;i+); void TLC5615_DA_conver(unsigned int DA_data) /* D/A转换程序*/ unsigned char i; DA_data = DA_data 2; /*将数据左移2位(最低2位添00) */ DA_cs=1; /*初始化片选信号为高*/ D
17、A_clk=0; /*初始化时钟为低*/ DA_in=0; /*D/A数据线置低*/ DA_cs=0; /*选中TLC5615,开始启动D/A*/ for(i=0;i16;i+) /*将16位数据从DIN端移进内部的16位移位寄存器*/,2022/12/1,25, DA_data = DA_data 1; /*左移一位,最高位进入CY*/ DA_in=CY;/*将数据送到DIN引脚*/ DA_clk=1;delay_s(0 x02); /*送时钟*/ DA_clk=0;delay_s(0 x02); DA_cs=1; / *片选拉高,10 位数据锁存到DAC寄存器,开始转换*/ delay_s
18、(0 x20); ,2022/12/1,26,4.用TLC5615设计简易信号发生器 图9-9是用TLC5615设计简易信号发生器的硬件接口电路。系统实现上电后产生矩形波,当S1按下时产生正弦波,当S2按下时产生三角波。,图9-9简易信号发生器的硬件接口电路,程序略,2022/12/1,27,9.2 I2C总线接口技术,I2C总线是PHLIPS公司推出的一种高性能芯片间简单、双向二线制同步串行总线,数据传输时只需两根信号线,一根是双向数据线SDA,另一根是时钟线SCL,所有连接到I2C总线上的串行器件,其数据线都连接到总线的SDA上,时钟线则连接到总线的SCL上。9.2.1 I2C总线简介1.
19、I2C总线的主要特点有: 总线只有两根线,即串行时钟线(SCL)和串行数据线(SDA),这在设计中大大减少了硬件接口。,2022/12/1,28,每个连接到总线上的器件都有一个用于识别的器件地址,器件地址由芯片内部硬件电路和外部地址引脚同时决定,避免了片选线的连接方法,并建立简单的主从关系,每个器件既可以作为发送器,又可以作为接收器。 同步时钟允许器件以不同的波特率进行通信。 同步时钟可以作为停止或重新启动串行口发送的握手信号。 串行的数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。 连接到同一总线的集成电路数只受400pF
20、的最大总线电容的限制。,2022/12/1,29,2.I2C总线系统结构 I2C总线的系统结构如图9-10所示。采用I2C总线标准的器件均并联在总线上,内部都有I2C接口电路,用于实现和I2C总线的连接。I2C总线上的每一个从器件均有一个唯一的地址,用于识别不同的器件。,图9-10 I2C总线的系统结构,2022/12/1,30,3 .I2C总线的工作时序 当I2C总线没有进行信息传送时,数据线(SDA)和时钟线(SCL)都为高电平时。当主控制器向某个器件传送信息时,首先应向总线送开始信号,然后才能传送信息,当信息传送结束时应送结束信号,如图9-11所示。,图9-11 I2C总线的工作时序,2
21、022/12/1,31,开始信号和结束信号规定如下:开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 开始信号和结束信号之间传送的是信息,信息的字节数没有限制,但每个字节必须为8位,高位在前,低位在后。 数据线SDA上每一位信息状态的改变只能发生在时钟线SCL为低电平的期间,因为SCL高电平期间SDA状态的改变已经被用来表示开始信号和结束信号。 每个字节后面必须接收一个应答信号(ACK),ACK是从控制器在接收到8位数据后向主控制器发出的特定的低电平脉冲,用以表示已收到数据。 主控制器接收到应答信号(A
22、CK)后,可根据实际情况作出是否继续传递信号的判断。若未收到ACK,则判断为从控制器出现故障。,2022/12/1,32,主控制器每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,从第三个字节开始为传送的数据。其中器件地址码格式如表9-2所示。,表9-2 I2C总线上器件地址码格式,2022/12/1,33,I2C总线上的每一个从器件均有一个唯一的地址,每次主器件发出起始信号后,必须接着发出一个字节的器件地址,以选取挂在总线上的某一从器件并控制总线的传输方向。器件类型码:表示器件的类型,出厂时根据PHILIPS公司的I2C规程确定,比如对
23、于24C02芯片来说,器件标识地址为1010。片选地址:当总线上有多片同类器件时,只有器件引脚A2A0的电平与器件地址中A2A0同相的器件才能被选中 。R/W操作控制位,为1表示读操作,为0表示写操作。 说明: 器件地址只表明选择挂在总线的哪一个器件及数据传送方向,而器件内部的地址是由编程者在传送第一个数据时指定的,即第一个数据为器件内的子地址。,2022/12/1,34,4. I2C总线读、写操作 (1)当前地址读 该操作将从所选器件当前地址执行读操作,读的字节数不指定,格式见表9-3所示,表9-3 当前地址读操作格式,(2)指定单元读 该操作将从所选器件指定地址读,读的字节数不指定,格式见
24、表9-4所示。,表9-4 指定地址读操作格式,2022/12/1,35,(3)指定单元写 该操作将从所选器件指定地址写,写的字节数不指定,格式见表9-5所示。,表9-5指定地址写操作格式,其中:S表示开始信号,A表示应答信号,P表示结束信号。,2022/12/1,36,9.2.2用I/O口模拟I2C总线操作子程序 目前不少的单片机内部集成了I2C总线接口,如MCS-51系列的8XC550、8XC552、8XC571等,低价位的单片机内部虽然没有集成I2C总线接口,但可以通过软件实现I2C总线操作。 假设采用89S51单片机,晶振频率为12MHz,即机器周期为1us,使用P1.0作为数据线SDA
25、, P1.1作为时钟线SCL。SCL BIT P1.1;汇编语言定义端口SDA BIT P1.0sbit SDA=P10; /C语言定义端口sbit SCL=P11; bit ack; /应答标志位,有应答为1,无应答为0#define DELAY5US _nop_();_nop_();_nop_();_nop_();_nop_(); 根据I2C总线数据传送的典型信号时序要求,可用单片机I/O口线产生起始信号、停止信号、应答信号、非应答信号等。汇编语言和C语言程序如下:,2022/12/1,37,1.产生起始信号 S汇编语言程序: START:SETB SDA;发送起始条件数据信号SETBSC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 总线接口 技术 课件
链接地址:https://www.31ppt.com/p-1489046.html