历史上的今天
返回首页

历史上的今天

今天是:2025年01月05日(星期日)

正在发生

2018年01月05日 | I2C总线的工作原理与在51单片机中的应用

2018-01-05 来源:eefocus

I2C总线的工作原理与应用 
   I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
 1 I2C总线特点
 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
 2 I2C总线工作原理
 2.1 总线的构成及信号类型
 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
 目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROChip的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。
 3 总线基本操作
 I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。参见图1。

图1 串行总线上的数据传送顺序

3.1 控制字节
 在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。如图2所示。

图2 控制字节配置

3.2 写操作
 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序参见图3。

图3 页面写

3.3 读操作
 读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。

图4 顺序读

4 实例:X24C04与MCS-51单片机软硬件的实现
 X24C04是XICOR公司的CMOS 4096位串行EEPROM,内部组织成512×8位。16字节页面写。与MCS-51单片机接口如图5所示。由于SDA是漏极开路输出,且可以与任何数目的漏极开路或集电极开路输出“线或”(wire-Ored)连接。上拉电阻的选择可参考X24C04的数据手册。下面是通过I2C接口对X24C04进行单字节写操作的例程。流程图及源程序如下:

图5 X24C04与51单片机接口

;名称:BSENT
;描述:写字节
;功能:写一个字节
;调用程序:无
;输入参数:A
;输出参数:无
BSEND: MOV R2,#08H ;1字节8位
SENDA: CLR P3.2   ;
RLC A             ;左移一位
MOV P3.3,C        ;写一位
SETB P3.2
DJNZ R2,SENDA     ;写完8个字节?
CLR P3.2          ;应答信号
SETB P3.3
SETB P3.2
RET

图6 流程图

5 结束语
 在I2C总线的应用中应注意的事项总结为以下几点:
 1) 严格按照时序图的要求进行操作,
 2) 若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。
 3) 程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。
 4)为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写


推荐阅读

史海拾趣

地博电子(DIBO)公司的发展小趣事

近年来,地博电子积极响应行业发展趋势,不断推进数字化转型和精益生产。在2022年,公司导入了精益生产系统,通过优化生产流程、降低库存和浪费等措施,进一步提高了生产效率和产品质量。同时,在2023年,地博电子还导入了OA/SAP信息化系统,开启了数字化转型之路。这些举措使得地博电子在电子材料行业中保持了领先地位,并为公司的未来发展奠定了坚实基础。

请注意,以上故事概要仅为地博电子(DIBO)公司发展历程中的部分关键事实,更多详细信息和数据可参考公司官方资料。

EOS POWER INDIA Pvt公司的发展小趣事

在稳固了印度市场后,EOS开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户和合作伙伴建立了广泛的联系。通过与国际知名企业的合作与交流,EOS不断吸收先进的管理经验和技术理念,并将其应用到自己的产品和服务中。这些举措不仅提升了EOS的国际知名度,还为公司带来了更多的商业机会。

ALTERA(阿尔特拉)公司的发展小趣事

随着市场的不断发展和客户需求的变化,EOS意识到只有不断创新才能保持竞争力。因此,公司加大了对研发的投入,引进了一批高素质的研发人才。经过数年的努力,EOS成功研发出了一系列高性能、高可靠性的电源产品,如交钥匙电源解决方案、定制电源等。这些产品不仅满足了客户的多样化需求,还帮助EOS在市场上获得了更多的份额。

DART(英国达特)公司的发展小趣事

在竞争激烈的电子行业中,只有不断创新才能保持领先地位。DART公司深知这一点,因此他们投入大量资金用于研发新的技术和产品。同时,公司也积极开展与高校、研究机构和其他企业的合作,共同探索新的技术路线和市场应用。这些合作不仅为DART公司带来了更多的技术积累和市场机会,也促进了整个电子行业的进步和发展。

Focus公司的发展小趣事

Focus Enhancements, Inc.(根据参考文章中的信息)是一家无晶圆厂集成电路(IC)公司,专注于为家庭影院系统、便携式媒体播放器、智能手机等消费电子设备开发和销售IC解决方案和组件。自1996年以来,该公司凭借其强大的研发团队和敏锐的市场洞察力,不断推出创新产品,赢得了包括微软、东芝、LG、索尼等全球知名OEM厂商的青睐。随着物联网和智能设备的兴起,Focus Enhancements加大了对低功耗、高性能芯片的研发力度,成功拓展了智能家居、可穿戴设备等领域的应用市场。

Advanced Optoelectronic Technology Corp公司的发展小趣事

随着产品线的不断扩展,AOTC开始进军国际市场。公司积极与各大电子厂商合作,将光电转换器集成到各类电子产品中,从而实现了市场份额的快速增长。同时,公司还不断投入研发,对产品进行升级迭代,以满足市场不断变化的需求。

问答坊 | AI 解惑

镜面旋转LED屏(含C源码、原理图全部资料)

网上有老外做的LED旋转显示屏,在技术上软硬件都不难,只需要花些时间慢慢调就能出来。关键是,给旋转的LED供电,对电子爱好者来说,是个麻烦事。 这里,给出一个不需要给LED电路供电的方法。即让LED和单片机电路固定不动,而是旋转一面镜子。 原 ...…

查看全部问答>

大家A有整体方案了没有

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 大家A有整体方案了没有  …

查看全部问答>

DO-254中的高设计可靠性的逻辑综合(二)

书接上文 https://bbs.eeworld.com.cn/thread-92283-1-1.html 逻辑综合 如图中所示,逻辑综合是PLD,FPGA,ASIC设计的中心环节。在数十年中,逻辑综合工具把高级语言转换为门级电路,使设计师能够在更高的抽象层次上进行硬件设计,极大的提高 ...…

查看全部问答>

防水鞋套

现在已经很少有人因为下雨而穿雨靴了,但是真碰上雨下大的时候,普通的鞋子还真是不堪一击,很快就会被湿透。这个时候,你或许需要这样一款独特的“雨衣”。它并不是给身体挡雨的,而是用来保护鞋子的。这其实就是一双防水鞋套,可以跟雨衣和雨伞放 ...…

查看全部问答>

单片机实现液晶显示的开发方案

我们的产品希望用液晶屏显示,不知各位高人有什么比较好的实现方法吗?(接口可以是232或者485)…

查看全部问答>

求920T内核原理图

本人邮箱是lixineagle@sina.com.cn...........谢谢大家了。。。…

查看全部问答>

请问哪里有无线协议的详细文档下载?

刚学GPRS开发,想找些无线通讯协议看看,google了一下,没找到,所以想请教一下,哪里有这一类的完整文档下载,谢谢!…

查看全部问答>

求助。。。。

用iar for msp430怎么下载程序到430里? 求具体过程,最好能有×××××× 还有就是怎么看程序是否在下载?单片机是否在运行? 本人初学,只有一点51的基础,还请各位多多指教…

查看全部问答>

单片机外围电路之二《电容》

电容,作为电子电路的又一基本元器件,大家也是熟悉不过的了。下面我们谈谈电容的一些基本应用及注意事项。但是,由于电容的应用非常广泛,未必能面面俱到,如果有网友觉得没有谈到的地方,希望公共完善。 1. 概念        电 ...…

查看全部问答>

提问+TI的eZ430-Chronos无线手表开发套件是否可以自己DIY心率监视器

之前在TI的在线技术支持社区上打折购买了eZ430-Chronos无线手表开发套件,确实是很有意思的一个手表形状的开发工具。 它还支持心率监视器,官方说明是bluerobin心率胸带,这个东西比较难买到,而且价格应该也比较高。有没有可能自己DIY这么个心率 ...…

查看全部问答>