第10章串行扩展.ppt

上传人:春哥&#****71; 文档编号:15608400 上传时间:2022-05-13 格式:PPT 页数:89 大小:710.50KB
返回 下载 相关 举报
第10章串行扩展.ppt_第1页
第1页 / 共89页
第10章串行扩展.ppt_第2页
第2页 / 共89页
点击查看更多>>
资源描述

《第10章串行扩展.ppt》由会员分享,可在线阅读,更多相关《第10章串行扩展.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、课程主讲人:第10章 串行扩展2 第第10章章 AT89S52单片机单片机 系统的串行扩展系统的串行扩展3 目前,常用的串行扩展总线接口有目前,常用的串行扩展总线接口有单总线单总线(1-Wire)、)、SPI串行外设接串行外设接口口以及以及I2C(Inter Interface Circuit)串行总线接口,本章介绍这几种串行)串行总线接口,本章介绍这几种串行扩展接口总线的工作原理及特点以及典型设计案例。扩展接口总线的工作原理及特点以及典型设计案例。 410.1 单总线串行扩展单总线串行扩展 单总线单总线(也称(也称1-Wire bus)由美国)由美国DALLAS公司推出的外围串行扩展总公司推

2、出的外围串行扩展总线。只有一条数据输入线。只有一条数据输入/输出线输出线DQ,总线上所有器件都挂在,总线上所有器件都挂在DQ上,上,电源也通电源也通过这条信号线供给过这条信号线供给。 单总线系统中配置的各种器件,由单总线系统中配置的各种器件,由DALLAS公司提供的公司提供的专用芯片专用芯片实现。实现。每个芯片都有每个芯片都有64位位ROM,厂家对每一芯片都用激光烧写编码,其中存有,厂家对每一芯片都用激光烧写编码,其中存有16位位十进制编码序列号十进制编码序列号,它是,它是器件的地址编号器件的地址编号,确保它挂在总线上后,可以唯一,确保它挂在总线上后,可以唯一被确定。除了器件的地址编码外,芯片

3、内还包含被确定。除了器件的地址编码外,芯片内还包含收发控制收发控制和和电源存储电源存储电路,电路,见见图图10-1。这些。这些芯片耗电量都芯片耗电量都很小很小(空闲时几(空闲时几W,工作时几,工作时几mW),工作时),工作时从总线上馈送电能到大电容中从总线上馈送电能到大电容中就可以工作,故一般不需另加电源。就可以工作,故一般不需另加电源。5图图10-1 单总线芯片内部结构示意图单总线芯片内部结构示意图610.1.1 10.1.1 单总线扩展的典型应用单总线扩展的典型应用-DS18B20-DS18B20的温度测量系统的温度测量系统 单总线应用单总线应用典型案例典型案例是采用单总线温度传感器是采用

4、单总线温度传感器DS18B20DS18B20温度测量系统。温度测量系统。1. 1. 单总线温度传感器单总线温度传感器DS18B20DS18B20简介简介 DS18B20 DS18B20是美国是美国DALLASDALLAS公司生产的数字温度传感器公司生产的数字温度传感器, ,测量温度范围测量温度范围-55-55+128+128,测量精度可达,测量精度可达0.50.5,体积小、低功耗、抗干扰能力强。,体积小、低功耗、抗干扰能力强。现场现场温度的测量直接通过温度的测量直接通过“单总线单总线”以数字方式传输,大大提高了系统的抗干以数字方式传输,大大提高了系统的抗干扰性。扰性。非常适合于恶劣环境非常适合

5、于恶劣环境的现场温度测量,也可用于的现场温度测量,也可用于各种狭小空间内设各种狭小空间内设备备的测温,如环境控制、过程监测、测温类消费电子产品以及多点温度测的测温,如环境控制、过程监测、测温类消费电子产品以及多点温度测控系统等。由于控系统等。由于DS18B20DS18B20可直接将温度转化成数字信号传送给单片机处理可直接将温度转化成数字信号传送给单片机处理,因而,因而可省去传统的信号放大、可省去传统的信号放大、A/DA/D转换转换等外围电路。等外围电路。 图图10-210-2为单片机与多个带有单总线接口的数字温度传感器为单片机与多个带有单总线接口的数字温度传感器DS18B20DS18B20芯片

6、芯片的分布式温度监测系统,图的分布式温度监测系统,图10-210-2中多个中多个DS18B20DS18B20都挂在单片机的都挂在单片机的1 1根根I/OI/O口线(口线(即即DQDQ线)上。线)上。单片机对每个单片机对每个DS18B20DS18B20通过总线通过总线DQDQ寻址。寻址。DQDQ为漏极开路,须加上拉电阻。为漏极开路,须加上拉电阻。 DS18B20的一种的一种封装形式封装形式如图如图10-2所示。除所示。除DS18B20外,在该数字温外,在该数字温度传感器系列中还有度传感器系列中还有DS1820、DS18S20、DS1822等其他型号产品,工作原等其他型号产品,工作原理与特性基本相

7、同。理与特性基本相同。 图图10-2 单总线构成的分布式温度监测系统单总线构成的分布式温度监测系统 片内有片内有9个字节个字节的的高速暂存器高速暂存器RAM单元单元,9个字节个字节具体分布如下:具体分布如下: 第第1字节字节和和第第2字节字节是在单片机发给是在单片机发给DS18B20温度转换命令发布后,经温度转换命令发布后,经转换所得的温度值,以两字节补码形式存放其中。一般情况下,用户多使转换所得的温度值,以两字节补码形式存放其中。一般情况下,用户多使用第用第1字节和第字节和第2字节。单片机通过单总线可读得该数据,读取时低位在前字节。单片机通过单总线可读得该数据,读取时低位在前,高位在后。,高

8、位在后。 第第3、4字节字节分别是由软件写入用户报警的上下限值分别是由软件写入用户报警的上下限值TH和和TL。 第第5个字节个字节为为配置寄存器配置寄存器,可对其更改,可对其更改DS18B20的测温分辨率,的测温分辨率, 第第6、7、8字节字节未用,为全未用,为全1。 第第9字节字节是前面所有是前面所有8个字节的个字节的CRC码,用来保证正确通信。片内还有码,用来保证正确通信。片内还有1个个E2PROM为为TH、TL以及配置寄存器的映像。以及配置寄存器的映像。第第5 5个字节的配置寄存器各位的定义如下:个字节的配置寄存器各位的定义如下: 其中,其中,TMTM位位出厂时已被写入出厂时已被写入0

9、0,用户不能改变;,用户不能改变;低低5 5位位都为都为1 1;R1R1和和R0R0用用来设置分辨率。来设置分辨率。表表10-110-1列出了列出了R1R1、R0R0与分辨率和转换时间的关系。用户可通过与分辨率和转换时间的关系。用户可通过修改修改R1R1、R0R0位位的编码,的编码,获得合适的分辨率获得合适的分辨率。11 由由表表10-1,DS18B20转换时间与分辨率有关。当设定为转换时间与分辨率有关。当设定为9位位时,转换时时,转换时间为间为93.75ms;设定;设定10位位时,转换时间为时,转换时间为187.5 ms;当设定;当设定11位位时,转时,转换时间为换时间为375ms;当设定为

10、;当设定为12位位时,转换时间为时,转换时间为750ms。 表表10-2列出了列出了DS18B20温度转换后所得到的温度转换后所得到的16位转换结果的典型值。位转换结果的典型值。12下面介绍温度转换的计算方法。下面介绍温度转换的计算方法。当当DS18B20DS18B20采集的温度为采集的温度为+125+125时,时,输出为输出为0 x07d00 x07d0,则:,则: 实际温度实际温度= =(0 x07d00 x07d0)/16=(0/16=(016163 3+7+716162 2+13+1316161 1+0+016160 0)/16=125)/16=125 当当DS18B20DS18B20

11、采集的温度为采集的温度为-55-55时,时,输出为输出为0 xfc900 xfc90,由于是补码,则先,由于是补码,则先将将1111位数据取反加位数据取反加1 1得得0 x03700 x0370,注意符号位不变,也不参加运算,则,注意符号位不变,也不参加运算,则 实际温度实际温度=(0 x0370)/16=(06=(016163 3+3+316162 2+7+716161 1+0+016160 0)/16=55)/16=55 注意,注意,负号则需对采集的温度进行判断后,再予以显示。负号则需对采集的温度进行判断后,再予以显示。132. DS18B20的工作时序的工作时序 工作时序要求严格,延时时

12、间需准确,否则容易出错。工作时序要求严格,延时时间需准确,否则容易出错。 DS18B20的工作时序包括的工作时序包括初始化时序初始化时序、写时序写时序和和读时序读时序。(1)初始化时序)初始化时序,单片机,单片机将数据线将数据线电平拉低电平拉低480960s后释放,等待后释放,等待1560s,单总线器件即可输出一持续,单总线器件即可输出一持续60240s的低电平,单片机的低电平,单片机收到此收到此应答后应答后即可进行操作。即可进行操作。(2)写时序)写时序,当单片机将数据线电平从高拉到低时,产生写时序,有,当单片机将数据线电平从高拉到低时,产生写时序,有写写“0”和和写写“1”两种时序。写时序

13、开始后,两种时序。写时序开始后,DS18B20在在1560s期间从数据期间从数据线上采样。如果采样到线上采样。如果采样到低电平低电平,则向,则向DS18B20写的是写的是“0”;如果采样到;如果采样到高高电平电平,则向,则向DS18B20写的是写的是“1”。这两个独立时序间至少需拉高总线电平。这两个独立时序间至少需拉高总线电平1s时间。时间。14(3)读时序)读时序,当单片机从,当单片机从DS18B20读取数据时,产生读时序。此时单读取数据时,产生读时序。此时单片机将数据线电平从高拉到低使读时序被初始化。如果在此后片机将数据线电平从高拉到低使读时序被初始化。如果在此后15s内,单内,单片机在数

14、据线上采样到低电平,则从片机在数据线上采样到低电平,则从DS18B20读的是读的是“0”;如果在此后的;如果在此后的15s内,单片机在数据线上采样到高电平,则从内,单片机在数据线上采样到高电平,则从DS18B20读的是读的是“1”。3. DS18B20的命令的命令DS18B20片内都有唯一的片内都有唯一的64位光刻位光刻ROM编码,出厂时已刻好。它是编码,出厂时已刻好。它是DS18B20的地址序列码,目的是使每个的地址序列码,目的是使每个DS18B20的地址都不相同,这样就的地址都不相同,这样就可实现在一根总线上挂接多个可实现在一根总线上挂接多个DS18B20的目的。的目的。64位光刻位光刻R

15、OM的各位定义的各位定义如下:如下: DS18B20所有命令均为所有命令均为8位长,常用的命令代码见位长,常用的命令代码见表表10-3。8位产品类型标号位产品类型标号DS18B20的的48位自身序列号位自身序列号8位位CRC码码15表表10-3 DS18B20的部分命令的部分命令下面介绍下面介绍表表10-3中命令的用法。当主机需要对多个单总线上的某一中命令的用法。当主机需要对多个单总线上的某一DS18B20进行操作时,首先应将主机逐个与进行操作时,首先应将主机逐个与DS18B20挂接,读出其序列号(挂接,读出其序列号(33H);然后再将所有的);然后再将所有的DS18B20挂接到总线上,单片机

16、发出匹配挂接到总线上,单片机发出匹配ROM命令命令(55H),紧接着主机提供的),紧接着主机提供的64位序列号之后的操作就是针对该位序列号之后的操作就是针对该DS18B20的的。如果主机只对一个如果主机只对一个DS18B20进行操作,就不需要读取进行操作,就不需要读取ROM编码以及匹配编码以及匹配ROM编码,只要用跳过编码,只要用跳过ROM(CCH)命令,就可按)命令,就可按表表10-4执行如下温度转执行如下温度转换和读取命令。换和读取命令。表表10-4 DS18B20的部分命令的部分命令1810.1.2 设计案例:设计案例:单总线单总线DS18B20温度测量系统温度测量系统【例例10-1】利

17、用利用DS18B20和和LED数码管实现单总线温度测量系统,原理数码管实现单总线温度测量系统,原理电路见电路见图图10-3。DS18B20测量范围是测量范围是55128。本例。本例只显示只显示0099。通。通过本例读者应掌握过本例读者应掌握DS18B20特性及单片机特性及单片机I/O实现实现单总线协议单总线协议的方法。的方法。Proteus仿真时,用手动,即用鼠标单击仿真时,用手动,即用鼠标单击DS18B20图标上的图标上的“”或或“”来改变温度,注意手动调节温度同时,来改变温度,注意手动调节温度同时,LED数码管会显示出与数码管会显示出与DS18B20窗口窗口相同的相同的2位温度数值。位温度

18、数值。电路中电路中74LS47是是BCD-7段译码器段译码器/驱动器驱动器,用于将单片机,用于将单片机P0口输出欲显示口输出欲显示的的BCD码转化成相应的数字显示的段码,并直接驱动码转化成相应的数字显示的段码,并直接驱动LED数码管显示。数码管显示。19图图10-3 单总线单总线DS18B20温度测量与显示系统温度测量与显示系统20参考程序参考程序如下:如下:#include reg51.h#include reg51.h#include intrins.h#include intrins.h#define uchar unsigned char#define uchar unsigned c

19、har#define uint unsigned int #define uint unsigned int #define out P0#define out P0sbit smg1=out4;sbit smg1=out4;sbit smg2=out5;sbit smg2=out5;sbit DQ=P37;sbit DQ=P37;void delay5(uchar);void delay5(uchar);void void init_ds18b20init_ds18b20(void);(void);ucharuchar readbyte readbyte(void);(void);void

20、void writebytewritebyte(uchar);(uchar);uchar uchar retempretemp(void);(void);21void main(void)void main(void) /主函数主函数 uchar i,temp;uchar i,temp;delay5(1000);delay5(1000);while(1)while(1) temp=retemp();temp=retemp(); for(i=0;i10;i+)for(i=0;i0;i-)for (i=8;i0;i-) DQ =0; DQ =0; delay5(1); delay5(1); DQ

21、=1; DQ =1;/15s/15s内拉释放总线内拉释放总线 date=1;date=1; if(DQ) if(DQ) date|=0 x80; date|=0 x80; delay5(11); delay5(11); return(date);return(date); 24void writebyte(uchar dat)void writebyte(uchar dat) /函数功能:写函数功能:写1 1字节字节 uchar i=0;uchar i=0; for(i=8;i0;i-)for(i=8;i0;i-) DQ =0; DQ =0; DQ =dat&0 x01; DQ =dat&0

22、x01;/写写11 在在15s15s内拉低内拉低 delay5(12);delay5(12); /写写00 拉低拉低60s60s DQ = 1; DQ = 1; dat=1; dat=1; delay5(5); delay5(5); 25uchar retemp(void)uchar retemp(void)/函数功能:读取温度函数功能:读取温度 uchar a,b,tt;uchar a,b,tt;uint t;uint t;init_ds18b20();init_ds18b20();writebyte(0 xCC); writebyte(0 xCC); writebyte(0 x44);wr

23、itebyte(0 x44);init_ds18b20();init_ds18b20();writebyte(0 xCC); writebyte(0 xCC); writebyte(0 xBE); writebyte(0 xBE); a=readbyte();a=readbyte();b=readbyte();b=readbyte();t=b;t=b;t=8;t=8;t=t|a;t=t|a;tt=ttt=t* *0.0625;0.0625;return(tt);return(tt); 2610.2 SPI总线串行扩展总线串行扩展SPI(Serial Periperal Interface,串行

24、外设接口串行外设接口)是)是Motorola公司推出公司推出的一种的一种同步串行外设接口同步串行外设接口,允许单片机与多个厂家生产的带有标准,允许单片机与多个厂家生产的带有标准SPI接口的接口的外围设备直接连接,以串行方式交换信息。外围设备直接连接,以串行方式交换信息。所谓同步,就是串行口每发送、所谓同步,就是串行口每发送、接收一位数据都有一个同步时钟脉冲来控制。接收一位数据都有一个同步时钟脉冲来控制。SPI外围串行扩展结构见外围串行扩展结构见图图10-4。使用。使用4条线条线:串行时钟:串行时钟SCK,主器件输入,主器件输入/从器件输出数据线从器件输出数据线MISO,主器件输出,主器件输出/

25、从器件输入数据线从器件输入数据线MOSI和从器件选择和从器件选择线线 CS*。典型典型SPI系统是系统是单主器件单主器件系统系统,从器件通常是外围接口器件,如存储器、,从器件通常是外围接口器件,如存储器、I/O接口、接口、A/D、D/A、键盘、日历、键盘、日历/时钟和显示驱动等。时钟和显示驱动等。27图图10-4 SPI外围串行扩展结构图外围串行扩展结构图 单片机扩展多个外围器件时,单片机扩展多个外围器件时,SPI无法通过数据线译码选择,故外围器无法通过数据线译码选择,故外围器件都有件都有片选端片选端 。在扩展单个。在扩展单个SPI器件时,外围器件的片选端器件时,外围器件的片选端CS*可接地或

26、通可接地或通过过I/O口控制;在扩展多个口控制;在扩展多个SPI器件时,单片机应分别通过器件时,单片机应分别通过I/O口线来分时选口线来分时选通外围器件。通外围器件。 在在SPI串行扩展系统中,如某一从器件串行扩展系统中,如某一从器件只作输入只作输入(如键盘)或(如键盘)或只作输出只作输出(如显示器)时,可省去一条数据输出(如显示器)时,可省去一条数据输出(MISO)线或一条数据输入()线或一条数据输入(MOSI)线,从而构成)线,从而构成双线系统双线系统( CS*接地)。接地)。 SPI系统中单片机对从器件选通需控制其系统中单片机对从器件选通需控制其CS*端,由于省去传输时的地端,由于省去传

27、输时的地址字节,数据传送软件十分简单。但在扩展址字节,数据传送软件十分简单。但在扩展器件较多器件较多时,需控制较多的从时,需控制较多的从器件器件 CS*端,端,连线较多连线较多。 在在SPI串行扩展系统中,主器件单片机在串行扩展系统中,主器件单片机在启动一次传送时,启动一次传送时,便产生便产生8个个时钟,传给接口芯片作为同步时钟,控制数据的输入和输出。数据的传送格时钟,传给接口芯片作为同步时钟,控制数据的输入和输出。数据的传送格式是高位(式是高位(MSB)在前,低位()在前,低位(LSB)在后,见)在后,见图图10-5。 数据线上输出数据的变化以及输入数据时的采样,都取决于数据线上输出数据的变

28、化以及输入数据时的采样,都取决于SCK。但对不。但对不同的外围芯片,有的可能是同的外围芯片,有的可能是SCK的上升沿起作用,有的可能是的上升沿起作用,有的可能是SCK的下降沿的下降沿起作用。起作用。SPI有较高的数据传输速度,最高可达有较高的数据传输速度,最高可达1.05Mbit/s。图图10-5 SPI数据传送格式数据传送格式 目前世界各芯片公司为广大用户提供一系列具有目前世界各芯片公司为广大用户提供一系列具有SPI接口的单片机和外围接口的单片机和外围接口芯片,接口芯片,例如例如Motorola公司公司存储器存储器MC2814、显示驱动器、显示驱动器MC14499和和MC14489等各种芯片

29、;美国等各种芯片;美国TI公司公司的的8位串行位串行A/D转换器转换器TLC549、12位串位串行行A/D转换器转换器TLC2543等。等。 SPI外围串行扩展系统的从器件要具有外围串行扩展系统的从器件要具有SPI接口。主器件是单片机。目前接口。主器件是单片机。目前许多机型都带有许多机型都带有SPI接口。由于接口。由于AT89S52不带有不带有SPI接口,可采用软件与接口,可采用软件与I/O口结合来模拟口结合来模拟SPI的接口时序。的接口时序。10.3 I2C总线的串行扩展总线的串行扩展 I2C(Inter Interface Circuit)全称为)全称为芯片间总线芯片间总线,是目前,是目前

30、使用广泛使用广泛的芯的芯片间串行扩展总线。片间串行扩展总线。 目前世界上采用目前世界上采用I2C总线有总线有两个规范两个规范,荷兰飞利浦公司荷兰飞利浦公司和和日本索尼公司日本索尼公司,现多采用飞利浦公司现多采用飞利浦公司I2C总线技术规范,已成为总线技术规范,已成为电子行业认可的总线标准。电子行业认可的总线标准。采用采用I2C技术单片机以及外围器件种类很多,已广泛用于各类电子产品、家技术单片机以及外围器件种类很多,已广泛用于各类电子产品、家用电器及通信设备中。用电器及通信设备中。10.3.1 I2C串行总线系统的基本结构串行总线系统的基本结构 I2C串行总线只有串行总线只有两条信号线两条信号线

31、,一条是数据线,一条是数据线SDA,另一条是时钟线,另一条是时钟线SCL。SDA和和SCL是是双向双向的,的,I2C总线上各器件数据线都接到总线上各器件数据线都接到SDA线上,线上,各器件时钟线均接到各器件时钟线均接到SCL线上。线上。 I2C总线系统基本结构见总线系统基本结构见图图10-6。 带有带有I2C接口单片机可直接与接口单片机可直接与I2C总线接口的各种扩展器件(如存储器、总线接口的各种扩展器件(如存储器、I/O芯片、芯片、A/D、D/A、键盘、显示器、日历、键盘、显示器、日历/时钟)连接。由于时钟)连接。由于I2C总线采总线采用纯软件寻址方法,无需片选线连接,大大简化总线数量。用纯

32、软件寻址方法,无需片选线连接,大大简化总线数量。图图10-6 I2C串行总线系统基本结构串行总线系统基本结构I2C串行总线运行由串行总线运行由主器件控制主器件控制。主器件主器件是指启动数据的发送(发出起始是指启动数据的发送(发出起始信号)、发出时钟信号、传送结束时信号)、发出时钟信号、传送结束时发出终止信号发出终止信号的器件,通常由单片机来的器件,通常由单片机来担当。担当。从器件从器件可以是存储器、可以是存储器、LED或或LCD驱动器、驱动器、A/D或或D/A转换器、时钟转换器、时钟/日历器件等,从器件须带有日历器件等,从器件须带有I2C串行总线接口。串行总线接口。 I2C总线空闲总线空闲时,

33、时,SDA和和SCL两条线两条线均为高均为高。连接到总线上器件输出级必。连接到总线上器件输出级必须是须是漏级漏级或或集电极开路集电极开路,只要有一器件任意时刻输出低电平,都将使总线上,只要有一器件任意时刻输出低电平,都将使总线上信号变低,即各器件信号变低,即各器件SDA及及SCL都是都是“线与线与” 关系。由于关系。由于各器件输出为各器件输出为漏级漏级开路开路,故须,故须通过通过上拉电阻上拉电阻接正电源(见接正电源(见图图10-6中两个电阻),以保证中两个电阻),以保证SDA和和SCL在在空闲时空闲时被被上拉为高电平上拉为高电平。 SCL线上时钟信号对线上时钟信号对SDA线上各器件间数据传输起

34、同步控制作用。线上各器件间数据传输起同步控制作用。 SDA线上数据起始、终止及数据的有效性线上数据起始、终止及数据的有效性均要根据均要根据SCL线线上的上的时钟信号时钟信号来判断来判断。 在在标准标准I2C普通模式普通模式下,数据传输速率为下,数据传输速率为100kbit/s,高速模式下可达,高速模式下可达400kbit/s。总线上。总线上扩展器件数量扩展器件数量不是由电流负载决定的,而是不是由电流负载决定的,而是由电容负载确由电容负载确定定。I2C总线每个器件接口都有一定等效电容,连接器件越多,电容值就越大总线每个器件接口都有一定等效电容,连接器件越多,电容值就越大,这会造成信号传输延迟。,

35、这会造成信号传输延迟。 总线上允许器件数以器件电容量不超过总线上允许器件数以器件电容量不超过400pF(通过驱动扩展可达(通过驱动扩展可达4 000pF)为宜,据此可计算出总线长度及连接器件数量。每个)为宜,据此可计算出总线长度及连接器件数量。每个I2C总线器件都总线器件都有有唯一地址唯一地址,扩展器件扩展器件时也要时也要受器件地址数目受器件地址数目限制限制。 I2C总线应用系统允许总线应用系统允许多主器件多主器件,由哪一个主器件来控制总线要通过总,由哪一个主器件来控制总线要通过总线仲裁来决定。如何进行总线仲裁,读者可查阅线仲裁来决定。如何进行总线仲裁,读者可查阅I2C总线仲裁协议。但是在总线

36、仲裁协议。但是在实际应用中,实际应用中,经常遇到的是以经常遇到的是以单一单片机单一单片机为主器件为主器件,其他外围接口器件为,其他外围接口器件为从器件的情况。从器件的情况。 10.3.2 I2C总线的数据传送规定总线的数据传送规定1数据位的有效性规定数据位的有效性规定 I2C总线数据传送时,每一数据位传送都与时钟脉冲相对应。时钟脉冲为总线数据传送时,每一数据位传送都与时钟脉冲相对应。时钟脉冲为高电平期间高电平期间,数据线上,数据线上数据须保持稳定数据须保持稳定,在,在I2C总线上,只有在时钟线为总线上,只有在时钟线为低低电平电平期间,数据线上期间,数据线上电平状态才允许变化电平状态才允许变化,

37、见,见图图10-7。图图10-7 数据位有效性规定数据位有效性规定2起始信号和终止信号起始信号和终止信号 由由I2C总线协议,总线上数据信号传送由总线协议,总线上数据信号传送由起始信号起始信号(S)开始、由)开始、由终止信终止信号号(P)结束。)结束。起始信号起始信号和和终止信号终止信号都由主机发出都由主机发出,在起始信号产生后,总,在起始信号产生后,总线就处于线就处于占用状态占用状态;在终止信号产生后,总线就处于;在终止信号产生后,总线就处于空闲状态空闲状态。下面结合。下面结合图图10-8介绍有关起始信号和终止信号的规定。介绍有关起始信号和终止信号的规定。图图10-8 起始信号和终止信号起始

38、信号和终止信号 (1)起始信号()起始信号(S)。)。在在SCL线为高线为高期间,期间,SDA线由线由高电平高电平向向低电平低电平的变的变化表示起始信号,只有在起始信号以后,其他命令才有效。化表示起始信号,只有在起始信号以后,其他命令才有效。 (2)终止信号()终止信号(P)。)。在在SCL线为高线为高期间,期间,SDA线由线由低电平低电平向向高电平高电平的变的变化表示终止信号。随着终止信号出现,所有外部操作都结束。化表示终止信号。随着终止信号出现,所有外部操作都结束。3I2C总线上数据传送的应答总线上数据传送的应答 I2C总线数据传送时,传送总线数据传送时,传送字节数没有限制字节数没有限制,

39、但,但每字节须为每字节须为8位长位长。数据传。数据传送时,先传送最高位(送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随),每一个被传送的字节后面都必须跟随1位应位应答位答位(即(即1帧帧共有共有9位位),见),见图图10-9。图图10-9 I2C总线上的应答信号总线上的应答信号 I2C总线在总线在传送每传送每1字节数据后都须有字节数据后都须有应答信号应答信号A,应答信号在第,应答信号在第9个时钟位个时钟位上出现,与上出现,与应答信号应答信号对应对应的时钟信号的时钟信号由由主器件主器件产生。这时发方须在这一时钟产生。这时发方须在这一时钟位上使位上使SDA线处于高电平状态,以便收方

40、在这一位上送出低电平应答信号线处于高电平状态,以便收方在这一位上送出低电平应答信号A。 由于某种原因由于某种原因收方不对收方不对主器件主器件寻址信号应答时寻址信号应答时,例如收方正在进行其他处,例如收方正在进行其他处理而无法接收总线上数据时,必须释放总线,将数据线置为高电平,而由主理而无法接收总线上数据时,必须释放总线,将数据线置为高电平,而由主器件产生一个终止信号以结束总线的数据传送。器件产生一个终止信号以结束总线的数据传送。 当当主器件主器件接收接收来自来自从机从机数据时,数据时,接收到接收到最后一个数据字节最后一个数据字节后,后,须给从器件须给从器件发送一个发送一个非应答信号(非应答信号

41、(A*),使从机释放),使从机释放数据总线数据总线,以便以便主机发送一主机发送一终止信终止信号号,从而,从而结束结束数据传送数据传送。4I2C总线上的数据帧格式总线上的数据帧格式 I2C总线上传送数据信号即包括真正的总线上传送数据信号即包括真正的数据信号数据信号,也包括,也包括地址信号地址信号。 I2C总线规定,在总线规定,在起始信号后起始信号后必须传送一必须传送一从器件地址(从器件地址(7位),位),第第8位是数位是数据传送的方向位(据传送的方向位(R/W*),用),用“0”表示主器件发送数据(表示主器件发送数据(W*),),“1”表示表示主器件接收数据(主器件接收数据(R)。)。 每次数据

42、传送总是由主器件产生的终止信号结束。但是,若主器件希望每次数据传送总是由主器件产生的终止信号结束。但是,若主器件希望继续占用总线进行新的数据传送,则可不产生终止信号,马上再次发出起继续占用总线进行新的数据传送,则可不产生终止信号,马上再次发出起始信号对另一从器件进行寻址。因此,在总线一次数据传送过程中,可有始信号对另一从器件进行寻址。因此,在总线一次数据传送过程中,可有以下几种组合方式:以下几种组合方式:(1)主器件主器件向向从器件从器件发送发送n字节的数据字节的数据,数据传送方向在整个传送,数据传送方向在整个传送过程中不变,数据传送格式:过程中不变,数据传送格式:其中:其中:字节字节1字节字

43、节n为为主机主机写入写入从器件的从器件的n字节字节的数据。格式中的数据。格式中阴影阴影部分表示部分表示主器件向从机发送数据主器件向从机发送数据,无阴影无阴影部分表示部分表示从器件从器件向向主器件主器件发送发送,以下同。上述格式中的,以下同。上述格式中的“从器件地址从器件地址”为为7位,紧接其后的位,紧接其后的“1”和和“0”表示主器件的读表示主器件的读/写方向,写方向,“1”-读读,“0”-写写。(2)主器件主器件读出来自从机的读出来自从机的n字节字节。除第。除第1个寻址字节由主机发出,个寻址字节由主机发出,n字节都由从器件发送,主器件接收,数据传送格式如下:字节都由从器件发送,主器件接收,数

44、据传送格式如下: 其中:其中:字节字节1 1 字节字节n n为从器件被读出的为从器件被读出的n n字节数据。主器件发送终止信号前字节数据。主器件发送终止信号前应发送非应答信号,向从器件表明读操作要结束。应发送非应答信号,向从器件表明读操作要结束。 (3 3)主器件的读、写操作)主器件的读、写操作。在一次数据传送过程中,主器件先发送。在一次数据传送过程中,主器件先发送1 1字节字节数据,然后再接收数据,然后再接收1 1字节数据,此时起始信号和从器件地址都被重新产生一次字节数据,此时起始信号和从器件地址都被重新产生一次,但两次读写的方向位正好相反。数据传送格式如下:,但两次读写的方向位正好相反。数

45、据传送格式如下:45格式中的格式中的“Sr”Sr”表示重新产生的起始信号表示重新产生的起始信号,“从器件地址从器件地址r”r”表示重新产表示重新产生的从器件地址。生的从器件地址。 由上可见,无论哪种方式,由上可见,无论哪种方式,起始信号、终止信号起始信号、终止信号和和从器件地址从器件地址均由主均由主器件发送器件发送,数据字节传送方向则由主器件发出的寻址字节中的方向位规定,数据字节传送方向则由主器件发出的寻址字节中的方向位规定,每个字节传送都须有应答位(,每个字节传送都须有应答位(A A或或A A* *)相随。)相随。465 5寻址字节寻址字节在上面介绍的数据帧格式中,均有在上面介绍的数据帧格式

46、中,均有7 7位位从器件地址从器件地址和紧跟其后的和紧跟其后的1 1位位读读/ /写写方向位方向位,即寻址字节。,即寻址字节。I2CI2C总线的寻址总线的寻址采用软件寻址采用软件寻址,主器件在发送完起始,主器件在发送完起始信号后,立即发送寻址字节来寻址被控的从器件,信号后,立即发送寻址字节来寻址被控的从器件,寻址字节格式如下寻址字节格式如下: 7 7位从器件地址位从器件地址为为“DA3DA3、DA2DA2、DA1DA1、DA0DA0”和和“A2A2、A1A1、A0A0”,其中,其中“DA3DA3、DA2DA2、DA1DA1、DA0”DA0”为器件地址,即器件固有地址编码,出厂时就已为器件地址,

47、即器件固有地址编码,出厂时就已给定。给定。“A2A2、A1A1、A0”A0”为引脚地址,由器件为引脚地址,由器件“A2A2、A1A1、A0”A0”为引脚地址,为引脚地址,由器件引脚由器件引脚A2A2、A1A1、A0A0在电路中接高电平或接地决定(见在电路中接高电平或接地决定(见图图10-1110-11)。)。数据方向位(数据方向位(R/WR/W* *)规定)规定了总线上的单片机(主器件)与从器件数据传送了总线上的单片机(主器件)与从器件数据传送方向。方向。R/WR/W* *=1=1,表示主器件接收(读)。,表示主器件接收(读)。R/WR/W* *=0=0,表示主器件发送(写),表示主器件发送(

48、写) 6 6数据传送格式数据传送格式 I I2C C总线每传送一位数据都与一个时钟脉冲对应,传送的每总线每传送一位数据都与一个时钟脉冲对应,传送的每一帧数据均一帧数据均为一字节。为一字节。但启动但启动I2CI2C总线后传送的字节数没有限制,只要求每传送一个字节总线后传送的字节数没有限制,只要求每传送一个字节后,对方回答一个应答位。在时钟线为高电平期间,数据线的状态就是要传后,对方回答一个应答位。在时钟线为高电平期间,数据线的状态就是要传送的数据。送的数据。48 数据线上数据数据线上数据改变改变须在时钟线为须在时钟线为低电平低电平间完成。在数据传输期间,间完成。在数据传输期间,只要时钟线为高电平

49、,数据线都必须稳定只要时钟线为高电平,数据线都必须稳定,否则数据线上任何变化都当作,否则数据线上任何变化都当作起始或终止信号。起始或终止信号。 I I2C C总线数据传送必须遵循规定的数据传送格式。总线数据传送必须遵循规定的数据传送格式。图图10-1010-10所示为一所示为一次完整的数据传送应答时序。由总线规范,起始信号表明一次数据传送的次完整的数据传送应答时序。由总线规范,起始信号表明一次数据传送的开始,其后为寻址字节。开始,其后为寻址字节。在寻址字节后是按指定读、写的数据字节与应答位。在数据传送完成在寻址字节后是按指定读、写的数据字节与应答位。在数据传送完成后主器件都必须发送终止信号。在

50、起始与终止信号之间传输的数据字节数后主器件都必须发送终止信号。在起始与终止信号之间传输的数据字节数由主器件(单片机)决定,理论上讲没有字节限制。由主器件(单片机)决定,理论上讲没有字节限制。49图图10-10 I2C总线一次完整的数据传送应答时序总线一次完整的数据传送应答时序由上述数据传送格式可看出:由上述数据传送格式可看出: (1 1)无论何种数据传送格式,无论何种数据传送格式,寻址字节寻址字节都由主器件发出,数据字节传都由主器件发出,数据字节传送方向则由寻址字节中方向位来规定。送方向则由寻址字节中方向位来规定。 (2 2)寻址字节只表明从器件的地址及数据传送方向。从器件内部的寻址字节只表明

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁