- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
I2C总线基础知识
1. 口线电平
1.1 口线电平输出方式
在I2C总线中有2个口线:SDA和SCL,这两个口线均为OC输出。OC就是开漏输出(Open Collector)的简称,有时候也叫OD输出(Open-Drain),OD是对MOS管而言,OC是对双极型管而言,在用法上没什么区别。
相对于OC输出,另一种输出叫推挽输出(Push-Pull),一般的MCU管脚输出可以设置这两种模式。这里分别介绍下这两种输出模式的不同点。
推挽输出 : 可以输出高、低电平连接数字器件,推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。
开漏输出 : 输出端相当于三极管的集电极未接任何电平, 要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。
对于MCU的开发者来讲,简单的这样理解就可以了。如果管脚设置成推挽输出模式,输出高时,IO口相当于VCC, 输出低时IO口相当于接地。如果管脚设置成开漏输出模式,输出高时,IO口的电平会和与其相连的口线进行与操作,如果都为高,才会被上拉成高电平,输出为低时,也相当于接地。
1.2 口线设置
I2C总线要实现线与的功能,所以SDA和SCL口线都必须设置为开漏输出模式。我们使用MCU的硬件I2C接口时,口线会被自动设置成开漏。但有时候我们会使用IO口来模拟I2C总线,这个时候设置口线要分两种情况:
(1)MCU的口线支持开漏输出模式:可以直接把SDA和SCL设置成开漏输出。例如Silicon 的C8051系列MCU,它的口线就支持开漏和推挽输出。
(2)MCU的口线不支持开漏输出(例如MSP430):在网上我们看到很多的例程代码都是直接设置IO口的高低电平,这样做其实是不太合理的。因为我们只满足了I2C总线在自己这端的时序要求,而没有考虑到连接在总线上的其他器件,如果总线上其他器件的电平和MCU输出的电平一致,这样做是没问题的,如果两边的电平不一致时,这样做就有一定风险造成IO的损坏。当你输出高时,相当于IO口连接到VCC,如果对方这是恰好输出的是低电平,那就相当于短路了。当然如果软件做的合理,是可以避免这样的事情的,但总线上的很多器件都不是由我们控制的,这时候最合理的做法是,当设置口线电平为高时,把口线设置成输入状态,然后利用口线上的上拉电阻来把口线拉高。这样即使是两边电平不一致时,也不会造成IO口的损坏。
2. 总线口线
I2C是由SDA、SCL两个口线组成的。这两个口线的高低电平组合、上升下降边沿组合就形成了总线的各种时序。图2.1是I2C总线的各种时序组合:
图 2.1 I2C 电平组合
I2C总线关心的,9,10分别被定义为I2C的START和STOP信号。
I2C数据总线SDA是在时钟为高时有效,在时钟SCL为高期间,SDA如果发生了电平变化就会终止或重启I2C总线,所以我们在数据传输过程中,要在SCL为低的时候去更改SDA的电平。
3. I2C总线的时序
??? 在上一节中讲到了由SDA和SCL能形成的各种电平组合,那么这些组合在I2C总线上应用我们一步一步的来分析I2C总线的逻辑时序。首先是I2C的START信号。
??? START信号是在SCL高电平时,SDA从高电平变成低电平。
?这和I2C的多主性能有一定关系。因为I2C的总线是开漏输出的,总线接上拉电阻后,SCL和SDA就变成了高电平,这个时候挂接在总线上的任意一个I2C主机口可以把SDA拉,即产生了一个START信号,挂接在总线上的其他I2C主机检测到这个信号后就不能去操作I2C总线了,否则会发生冲突。直到检测到一个STOP信号为止。 STOP的信号是在SCL口线为高时,SDA产生一个上升沿。STOP信号之后,I2C总线恢复到初始状态
下面我以MSP430为例,下代码 首先,我们需要把SDA和SCL的口线都设置成输入模式,当口线设置成输入模式时,PXOUT寄存器的值是用来设置口线是上拉还是下拉,PXOUT需要设置成上拉因为如果设置成下拉的话,一般I2C的总线会接2个上拉电阻,就相当于总线上是图的等效电路。
当我们设置口线为输入时,口线的高电平就不会是VCC,而是一个分压后的电平。
您可能关注的文档
- 七年级生物动物在生物圈中作用.ppt
- 第十三章 计算机网络复习大纲11.doc
- 数据结构课件(华南师范大学)节节三.pdf
- 第三章 OV3860蓝牙模块规格书2012.pdf
- 需求分析+概要设计+测试用例资料.pdf
- 第四章 安防工程验收.doc
- 软件单元测试技巧1的知识.ppt
- 第十三章 济宁市2014年高中阶段学校招生考试物理试题含答案.docx
- 第十一章 国际礼仪网上题目.doc
- 第十三章 监控系统技术标投标书.pdf
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)