- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据线上数据改变须在时钟线为低电平间完成。在数据传输期间,只要时钟线为高电平,数据线都必须稳定,否则数据线上任何变化都当作起始或终止信号。 I2C总线数据传送必须遵循规定的数据传送格式。图10-10所示为一次完整的数据传送应答时序。由总线规范,起始信号表明一次数据传送的开始,其后为寻址字节。在寻址字节后是按指定读、写的数据字节与应答位。在数据传送完成后主器件都必须发送终止信号。在起始与终止信号之间传输的数据字节数由主器件(单片机)决定,理论上讲没有字节限制。 * * 图10-10 I2C总线一次完整的数据传送应答时序 由上述数据传送格式可看出: (1)无论何种数据传送格式,寻址字节都由主器件发出,数据字节传送方向则由寻址字节中方向位来规定。 (2)寻址字节只表明从器件的地址及数据传送方向。从器件内部的n个数据地址,由器件设计者在该器件的I2C总线数据操作格式中,指定第1个数据字节作为器件内的单元地址指针,并且设置地址自动加减功能,以减少从器件地址的寻址操作。 (3)每个字节传送都必须有应答信号(A/A*)相随。 (4)从器件接收到起始信号后都必须释放数据总线,使其处于高电平,以便主器件发送从机地址。 10.3.3 AT89S51的I2C总线扩展系统 许多公司都推出带有I2C接口的单片机及各种外围扩展器件,常见的有ATMEL的AT24C××系列存储器、PHILIPS的PCF8553(时钟/日历且带有256×8 RAM)和PCF8570(256×8 RAM)、MAXIM的MAX117/118(A/D转换器)和MAX517/518/519(D/A转换器)等。 I2C系统中主器件通常由带有I2C接口的单片机担当。从器件必须带有I2C总线接口。AT89S51单片机没有I2C接口,可利用并行I/O口线结合软件来模拟I2C总线时序,可使AT89S51不受没有I2C接口限制。因此,在许多应用中,都将I2C总线模拟传送作为常规设计方法。 * 图10-11为AT89S51单片机与具有I2C总线器件的扩展接口电路。图中,AT24C02为E2PROM芯片,PCF8570为静态256×8 RAM,PCF8574为8位I/O接口,SAA1064为4位LED驱动器。虽然各种器件的原理和功能有很大的差异,但它们与AT89S51单片机连接是相同的。 * 图10-11 AT89S51单片机扩展I2C总线器件的接口电路 10.3.4 I2C总线数据传送的模拟 由于AT89S51没有I2C接口,通常用I/O口线结合软件来实现I2C总线上的信号模拟。AT89S51为单主器件方式下,没有其他主器件对总线竞争与同步,只存在着主器件单片机对I2C总线上各从器件的读、写操作。 1.典型信号模拟 为保证数据传送的可靠性,标准I2C总线数据传送有严格的时序要求。I2C总线的起始信号、终止信号、应答/数据“0”及非应答/数据“1”的模拟时序见图10-12~图10-17。 * 对于终止信号,要保证有大于4.7μs信号建立时间。终止信号结束时,要释放总线,使SDA、SCL维持在高电平上,在大于4.7μs后才可进行第1次起始操作。在单主器件系统中,为防止非正常传送,终止信号后SCL可设置在低电平。 对发送应答位、非应答位来说,与发送数据“0”和“1”的信号定时要求完全相同。只要满足在时钟高电平大于4.0μs期间,SDA线上有确定的电平状态即可。 2.典型信号及字节收发的模拟子程序 AT89S51单片机在模拟I2C总线通信时,需编写以下5个函数:总线初始化、起始信号、终止信号、应答/数据“0”以及非应答/数据“1”函数。 (1)总线初始化函数。初始化函数的功能是将SCL和SDA总线拉高以释放总线。参考程序如下: #include reg51.h #include intrins.h //包含函数_nop_ ( )的头文件 sbit sda=P1^0; //定义I2C模拟数据传送位 sbit scl=P1^1; //定义I2C模拟时钟控制位 * void init( ) //总线初始化函数 { scl=1; //scl为高电平 _nop_ ( ); //延时约1μs sda=1; //sda为高电平 delay5us(); //延时约5μs } (2)起始信号S函数。图10-12的起始信号S,要求一个新的起始信号前总线的空闲时间大于4.7μs,而对于一个重复的起始信号,要求建立时间也须大于4.7μs。图10-12为起始信号的时序波形在SCL高电平期间SDA发生负跳变。起始信号到第1个时钟脉冲负跳沿的时间间隔应
您可能关注的文档
最近下载
- EN 1337-3:2005 结构支座-第三部分:橡胶支座 (中文版).pdf VIP
- 小学一年级语文上册知识点(通用13篇).doc VIP
- 普通职员月度工作总结.docx VIP
- 2025至2030黄金珠宝首饰行业运营态势与投资前景调查研究报告.docx
- 小区供热工程毕业设计开题报告.pdf VIP
- 企业工会助推企业高质量发展.docx VIP
- GB_T230.1-2018金属材料 洛氏硬度试验 第1部分:试验方法11.pdf
- 基于核心素养的小学数学单元教学目标制定与实施策略教学研究课题报告.docx
- 手术病理标本前处理流程2023.pptx VIP
- 【招聘管理体系设计】摩托罗拉的招聘.pdf VIP
原创力文档


文档评论(0)