首页 > 其他分享 >IIC的使用

IIC的使用

时间:2024-03-14 14:55:58浏览次数:28  
标签:电阻 高电平 总线 低电平 上拉 IIC 使用

图片

IIC特点

  • 主从通信
  • 高速IIC总线一般可达400kbps以上,用于低速设备通信
  • 传输距离短,一般设计PCB板时,外设嵌入pcb
  • 半双工通信,同一时间只能单项通信,任意时刻只能有一个主机
  • IIC总线上可连接128个设备,但0x00地址不使用,因此127个设备,但实际设计情况,建议不超过8个,因为总线电容不能超过400pF
  • 速率和模式:I2C支持不同的通信速率,通常有
    • 标准模式(100 kbit/s)
    • 快速模式(400 kbit/s)
    • 快速plus模式(1Mbit/s)
    • 高速模式(3.4 Mbit/s)
    • 超高速模式(5 Mbit/s)

IIC通信流程

image

四个信号

归纳上方流程,发现有四个信号:

  1. 起始信号-第一步
  2. 发送信号-第二、四步
  3. 应答信号-第三、五步
  4. 终止信号-最后一步

4种信号都是使用SCL(时钟线)和SDA(数据线)的电平状态,来表示和传输

起始信号S&&停止信号P

img

SCL和SDA在空闲状态下,都是高电平

起始信号

SCL为高电平时,SDA为高电平向低电平跳变,广播IIC总线上的所有设备,开始传输数据

停止信号

SCL 为高电平时,SDA 由低电平向高电平跳变,广播IIC总线上的所有设备,这一次数据传输已经结束,可以开始下一次传输。

发送信号&&接收信号

读写状态

如何定义0和1?

image

  • SCL为低电平,SDA为写状态,设备可以改变SDA的高低电平状态
  • SCL为高电平,SDA为读状态,设备可以读取SDA的高低电平状态,此时SDA的状态要求稳定、

真实数据

image

数据传输

image

1. 发送信号
寻址数据

​ IIC通信流程第二步,主机广播想要通信的从机地址,IIC总线上所有设备接受到这个地址后,与自己的地址作比较,若相同,则应答

image

note:传输方向决定第四、五步的发送器和接受器

eg: 假设 传输方向 0:主\(\to\)从

第四步发送器:主机发送器

第五步接收器:从机接收器

第4+2n步和第5+2n步重复以上两个步骤,方向不可更改

信息数据

​ IIC通信流程第四步: 发送1Byte的信息

image

2. 应答信号
  • 0: 应答
  • 1: 非应答,即异常终止

IIC的常见使用方式

1. 主机给从机发数据

image

值得注意的是IIC通信终止方式:

  • 主机终止:主机发送P
  • 从机终止:主机发送数据后,从机不应答,主机发送P

2. 从机给主机发数据

image

  • 主机终止:从机发送数据后,主机不应答,从机也就不再发送数据,主机发送P

3. 主从机交互式发数据

image

note: S和P之间为一次传输,在此期间,其它设备无法抢占总线,同时主机可以再次发送寻址信号,改变传输方向。

芯片设计

电气特性

总线高低电平定义

一般总线上认为,低于 \(0.3 Vdd\) 为低电平,高于 \(0.7Vdd\) 为高电平。

对于电源电压固定为5(1±10%)v的器件,其逻辑电平规定如下:

  • Vilmax=1.5v(最大输入低电平)
  • Vihmax=3v(最大输入高电平)

对于能够适应电源电压范围较宽的器件(如cmos类),其逻辑电平规定如下:

  • Vilmax=0.3vdd(最大输入低电平)
  • Vihmax=0.7vdd(最大输入高电平)

传输速度模式

image

上拉电阻

由于I2C接口采用Open Drain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的,所以在SCL总线和SDA总线上,加上"上拉电阻",I2C的上拉电阻可以是1.5K,2.2K,4.7K。

上拉电阻放置建议

应安置在OD输出端附近。当I2C总线上主从器件(Master & Slave)两端均为OD输出时,电阻放置在信号路径的中间位置。当主设备端是软件模拟时序,而从设备是OD输出时,应将电阻安置在靠近从设备的位置

上拉电阻的分析,为什么要有一个合适的上拉电阻?

  1. 上拉电阻过小,总线上电流增大,端口输出低电平增大。

  2. 上拉电阻过大,上升沿时间增大,方波可能会变成三角波

上拉电阻的计算公式

最大电阻

\[R_p(max)=\frac{t_r}{0.8473\times C_b} \]

符号定义: 上升沿时间 tr 、负载电容 Cb 、标准上升沿时间 0.8473 有关。

最小电阻

\[R_p(min)=\frac{V_{dd}-V_{OL}(max)}{I_{OL}} \]

符号定义: 电源 \(Vdd\) 电压、GPIO 的最大输出电压 \(V_{OL}\)、 GPIO的自己最大电流 \(I_{OL}\) (3mA)有关

电源电压限制了上拉电阻的最小值 ;负载电容(总线电容)限制了上拉电阻的最大值

负载电容: IIC总线挂的设备越多,电容也就越大。

关于计算Rp的基本参数如下表所示:

image

1、标准模式:0~100KHz,上升沿时间 tr = 1us

2、快速模式:100~400KHz,上升沿时间 tr = 0.3us

3、快速plus模式:up to 3.4MHz,上升沿时间 tr = 0.12us

实例计算

在实际的应用中,决定电阻的所有变量中,总线的负载电容很难精确地计算,只能大致的估计范围。

因此通常在应用中,一般是根据估计和经验选择一个临时上拉电阻,然后根据波形的测试效果去选择合适的电阻。

在一些系统中,假设10k,4.7k,2k电阻都能满足要求,那么就要在速度和功耗中按照设计需求进行取舍,上拉电阻越大意味着功耗越低,同时要牺牲部分上升时间。上拉电阻小意味着功耗高,同时意味着总线的扩展能力更强,

由此公式,假设 Vdd 是 3.3V 供电,Cb 总线电容是200pF(虽然协议规定负载电容最大 400pF,实际上超过 200pF 波形就很不好,我们以 200pF 来计算)

标准模式-100kbit/s

\[Rp(max)= \frac{tr}{0.8437*Cb}= \frac{1000 \times 10^{-9}} {0.8437 \times 200 \times 10 ^{-12}}=5.9KΩ \]

快速模式-400kbit/s

举例说明下I2C总线基本参数是Cb=200pF,VDD=3.3V,计算Rp值。

\[Rp(max)= \frac{tr}{0.8437*Cb}= \frac{300 \times 10^{-9}} {0.8437 \times 200 \times 10 ^{-12}}=1.77KΩ\\ \]

根据以上计算,Rp应选择966.667Ω–1.77KΩ之间的即可,具体阻值根据实际情况来确定。

快速模式plus-1Mbit/s

\[Rp(max)= \frac{tr}{0.8437*Cb}= \frac{120 \times 10^{-9}} {0.8437 \times 200 \times 10 ^{-12}}=708Ω \]

由于电源电压限制了上拉电阻的最小值 ;负载电容(总线电容)限制了上拉电阻的最大值,所以三种模式下的\(Rp(min)\)一样

\[Rp(min)= \frac{ VDD - Vol(max)}{I_{ol}} = \frac{3.3-0.4}{3 \times 10^{-3}}=966.667Ω \]

一般芯片驱动电流为\(3mA\),所以上拉电阻\(\frac{3V}{R_p} < 3mA\),即\(R_p>1K\)

推荐:不同速率采用的电阻一般有以下几种:1.5K、2.2K、4.7K,总线速率越高,总线上拉电阻要越小。一般应用采用4.7K,如果挂多个设备,为保证通信速率,选择2.2k。

功耗问题

上拉电阻与总线的电容形成了RC,高速时将直接影响通讯,所以功耗与速度,二者只可得其一。

电阻越小,功耗越高。

1. IIC扩展IO芯片

芯片: PCA9555PW

PCA955PW的数据手册

image

IIC的地址引脚

指令形式

[s] [从机地址+方向] [command byte] [内容] [p]

image

值得注意的是

image

意思是,command=2,如果内容中第一个字节发送给output port 1,那么下一个字节将发送给output port 0 ,也就是说下一个字节的数据必将发给同一对寄存器(eg: output port0 && output port1)中的另一个。

command=

cmmond=2

image

2. IIC连接显示屏

3. IIC连接存储器(EEPROM)

4. IIC连接实时时钟(RTC)

5. I2C/SPI至UART

芯片: SC16IS740/750/752

参考

[1] B站-创客学院视频

[2] CSDN-IIC原理超详细讲解---值得一看

[3] 一文详解I2C总线 - -电子发烧友网 (elecfans.com)

[4] IIC上拉电阻的选择与计算-电子发烧友网 (elecfans.com)

[5] I²C - Wikipedia

标签:电阻,高电平,总线,低电平,上拉,IIC,使用
From: https://www.cnblogs.com/getonechao/p/18072856

相关文章

  • 使用openpyxl模块比对两个excel表格
      需求:集团发了一张即将下线的服务器台账表格,里面有整个集团个部门计划下线的服务器列表,大概有三五百行,但是我们部门只有80多台服务器,还不一定都包含在集团下发的表格里。手动一个个去查比较麻烦,写了个python脚本去检测两个表格中相同的地方,并返回单元格信息。第一步、取出......
  • netcat的使用
    目录一、基本使用简介二、netcat的使用渗透测试(端口扫描)要判断某个主机的监听端口是否能连上3.监听服务器4.传输文件5.网速吞吐量测试一、基本使用简介usage:nc[-46CDdFhklNnrStUuvZz][-Ilength][-iinterval][-Mttl][-mminttl][-Olength][-Pproxy_user......
  • netfilter: iptable的使用
    netfilter相关网址官网:netfilter/iptablesprojecthomepageiptables基础知识详解_LarryHai6的博客-CSDN博客_iptables使用iptables进行端口转发-云+社区-腾讯云(tencent.com)原理图iptables1.原理叙述iptables具有Filter,NAT,Mangle,Raw四种内建表:1.Filter......
  • ESP32-Cam 初步使用:网络摄像头示例
    此片意在教会你如何初步使用ESP32-cam阅读本文,你将学会:一.学会安装Arduino二.学会使用相关例程一、Arduino的下载安装及汉化1.下载Arduino(Arduino软件下载官网)2.Arduino的安装3.Arduino的汉化:左上角File-->Preferences(Ctrl+逗号也能进入)-->Settings-->Lang......
  • docker的使用方法
    一、docker安装Docker官方文档|DockerDocumentation1.自动安装wgethttp://fishros.com/install-Ofishros&&sudobashfishros2.手动安装2.1.ubuntu安装1.系统需求UbuntuJammy22.04(LTS)UbuntuImpish21.10UbuntuFocal20.04(LTS)UbuntuBionic18.04......
  • 介绍Git 的基本概念和使用方式
    Git是一种分布式版本控制系统,用于管理和跟踪源代码的变化。它具有以下基本概念和使用方式:1.仓库(Repository):Git使用仓库来存储源代码和历史记录。仓库可以是本地的,也可以是远程的。每个项目都有一个对应的仓库。2.提交(Commit):提交是对代码的一次更改。每个提交都有一个唯一......
  • 4_关于类的主动使用和被动使用
    关于类的主动使用和被动使用在JVM当中表示两个class对象是否为同一个类存在的两个必要条件:类的完整类名必须一致,包括包名。加载这个类的ClassLoader必须相同。换句话说,在JVM当中,即使这两个类对象(class对象)来源同一个class文件,被同一个虚拟机加载,但只要加载它们的ClassLoader......
  • VMwear虚拟机的安装与使用(Win11)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、前言什么是VMware?VMware与Linux二、VWmear下载与安装(1)安装VMware虚拟机软件。(2)按照指引安装完成后,单击“许可证”按钮输入密钥(3)创建RHEL8.3虚拟机。(4)对虚拟机的RHEL8.3系统做快照和恢......
  • Raspberry:Wiringpi的安装及使用
    +++title="Raspberry:Wiringpi的安装及使用"description="Wiringpi的安装及使用"date=2022-05-04T14:01:09+08:00author="chao"draft=falseimage=""math=truecategories=["os"]tags=["raspberry"]+......
  • php使用openssl生成公钥私钥
    1、确保你的PHP环境已经启用了OpenSSL扩展$config=array("digest_alg"=>"sha1","private_key_bits"=>1024,"private_key_type"=>OPENSSL_KEYTYPE_RSA,"config"=>�......