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

    文章

    7564

    浏览量

    151560
  • 电路设计
    +关注

    关注

    6676

    文章

    2455

    浏览量

    204566
  • 总线
    +关注

    关注

    10

    文章

    2890

    浏览量

    88152
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1489

    浏览量

    123920
  • I2C总线
    +关注

    关注

    8

    文章

    391

    浏览量

    60995
收藏 人收藏

    评论

    相关推荐

    虚拟I2C总线串行显示电路介绍

    本文主要介绍了虚拟I2C总线串行显示电路,其中包括SAA1064引脚功能介绍、硬件电路设计、片内可编程功能以及程序举例。 1.SAA1064引脚功能 ① VDD、VEE:电源、接地端。
    发表于 07-31 16:02 3444次阅读
    虚拟<b class='flag-5'>I2C</b>总线串行显示<b class='flag-5'>电路</b>介绍

    I2C总线的电路设计

      I2C协议已经用了很多了,但是呢,在硬件设计方面,基本也是只会抄抄电路,并没有理解其中的原理和细节。这一章我们具体要说说需要怎么设计I2C电路
    发表于 07-27 16:51 1.1w次阅读
    <b class='flag-5'>I2C</b>总线的<b class='flag-5'>电路设计</b>

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

    功能和性能的优化。成为硬件电路设计高手不仅意味着拥有稳定的职业前景,更意味着能够参与和创造未来科技的核心。 本文将介绍一条通往硬件电路设计高手之路的指南,帮助各位同学掌握必要的知识和技
    的头像 发表于 07-28 13:10 5278次阅读
    怎么成为<b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>高手?

    I2C总线硬件电路设计

    I2C(Inter-Integrated Circuit)总线是由飞利浦在80年代初设计的,同一电路板上的不同组件之间进行通信。简化了电路的设计。
    发表于 09-15 15:31 1920次阅读
    <b class='flag-5'>I2C</b>总线<b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>

    I2C总线信号与测试案例(二)

    前面一章讲解了I2C总线的基本原理,那么在电路设计完成打板回来,肯定要做信号测试来验证设计
    的头像 发表于 11-20 15:49 4090次阅读
    <b class='flag-5'>I2C</b>总线信号与测试案例(二)

    使用GPIO模拟I2C电路设计

    Questions:当使用GPIO模拟I2C时应如何进行电路设计?Answer: I2C协议中规定了总线上任意器件输出低电平都会将总线拉低,也就是总线上各器件是通过线“与”的方式来连接的。所以
    发表于 12-23 11:20

    使用GPIO模拟I2C电路设计

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

    基于CP2120的SPI与I2C总线接口转换电路设计

    基于CP2120的SPI与I2C 总线接口转换电路设计:SPI总线和FC总线应用广泛,但由5--g-~ 协议不同,两种总线器件间无法进行数据通信,因此.设计了基于CP2120的SPI总线与VC总线接口转换电
    发表于 04-12 08:35 55次下载

    I2C地址切换电路

    I2C地址切换电路
    发表于 02-22 11:15 1514次阅读
    <b class='flag-5'>I2C</b>地址切换<b class='flag-5'>电路</b>

    基于I2C总线控制的音频处理电路设计

    基于I2C总线控制的音频处理电路设计 0 引 言   当前汽车音响与高保真的立体声音响系统中都包含了微处理器电路单元,这为实现音频处理提供了控制接口,可
    发表于 11-16 09:56 2504次阅读
    基于<b class='flag-5'>I2C</b>总线控制的音频处理<b class='flag-5'>电路设计</b>

    基于I2C总线控制的音频处理电路设计

    基于I2C总线控制的音频处理电路设计  当前汽车音响与高保真的立体声音响系统中都包含了微处理器电路单元,这为实现音频处理提供了控制接口
    发表于 11-16 16:34 1266次阅读

    基于CPLD的I2C总线接口设计

    电路设计中,I2C总线是比较常用的两线式串行通信方式,大多数的CPU都擅长于并口操作,不具备直接操作I2C总线接口的能力。为了使不具备I2C总线接口能力的CPU通过对并口的简单操作实
    发表于 02-12 16:11 95次下载
    基于CPLD的<b class='flag-5'>I2C</b>总线接口设计

    基于I2C总线的单片机键盘控制电路设计与实现

    为减少单片机键盘控制占用口线过多的问题,本文介绍了基于I2C总线结构的键盘控制方法给出了硬件电路和软件代码。
    发表于 03-28 16:13 4次下载

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率
    发表于 12-28 19:14 81次下载
    <b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    硬件设计:接口--不同电源系统下I2C总线电平转换电路(电桥)设计

    硬件设计:接口--不同电源系统下I2C总线电平转换电路(电桥)设计参考资料:I2C总线3.3V与5V双向电平转换电路  为了实现在不同电源系
    发表于 01-11 12:54 8次下载
    <b class='flag-5'>硬件</b>设计:接口--不同电源系统下<b class='flag-5'>I2C</b>总线电平转换<b class='flag-5'>电路</b>(电桥)设计