为鼓励大家动手动脑,早日成为技术大牛。电路城论坛现在推出#每日一练#栏目,由版块版主出题及提供答案,内容涉及电源,射频,单片机等各种技术话题。我们会在周一至周五的早上10:30更新问题和前天问题的解题思路及答案。欢迎大家参与。
本期内容来源于:
模拟狂人,电子信息工程专业,全国大学生电子竞赛省二等奖获得者,对模拟电子技术、数字电子技术、单片机技术学习有丰富经验。现主要从事ARM开发工作,有丰富项目经验。
I2C总线是PHLIPS公司在20世纪80年代推出的一种串行总线。具有引脚少,硬件实现简单,可扩展性强的优点。I2C总线的另一优点是支持多主控,总线上任何能够进行发送/接收数据的设备都可以占领总线。当然,任意时间点上只能存在一个主控。在硬件上,I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成,连接到总线上的所有器件的 SCL 都连到一起,所有 SDA 都连到一起。I2C 总线是开漏引脚并联的结构,因此我们外部要添加上拉电阻。对于开漏电路外部加上拉电阻,就组成了线“与”的关系。总线上线“与”的关系就是说,所有接入的器件保持高电平,这条线才是高电平,而任何一个器件输出一个低电平,那这条线就会保持低电平,因此可以做到任何一个器件都可以拉低电平,也就是任何一个器件都可以作为主机。
I2C时序流程图 我们在学习 UART 串行通信的时候,知道了通信流程分为起始位、数据位、停止位这三部分,同理在 I2C中也有起始信号、数据传输和停止信号。从图上可以看出来,I2C 和 UART 时序流程有相似性,也有一定的区别。UART 每个字节中,都有一个起始位、8 个数据位、1 位停止位。而 I2C分为起始信号、数据传输部分、停止信号。其中数据传输部分,可以一次通信过程传输很多个字节,字节数是不受限制的,而每个字节的数据最后也跟了一位,这一位叫做应答位,通常用 ACK 表示,有点类似于 UART的停止位。 下面大家就一起把 I2C通信时序进行剖析。
答案: [/hide]
参与讨论,即可快速获取以下几本电源书籍(电子版)
想成为论坛版主?想在#每日一练#展现你的技术才华?请联系工程师小助手Q:2740521371
|