IIC总线的硬件解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: IIC总线的硬件解析

  请细看下图:虚框内为IC内的电路,而虚框外则是外部电路。


640.jpg


从上图可以看出来的信息:


 I2C总线:两根线,一根时钟线SCL,一根数据线SDA

(需要注意的是,这两个pin都是双向的,也就是说主器件跟从器件可以不是恒定不变的。)

 

 Pin脚属性:开漏输出。

 (需要通过电阻上拉到电源VCC,保证空闲时候为高电平状态且能够实现高低电平的变化。)


 总线传输数据时,当SCL的电平是高的时候,SDA的数据有效,但是不允许变化,会出错。当SCL的电平是低的时候,SDA的数据无效,允许变化。


  IIC总线有主从之分,从设备可以是多个,这个是由硬件电路与协议决定的,一般来说总线上扩展的器件数量主要由电容负载来决定。

  因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.

  所以需要根据不同的负载电容去估算支持的最大从设备的数量。

 

640.jpg


 这里重新普及下CMOS的高低电平大小:

      1、输出高电平和输出低电平

       Uoh≈VccUol≈GND

       2、输入高电平和输入低电平

       Uih≥0.7VccUil≤0.2Vcc

 

上拉电阻Rp的最小值计算:


   一般IO端口驱动能力在2mA-4mA之间。如果灌入端口的电流与太大,将加大损坏端口的风险,也会使端口输出的低电平电压被拉高,如果高于0.4V,则有可能造成数据的差错。

sink current of 3 mA for Standard-mode and Fast-mode, or 20 mA for Fast-mode Plus.


举例:评估出一个最小的上拉电阻阻值。


  电源电压VDD=5V+/-10% ,IO端口的驱动能力为3mA,Uilmax=0.4V.则最小的上拉电阻计算如下:

  (VDDmax-Uilmax)/Rpmin<3mA

代入数据,算得Rpmin的值是1.7k。

         如果VDD是3.3V的话,则计算出来的Rpmin大约是1.08K。

640.jpg


上拉电阻Rp的最大值计算:


 总线电容是线路连接和管脚的总电容,它决定了Rp 的最大值。

 标准模式:每条总线线路的最大电容负载都为400pF。(注意还要满足Tr<300ns)

 快速模式:每条总线线路的最大电容负载都为200pF。(注意还要满足Tr<300ns)

 

先看下I2C的速率:


•Bidirectional bus:

– Standard-mode (Sm), with a bit rate up to 100 kbit/s

– Fast-mode (Fm), with a bit rate up to 400 kbit/s

– Fast-mode Plus (Fm+), with a bit rate up to 1 Mbit/s

– High-speed mode (Hs-mode), with a bit rate up to 3.4 Mbit/s.

• Unidirectional bus:

– Ultra Fast-mode (UFm), with a bit rate up to 5 Mbit/s

 

 快速模式器件的输入有抑制毛刺的功能,SDA SCL输入有施密特触发器;

 快速模式器件的输出缓冲器对SDA SCL 信号的下降沿有斜率控制功能;

 如果快速模式器件的电源电压被关断,SDA SCL I/O 管脚必须悬空,不能阻塞总线;


举例:评估出一个最大的上拉电阻阻值。


 由于端口输出高电平是通过Rp实现的,线上电平从低到高变化的时候,电源通过Rp对线上负载电容CL充电,等到达高电平的阈值的时候,是需要一定的时间的,即上升时间。端口信号的上升时间可近似用充电时间常数RpCL表示。

 信号线负载电容(对地)由对方面组成,包括器件引脚、PCB信号线、连接器等。如果信号线上挂有对个器件,负载电容也会增大。

 比如总线规定,对于400kbps速率应用,信号上升时间应小于300ns,假设线上CL20pF,可计算出对应的Rp值为15k.

       实际给出的公式为:

    Rpmax = tr /(0.8473 * Cb) , tr 为上升时间,Cb为总线电容

    最大的Rpmax是变化的,要根据实际的Cb去算。


640.jpg


总结:


 如果RC充电时间常数过大,将使信号上升沿变化缓慢,达不到数据传输的要求。

 如果Rp太小,则会增大端口的sink电流。

 故在可能的情况下,Rp取值应稍大一点,以减少耗电。

 另外,通常情况下,SCLSDA两条线上的上拉电阻取值是一致的,并上拉到同一电源上。


电路干扰:


 在I2C设备的电源入口处要加滤波电容,一般入口处加10nF 0.1uF电容;SDASCL线上如果有干扰,做滤波处理,线上串一几十ohm电阻,对地加几十pF电容;

 

信号类型:


 I2C总线在传送数据过程中共有三种类型信号:开始信号,结束信号,应答信号。

 开始信号:SCL为高电平时,SDA由高电平转变为低电平跳变,表示开始通信。

 

 结束信号:SCL为高电平时,SDA由低电平转变为高电平跳变,表示结束通信。

 

 应答信号:接收数据的IC在接收到一个字节数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。

 

 开始和结束信号都是由主机发出的,应答信号是由从机发出。

 

 数据的有效性:


 SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。


硬件调试方法:


下面简单说下IIC总线设备的调试方法。


 第一,请正确给出从设备的地址,一般有pin可以给你自己配置,也有的是IC固定下来的,请务必保证总线上所有的地址都不冲突。

 第二,可以用示波器或者逻辑分析仪分析所发的数据,请务必仔细,因为这个必须每一位都不出错。


文末:在后台回复“IIC总线硬件”可以获取官方IIC协议的文档。

相关文章
|
6月前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。
|
10月前
|
C++ 内存技术
【期末不挂科-单片机考前速过系列P8】(第八章:21题速过AT89S51单片机的内部硬件结构)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P8】(第八章:21题速过AT89S51单片机的内部硬件结构)经典例题盘点(带图解析)
|
10月前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
芯片
IIC协议解析
IIC协议解析
217 0
|
缓存 开发工具 芯片
单片机:串口通信(内含硬件解析+软件编程)
单片机:串口通信(内含硬件解析+软件编程)
222 0
单片机:串口通信(内含硬件解析+软件编程)
单片机:步进电机(内含硬件原理及解析,软件编程及注释)
单片机:步进电机(内含硬件原理及解析,软件编程及注释)
150 0
单片机:步进电机(内含硬件原理及解析,软件编程及注释)
|
8天前
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。
|
9天前
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。
|
16天前
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
114 0
|
2月前
|
自然语言处理 数据处理 索引
mindspeed-llm源码解析(一)preprocess_data
mindspeed-llm是昇腾模型套件代码仓,原来叫"modelLink"。这篇文章带大家阅读一下数据处理脚本preprocess_data.py(基于1.0.0分支),数据处理是模型训练的第一步,经常会用到。
75 0

热门文章

最新文章

推荐镜像

更多