登陆注册
13028600000021

第21章 通信接口技术(2)

MOVAL,00H;置产生9600波特率除数高位

MOVDX,3F9H

OUTDX,AL;写入波特率因子锁存器高位

MOVAL,1BH;设置数据格式

MOVDX,3FBH;写入通信线控制寄存器

OUTDX,AL

MOVDI,00H;设置偏移量

MOVBX,OFFSETSJ1;取出发送数据地址

MOVCX,03H;设置发送数据个数

L1:MOVDX,3FDH;检测发送数据寄存器是否为空

INAL,DX

TESTAL,20H

JZL1;不空,继续检测

MOVDX,3F8H;发送数据

MOVAL,[BX+DI+0]

OUTDX,AL

INCDI;调整地址指针

LOOPLl;将全部数据发送出去

L2:MOVDX,3FDH;检测接收数据寄存器是否为空

INAL,DX

TESTAL,01H

JZL2;不空,继续检测

MOVDX,3F8H;接收数据

INAL,DX

MOVDL,AL

TESTAL,0FFH;判断接收数据是否为结束标志

JZL3;如果有结束标志,程序结束

MOVAH,06H;将接收数据显示

INT21H

JMPL2;继续接收

L3:MOVAH,4CH;程序结束,返回DOS

INT21H

CODEENDS

END

6.2I2C总线

I2C总线(InterICBUS)是由Philips公司推出的一种基于两线的同步串行输出总线,被广泛应用于仪器仪表、通信产品及工业测控系统中。

6.2.1I2C总线的常用术语

I2C总线支持所有NMDS、CMOS等工艺制造的器件。通过两根线(SDA串行数据线,SCI串行时钟线)在连接到总线上的器件之间传送信息,根据地址识别每个器件:单片机、LCD驱动器、存储器、键盘接口。根据器件的功能是否工作于发送和(或)接收方式,I2C总线器件可以分为接受器或发生器。显然LCD驱动器只能是接收器,而存储器可以发生和接收数据。另外,对于发生器和接收器来说,在进行数据传送时可以分别认为是主器件或从器件。主器件是启动在总线上传送数据并产生时钟以允许传送的器件,这时任何被寻址的器件认为是从器件。

I2C是多主机总线,这意味着可由所连接的多个器件控制总线。主器件通常是一个单片机。

在总线上随时都可以找到主/从、发送/接收关系,但应注意这种关系不是永久的,而仅取决于此时数据传送的方向。数据传送是以下述方式进行的:

(1)若单片机A要把信息送至单片机B

单片机A(主器件)寻址单片机B(从器件);

单片机A(主发送)把数据送至单片机B(从接收);

单片机A终止传送。

(2)若单片机A要从单片机B接收信息

单片机A(主器件)寻址单片机B(从器件);

单片机A(主接收)接收单片机B(从发送)数据;

单片机A终止传送。

在这种情况下,主器件(单片机A)产生定时时钟和终止数据传送。

可能有多个单片机接到I2C总线上,即可能同时有几个主器件企图启动总线传送数据。

为了避免这种情况引起的总线混乱,就产生了总线仲裁。总线仲裁过程依赖于总线上各个器件的线“与”连接。如果有两个或两个以上主器件企图把信息送到总线上时,一旦一个主器件送“1”而另一个送“0”,这个送“1”的主器件就退出总线竞争。在竞争过程中,时钟信号是各个主器件产生的异步时钟的线“与”。

在I2C总线上产生的时钟总是对应于主器件的。在传送数据时,每个主器件产生自己的时钟,主器件产生的时钟仅在慢速的从器件拉宽低电平或在竞争中被另一个主器件所改变。

SDA和SCL都是双向线,它们通过上拉电阻接正电源。当总线空闲时,这两根线处于高电平状态。连到总线的器件的输出级必须是漏极开路或集电极开路,这样具有线“与”功能。I2C总线上数据传送的最高速率为100kbps,连到总线上器件的数量仅受总线电容400pF的限制。

6.2.2位传送及数据的有效性

由于不同工艺(NMOS、TTL等)制造的器件可以同时连到I2C总线上,因此逻辑0(低)和逻辑1(高)的电平是不固定的,它取决于相应的VDD,其中每传送一位数据产生一个时钟。

在时钟高电平期间,SDA上的数据必须保持稳定,只有在时钟线SCL上的时钟低电平期间,SDA线上的高电平或低电平状态才能变化。

6.2.3开始和结束信号

在I2C总线数据传送过程中,定义了一种开始和结束信号(有时也称启动和停止信号),这在I2C协议中具有十分重要的意义。当SCL为高电平时,SDA发生高到低跳变,定义为开始信号;当SCL为高电平时,SDA发生低到高跳变,定义为结束信号。开始和结束信号都是由主器件发出的。在开始信号以后,总线被认为是忙的。在结束信号后过一定时间,总线被认为是空闲的。如果连接到总线上的器件具有相应的硬件接口电路,开始和结束信号的检测还比较容易,但是没有这种硬件接口电路的微处理器必须在一个时钟周期内至少2次采样,SDA才能检测到这种跳变。

6.2.4I2C总线数据传送

1.字节格式

送到SDA线上的每个字节必须为8位长度,每次传送的字节数是不受限制的,每个字节后面必须跟随一个响应位。数据传送时先传送最高位。如果接收器件不能接收下一个字节(例如正在处理一个内部中断,在这个中断处理完之前不能接收I2C总线上的数据字节),可以使时钟保持低电平,迫使主器件处于等待状态。当从器件准备好接收下一个数据字节时就释放SCL线,以便数据继续传送。

2.响应

接收器件必须确认数据的接收,确认位相对于主器件产生一个时钟,在这个时钟内发送器件释放SDA线。

接收器件在这个时钟内必须将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。

通常,被寻址的接收器件必须在收到每个字节后发出响应信息。若一个从器件在处理一个实时事件不能接收数据时,从器件必须使SDA保持高电平。此时,主器件产生一个结束信号使传送异常结束。

如果从器件对地址作了确认,而在传送中不能接收更多的数据字节,主器件也必须异常结束传送。这是由于从接收器对数据字节不确认,使SDA线保持高电平,主器件产生结束信号来异常结束传送。

在主器件接收的传送中,主器件对最后一个数据字节不予确认,以从发送器指出数据传送的结束,从发送器释放SDA线,使主器件能产生一个结束信号。

6.2.5I2C总线和时钟同步

为了在I2C总线上传送信息,每个主器件在SCL线上产生时钟,数据仅在时钟的高电平期间有效,在发生一位位竞争的过程中就需要确定一个时钟。

时钟同步是由连在SCL线上的器件的“线与”完成的。SCL线上由高到低的跳变将影响有关的器件,使它们启动低电平期计数。一旦一个器件时钟跳为低电平,将使SCL线保持低电平,直至时钟到达高电平。如果此时其他器件时钟仍处于低电平期,则该器件时钟由低至高的跳变不影响SCL线的状态,因此SCL线上低电平时间由器件中各时钟的最长的低电平时间确定。此时,低电平周期短的器件进入等待高电平的状态。

当所有有关的器件对它们的低电平期计数时,时钟线被释放,返回高电平。这样使器件时钟之间没有差别,而所有的器件都同时开始它们的高电平期计数,第一个结束高电平期的器件又将SCL线拉成低电平。

这样就产生了一个同步的SCL线上的时钟,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。实现这一同步过程的基础就是“线与”逻辑,“线与”逻辑的基础是有关驱动器的集电极开路或漏极开路。“线与”这一概念在I2C协议及其他通信协议中具有十分重要的实际应用意义。

6.2.6I2C总线竞争

发生在SDA线上的总线仲裁(竞争)是以如下方式进行的:一个主器件发送高电平,另一个主器件发送低电平,该器件因总线电平和自身发送的电平不相符而关掉它的输出级,从而退出竞争。

总线竞争可以在许多位上进行。第一级的竞争是地址位的比较,如果主器件寻址同一个从器件,则继续竞争,进入数据位的比较,因为是利用I2C总线上信息进行仲裁,所以在竞争中信息不会丢失或破坏。

退出竞争的主器件在退出的这个字节期间仍旧发送时钟,这个字节以后就不产生时钟,如果主器件在低字节中退出竞争,则有可能被竞争成功的主器件所寻址。

在主器件内部产生的DATA1电平和SDA线上实际电平之间有一点不同。输出级截止时,意味着高电平就加到了总线上,但这并不影响竞争取胜的主器件的数据传送。因为,I2C总线的控制完全由竞争的主器件输出的地址和数据决定,在总线上既没有控制中心,也没有优先级。

利用竞争过程中时钟信号的同步机制,使接收器件能对快速传送的(位或字节)数据进行处理。对于字节一级,能以快的速率接收一个数据字节,但需花费较多时间存储一个接收到的字节或准备一个发送的字节。此时从器件在接收一个字节并确认以后,使SCL线保持低电平,迫使主器件处于等待状态,直至从器件准备好传送下一个字节为止。这一过程称为握手过程。

6.2.7I2C数据格式

I2C数据传送遵循的过程及格式。在开始信号以后送出一个从器件地址,地址为7位,第8位为方向位(R/W),其中,“0”表示写数据,“1”表示读数据。一次数据传送总是由主器件产生的结束信号而终止的。如果主器件还希望在总线上通信,它可以产生另一个开始信号和寻址另一个从器件,而不需要先产生一个停止信号。在这种传送方式中,就可能有读写方式的组合。

主接收方式中,在第一个响应位时主发送器变成主接收器,从接收器变成从发送器,但该响应位仍由从器件产生,结束信号仍由主器件产生。

在传送中方向改变时,要重复开始信号和发送地址,其中R/W位反向。

6.2.8I2C总线寻址

寻址是指开始信号后第一个字节确定主器件所选择的从器件。

1.第一个字节各位的定义

该字节的高7位组成从器件地址,最低位确定信息的方向。

最低位R/W为“0”时表示主器件把信息写到所选择的从器件中,为“1”则表示主器件将读取从器件中的信息。

信号开始后,系统中各个器件将自己的地址和主器件送到总线上的地址进行比较,如果匹配,该器件认为被主器件寻址,从接收或从发送由R/W确定。器件的从地址由固定部分和可编程部分组成,如在系统中使用一个以上相同的器件,从地址的可编程部分确定了在I2C总线上可连接这种器件的最多数目。一个器件从地址的可编程位数取决于该器件可用来编程的引脚数。如果一个器件从地址有4个固定位和3个可编程位,则在总线上可以接8个相同的这种器件,I2C总线约定可以调整I2C总线的地址分配。

地址“1111111”保留为扩展地址,即寻址过程将在第二个地址继续进行。不使用扩展寻址的器件收到这个地址后不做出响应。7位地址其他可能的组合中,高4位为1111也作为扩展目的用,目前还没有对它分配。

2.广播呼叫地址

广播呼叫地址应用于寻址I2C总线上的所有器件。若一个器件不需要广播呼叫寻址中所提供的任何数据,该器件可以忽略该地址,不作响应。如果器件的确需要广播呼叫寻址中提供的数据,该器件应对地址做出响应,其表现为一个从接收器。第二个和接着的数据字节被每个从器件所响应并接收处理。从器件对不能处理的字节应忽略并不作出响应。

广播呼叫的含义总是由第二个字节说明的。

当B为0时第二个字节有如下定义。

“00000110(06H)”:复位并由软件和硬件写入从地址的可编程部分。顺序接收这两个字节,所有的器件(设计成响应一般呼叫寻址)复位并接收地址的可编程部分,注意保证在加电后不要将SDA和SCL线拉成低电平,低电平将阻塞总线。

“00000010(02H)”:仅由软件写入从地址,所有由软件得到地址可编程部分的器件将进入编程方式,但并不复位。

“00000100(04H)”:仅由硬件写入从地址,所有可编程地址部分由硬件确定的器件在接收这两个字节时锁存可编程的地址。器件不复位。

“00000000(00H)”:这个编码的第二个字节不允许使用。余下的编码没有确定,器件必须忽略这些编码。

当B为1时,这两个字节是硬件广播呼叫,其含义是时序由硬件主器件发送(如键盘扫描器),不能对该器件发送从地址编程。因为事先不知道将信息传送给哪个器件,只能产生硬件广播呼叫,发送自己的地址,从而让系统识别自己。

第二字节的剩余7位为硬件主器件的器件地址,该地址由总线上微处理器之类的智能器件所识别,该器件处理来自硬件器件的信息。如果硬件主器件也能作为一个从器件,该从地址和主器件地址是一致的。

同类推荐
  • 图说高科技与现代交通

    图说高科技与现代交通

    21世纪交通运输发展必将是高新技术广泛应用,高速安全交通全面发展的时代。科学家们正在研究使汽车实现电子化、智能化,无需驾驶员干预;怎样使飞机的运载量更大、速度更快,更安全等等。各种现代交通工具的不断变化将深刻地影响和改变我们的生活方式和生活习惯。我们期待着“以人为本”,更安全、环保、智能和一体化的现代交通的出现,期待着交通堵塞问题能得到彻底解决。
  • 新编柴油车故障检修精选300例

    新编柴油车故障检修精选300例

    本书以装用柴油机的汽车在实际使用中所出现的故障实例为主体,介绍了东风、解放、斯太尔、依维柯、五十铃等系列柴油车常见故障的诊断与排除方法。内容通俗易懂,且针对性和实用性强,可供汽车驾驶员和修理工阅读,也可供大中专院校汽车专业的在校师生学习参考。
  • 综合生态系统管理在防治土地退化中的应用

    综合生态系统管理在防治土地退化中的应用

    中国GEF-OP12干旱生态系统土地退化防治伙伴关系是全球环境基金资助中国的综合生态系统管理项目,其主要目的是通过遏制中国西部地区土地退化,逐步恢复干旱地区的生态系统,以减少因土地退化而造成的贫困人口数量。自2004年以来,该项目在我国陕西、宁夏等西北五省区和内蒙古自治区组织实施,第一阶段能力建设的主要任务是应用综合生态管理理念,对本省区土地退化防治相关政策环境、法律法规体系进行评价,对本省区的土地退化状况进行客观评价和论证,提出相应的土地退化防治战略与行动计划。
  • 新编科技大博览

    新编科技大博览

    全书分三卷,内容包括:形形色色的现代武器、精彩绚丽的宇宙时空、日新月异的信息科技、握手太空的航天科技、穿越时空的现代交通、蓬勃发展的现代农业等。
  • 地球消失记——无处堆放的垃圾

    地球消失记——无处堆放的垃圾

    本书包含了“认识垃圾”、“垃圾与现代生活”、“令人头痛的垃圾污染”等内容。
热门推荐
  • 犹太人的教子智慧

    犹太人的教子智慧

    知识改变命运。教育决定一个民族的未来,高素质的教育造就高素质的人才。犹太民族在教子方面很有自己的独特见解,他们认为教育方式的不同对孩子的影响十分巨大,父母的言传身教更是对孩子起榜样作用。本书希望通过对犹太人的教子智慧和教育艺术的阐述,帮助家长掌握一定的方法,让孩子养成好的习惯,在潜移默化中把孩子培养成乐观开朗、充满爱心、知耻知荣、志向远大的栋梁之材。
  • 天道召唤手机

    天道召唤手机

    穿越了异世界的韩一凡,脑海中出现了一个可以召唤东西的手机,决定好好的活一会的他,决定,这个世界的生活,就从忽悠这个救了他一命的九公主开始吧!
  • 北使录

    北使录

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 水龙吟之航海志

    水龙吟之航海志

    元末明初,云南巍宝山一小门派“无极宫”内发生血案,宫内二师兄因被诬陷毒害师傅,被迫携妻儿出逃,但终究没能摆脱妻儿双双坠崖的厄运,遂万念俱灰与敌人同归于尽。所幸其子命不该绝,且奇遇连连,于50岁时自创神功威震江湖,终因偶遇高人点化,看破红尘,退隐江湖,但其所创神功却威震后世,也为后世掀起了新一轮的腥风血雨...
  • 旧往生

    旧往生

    我叫郭晨,我的身边发生了无法想象的灾难,我竟然穿越了。我来到了地下城与勇士中的阿拉德大陆变成了一位银发少年。这里是一个魔力的世界,有着各色各样的魔兽和强大的使徒生物,有着公会和魔法学院,还能自己组建冒险团猎杀魔兽提升冒险团名誉和等级。我的征途即将启程了,你,准备好了么?
  • 我家江先生又上头条了2

    我家江先生又上头条了2

    【本书又名《笙小姐的追夫记》】余笙才刚刚绑定系统,就被通知主神系统故障!!余笙不禁在内心bb:说好的快穿生活呢?!说好的幸福人生呢?!系统方格子:其实还有一个“好”消息……宿主某笙:滚……——某笙的生活——花痴/笙:如果当初系统没故障的话……吃醋/江:你还想看其他人?慌张/笙:没有没有,我只是……只是……黑脸/江:我的脸还不够你每天看?还是说……腻了?机智/笙:才不是!我只是想和你过好多好多辈子!系统:宿主宿主!刚刚主神空间通知说,我可以被送去维修了!!!笙:…——心声——兜兜转转,一切也只是因为,我喜欢你。——by江北辙上天送了我两个礼物,一个是命,一个是你。——by余笙甜宠+小虐,双结局部分架空,深究党勿入欢迎小可爱们入坑~
  • 参见龙王陛下

    参见龙王陛下

    不死妖王将臣,带领九大凶兽反叛龙神!最强妖力和神力相撞,空间被彻底撕碎,妖神界大乱。
  • 宠婚一百分娇妻有点甜

    宠婚一百分娇妻有点甜

    <爆笑宠妻#男女双处>婚前,“boss大人,我可以演这部戏嘛”男人缩了缩眸子“不可以”,“真的不可以嘛”沐柒染耷拉着脑袋,肩膀缩了缩”好”婚后,男主开启新功能,大小包子齐上阵“老公,不可以演这部戏吗”男人看着他,果断拎起了腿边的小包子“麻麻,你不素答应陪我玩的嘛”沐柒染心中一箭K!O!
  • 末世黑科技战舰系统

    末世黑科技战舰系统

    幸存者基地之外,尸潮来袭,密密麻麻,铺天盖地幸存者基地之内,人心惶惶,哭声一片,面临绝境夏白:都别慌,放着我来——老子的超级战舰还有三十秒钟抵达战场!……书友群:850694517
  • 我真的想当剑仙

    我真的想当剑仙

    神州第一天才楚游居然废除了自己的修为,这究竟是人性的扭曲还是道德的沦丧?请收看楚游一生不得不说的修仙故事。