I2C总线上拉电阻计算

2024-06-03 16:52
文章标签 计算 总线 上拉 i2c 电阻

本文主要是介绍I2C总线上拉电阻计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

I2C 总线上拉电阻计算

I2C接口的上拉电阻计算是一个常见问题。本文介绍如何使用简单的方程式进行计算。

1 介绍

I2C通信标准是当今电子系统中应用最广泛的芯片间通信标准。它是一种漏极开路/集电极开路通信标准,这意味着可以连接具有不同电源轨的集成电路 (IC) 进行通信。上拉电阻需要从I2C线路连接到电源,以实现通信,如图1所示。上拉电阻器在漏极开路接口未将线路驱动至低电平时将线路拉高。上拉电阻的值是 I2C 系统的重要设计考虑因素,因为不正确的值会导致信号丢失。在本文中,我们将介绍上拉电阻计算的简单方程,系统设计人员可以使用这些方程对他们的设计进行快速计算。
不同IC之间以及I2C总线上拉电阻器之间的I2C通信

图 1.应用示例显示系统上不同IC之间以及I2C总线上拉电阻器之间的I2C通信

2 上拉电阻计算

强上拉(小电阻)可防止 IC 上的 I2C 引脚驱动至低电平。IC的输入缓冲器可读取为有效逻辑低电平的VOL电平决定了最小上拉电阻[RP(min)]。RP(min) 是 VCC、VOL (max) 和 IOL 的函数:

RP(min)=(VCC-VOL(max))/IOL

由于 I2C 标准上升时间规格,最大上拉电阻受总线电容 (Cb) 的限制。如果上拉电阻值过高,则 I2C 线在被拉低之前可能不会上升到逻辑高电平。从时间 t = 0 开始,RC 电路对幅度为 VCC 的电压阶跃的响应由时间常数 RC 表征。电压波形可以写成:

在这里插入图片描述

对于 VIH = 0.7 × VCC:
在这里插入图片描述

对于 VIL = 0.3 × VCC:
在这里插入图片描述

I2C 总线的上升时间可以写成:

tr = t2-t1 = 0.8473×Rp×Cb

最大上拉电阻是最大上升时间 (tr) 的函数:

Rp(max) = tr (0.8473xCb)

其中 I2C 规范的参数列在表 1 中。

表 1.来自 I2C 规范的参数

参数标准模式(Max)快速模式(Max)快速模式增强(Max)单位
trSDA 和 SCL 信号的上升时间1000300120ns
cb每条总线的容性负载400400550pF
Vol低电平输出电压(3 mA电流吸收时,VCC > 2 V)0.40.40.4V
低电平输出电压(2 mA电流吸收时,VCC ≤ 2 V)0.2 × VCC0.2 × VCCV

RP (min) 在图 2 中绘制为 VCC 的函数。在图3中,标准模式和快速模式I2C的RP (max)绘制为Cb的函数。


最小上拉电阻 [RP (min)] 与上拉基准电压 (VCC) 的关系

VoL = 0.2 xVcc,loL = 2 mA when Vcc <= 2 V
VoL = 0.4 V,loL = 3 mA when Vcc > 2V
图2.最小上拉电阻 [RP (min)] 与上拉基准电压 (VCC) 的关系

最大上拉电阻 [RP (max)] 与总线电容 (Cb) 的关系

Standard-mode (fscL= 100 kHz, tr = 1 us)
Fast-mode (fscL= 400 KHz, tr= 300 ns)
图3.最大上拉电阻 [RP (max)] 与总线电容 (Cb) 的关系

3 速度与功耗的权衡

一旦选择了上拉电阻的最小值和最大值,就可以根据速度和功率预算之间的权衡来决定电阻值。由于RC延迟较小,较小的电阻器将提供更高的速度,而较大的电阻器将提供更低的功耗。

4 示例

对于具有以下参数的快速模式 I2C 通信,计算上拉电阻值。
Cb = 200 pF,VCC = 3.3 V
解:
取表 1 中的值:

I2C 通信上拉电阻计算
I2C 通信上拉电阻计算:

因此,我们可以在966.667 Ω和1.77 kΩ之间选择任何可用的电阻值。上拉电阻的值可以根据功耗和速度的权衡来选择。

这篇关于I2C总线上拉电阻计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027561

相关文章

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Java - BigDecimal 计算分位(百分位)

日常开发中,如果使用数据库来直接查询一组数据的分位数,就比较简单,直接使用对应的函数就可以了,例如:         PERCENT_RANK() OVER(PARTITION BY 分组列名 ORDER BY 目标列名) AS 目标列名_分位数         如果是需要在代码逻辑部分进行分位数的计算,就需要我们自己写一个工具类来支持计算了 import static ja

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成