0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件电路设计之I2C电路设计

CHANBAEK 来源:一杯苦Coffee 作者:一杯苦Coffee 2023-12-04 11:28 次阅读

1 简介

IIC-BUS的英文全称是Inter-Integrated Circuit Bus,其主要的目的是实现微控制器与外围设备进行数据传输。它是一种半双工通信方式,通信方式简单,仅包含SDA(数据总线)和SCL(时钟总线)组成。通信总线通常由主设备和从设备组成,从设备是通过设备地址来进行区分,在同一时刻,设备之间数据传送只能由一个设备传送给对应地址的设备。

图片

什么是I2C总线主设备和从设备?

主设备 :I2C总线的主导者,能向从西安发送起始信号和中止信号,且能决定总线数据的发送与接收。另外,主设备能发送指令,同时既能向从设备读取数据也能向从设备写入数据。

从设备 :I2C总线的被动者,对主设备发送的数据做出及时响应。从设备的类型比较多,具体可以是EEROM、各种传感器等。

I2C总线最大可以挂在多少个设备?

最大电容限制(标准模式和快速模式为400pF,高速模式为500pF)。且在实际的应用过程中最好保证I2C设备不超过8个(经验之谈)。

有些设备预留地址线的仅3位(相同设备最多挂在8个,2^3=8),甚至更少。

I2C总线最大的传输速率为多少?

序号模式最大速率
1标准模式100kb/s
2快速模式400kbit/s
3高速模式3.4Mbit/s

之前在讲串口电路时,有讲过一个“波特率”概念,不知道是否有人知道波特率和比特率的区别?

波特率:单位时间内传输的码元个数。

比特率:单位时间内传输的二级制位数。

二者换算关系为:比特率=波特率×log2n,此处分享一个计算的案例:

图片

2 I2C总线特点

  • 简单和灵活 :仅包含数据线和时钟线,物理通信链路简单。
  • 双向传输 :主设备既能向从设备发送数据,从设备也能向主设备发送数据。
  • 时钟同步 :采用串行时钟总线,能有效保证数据的准确性。
  • 多种设备支持 :总线上挂载的设备,可以挂在多种不同设备,不受设备类型的影响。

3 编码规则

  • 起始信号和停止信号
  • 起始信号:当时钟信号为高电平时,数据线由高电平变为低电平的过程。
  • 停止信号:当时钟信号为高电平时,数据线由低电平变为高电平的过程。

图片

注意: 在IIC空闲时,SDA、SCL都是保持高电平 。(I2C信号出现故障时,先查看SCL和SDA的电平)

  • 应答信号和非应答信号
  • 应答信号:当主设备传送8位数据结束后,主机会将SDA线拉高,此时如果从设备正确接收数据则会将SDA拉低并在SCL高电平时保持低电平,这个信号为ACK信号
  • 非应答信号:如果在传输8位数据后从机没有将SDA拉低则该信号为NACK。

图片

4 信号传输

IIC总线上面的每一个设备都有唯一的地址与之对应,信号传输时也是根据指定的地址找到设备来传输信号。

  • 写操作
  • 主设备确定从设备地址,发送起始信号;
  • 向总线设备的地址以及数据传输方向;
  • 从设备收到主设备的信号后没回复一个应答信号;
  • 主设备向从设备以字节为单位发送数据,且每发送一个数据,都会接收来自从设备的应答信号;
  • 数据发送完成后,从设备发送一个停止信号,表明此次数据传输结束。

图片

  • 读数据
  • 主设备确认从设备地址,发送起始信号;
  • 向总线上发送从设备的地址以及读取数据的命令;
  • 对应的从设备回复应答信号;
  • 从设备向主设备回复主设备要读取的数据;
  • 从设备数据发送给完成后,主机向从设备发送一个非应答信号,然后中止数据的读取。

图片

5 总线仲裁

总线上存在两个及两个以上主设备时,每个节点都可以作为主设备向总线上发送命令或者数据。当总线上同时存在两个或者两个以上主设备发送信号时,就会造成总线冲突。此时,就需要进行I2C总线仲裁。分以下两个方面来说:

时钟同步

时钟总线(SCL)具有“线与”的逻辑功能,就是当总线有任意一个节点向总线发送低电平时,总线就会呈现低电平的状态。(所有节点呈现高电平时,总线表现为高电平)

SDA仲裁

SDA仲裁也是基于“线与”的逻辑功能,节点发送数据后,比较总线与发送的数据是否一致,保持一致则继续发送,否则退出竞争。SDA仲裁这种机制保证了I2C中线上即使有多个主设备,也不会造成数据丢失。

仲裁过程

  1. 设备1和设备2同时向设备发送起始信号,总线上电平与发送电平一致,继续发送数据;
  2. 设备1和设备2同时向设备发送低电平,总线上电平与发送电平一致,继续发送数据;
  3. 设备1发送高电平。设备2发送低电平。此时,总线呈现低电平状态。总线的电平与设备1发送的电平不一致,退出竞争,且变为从设备。设备2继续发送数据。

5 上拉电阻计算

由于I2C总线端口的高电平是通过上拉电阻实现,线上的电平从低变高时,电源通过上拉电阻对线上负载电容CL充电,这需要一定的上升时间。

电容充电一般公式:

图片

整理可得:

图片

I2C规范将低于VIL或0.3VDD的电压定义为逻辑低电平,同样将高于VIH或0.7VDD的电压定义为逻辑高电平。由上式可以求得:

图片

即T1=0.356675*CL

图片

所以最大上拉电阻为:

图片

结论:电源电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。

当Tr取最大值,CL取最小值时,R有最大值。

模式上升沿的最大时间总线负载最大容限
标准模式1000ns400pF
快速模式300ns400pF
高速模式120ns550pF

所以快速模式下,负载电容为50pF:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 电路设计
    +关注

    关注

    6565

    文章

    2317

    浏览量

    195422
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87215
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120816
  • I2C总线
    +关注

    关注

    8

    文章

    357

    浏览量

    60408
收藏 人收藏

    评论

    相关推荐

    怎么成为硬件电路设计高手?

    ▼关注公众号: 工程师看海▼   在现代科技快速发展的时代,电子设备无处不在,而硬件电路设计是实现这些设备功能的基础。无论是智能手机、电脑、家用电器,还是工业控制系统,都需要经过精密的电路设计来实现
    的头像 发表于 07-28 13:10 3462次阅读
    怎么成为<b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>高手?

    硬件电路设计之晶体与晶振电路设计

      晶体与晶振在电路设计中的应用十分广泛,对于数字电路,一个稳定的时钟信号,是系统稳定的前提。
    的头像 发表于 11-22 10:44 717次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>之晶体与晶振<b class='flag-5'>电路设计</b>

    硬件电路设计

    十五年硬件电路设计精华
    发表于 11-08 17:26

    硬件电路设计流程系列

    一、硬件电路设计流程系列--硬件电路设计规范 二、硬件电路设计流程系列--方案设计(1) :主芯
    发表于 10-17 17:16

    基于I2C总线的CMOS图像传感器接口电路设计

    一种基于 I2C 控制总线的 CMOS 图像传感器接口电路,能够有效控制CMOS 图像传感器的指令,产生数码相机专用集成电路其他模块的同步时序,在 MCU 的控制下完成取景和拍照操作,并支持多种规格
    发表于 11-30 11:27

    核心板硬件电路设计

    核心板接口说明核心板硬件电路设计USB Host电路设计
    发表于 02-01 06:22

    软件I2C硬件I2C区别

    目录一、软件I2C硬件I2C1、软件I2C2硬件I2C3、软硬
    发表于 08-20 08:08

    什么是软件I2C硬件I2C

    学习I2C总线通信协议,完成基于I2C硬件协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。具体任务:1)解释什么是“软件I2C”和“
    发表于 08-23 06:19

    硬件电路设计的思路分享

    在学习电路设计的时候,不知道你是否有这样的困扰:明明自己学了很多硬件电路理论,也做过了一些基础操作实践,但还是无法设计出自己理想的电路。归根结底,我们缺少的是
    发表于 11-11 08:40

    硬件I2C与模拟I2C相关资料推荐

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率
    发表于 02-22 06:02

    使用GPIO模拟I2C电路设计

    当使用 GPIO 模拟 I2C 时应如何进行电路设计
    发表于 10-23 08:22

    硬件电路设计与实践

    硬件电路设计与实践,非常实用的教材 有需要的朋友下来看看
    发表于 12-08 14:48 0次下载

    硬件电路设计具体详解

    硬件电路设计具体详解。
    发表于 04-05 11:51 28次下载

    MCU电路设计经验

    MCU电路设计经验,在做硬件电路的时候,可以做一个参考
    发表于 06-17 14:59 20次下载

    硬件电路设计流程--原理图设计

    电路教程相关知识的资料,关于硬件电路设计流程--原理图设计
    发表于 10-10 14:34 0次下载