I2C上拉电阻的选型与配置实战指南

I2C上拉电阻计算实战:从理论到选型避坑指南(附TCA9517配置) 本文深入解析I2C总线设计中上拉电阻的关键作用与精确计算方法,从最小阻值(R_P(min))与最大阻值(R_P(max))的计算公式出发,结合总线电容、通信速率等参数,提供了从理论到实战的选型指南。文章特别针对工程中常见的并联电阻、TVS管结电容等“坑”点提供了避坑建议,并以TCA9517总线中继器为例,详细阐述了在复杂多电压、大电容负载场景下的分侧电阻配置策略,是硬件电路设计工程师的实用参考。 阅读详情

1. 上拉电阻:I2C总线的“定海神针”

很多刚接触嵌入式开发的朋友,第一次用I2C驱动一个传感器或者EEPROM时,经常会遇到一个让人抓狂的问题:程序逻辑都对,但设备就是没反应,或者数据时对时错。我当年也踩过这个坑,折腾了半天,最后发现原理图上少画了两个小小的电阻——上拉电阻。这玩意儿看着不起眼,却是I2C总线能正常工作的“生命线”。你可以把它想象成一根有弹性的橡皮筋,平时把数据线(SDA)和时钟线(SCL)稳稳地拉在高电平(比如3.3V),只有当设备需要发送“0”的时候,才用力把线拉低到地。没有这根“橡皮筋”,两条线就处于“悬空”状态,任何一点电磁干扰都可能导致信号乱跳,通信自然就失败了。

那么,上拉电阻在I2C里到底干了哪些具体活儿呢?我结合自己调试过的几个项目,给大家掰开揉碎了讲讲。

首先,它提供了确定的总线空闲状态。 这是最核心的作用。I2C总线是“线与”逻辑,所有设备都通过开漏(Open-Drain)或集电极开路(Open-Collector)输出连接到总线上。这种结构的好处是能轻松实现多主机仲裁,但缺点就是设备只能把线拉低,不能主动拉高。当所有设备都不“使劲”拉低总线时,总线电平是未知的。上拉电阻的作用,就是在这个时候,给总线一个确定的“高电平”状态。想象一下会议室里大家都不说话时,背景里播放着轻柔的背景音乐,避免了令人尴尬的沉默和杂音。这个“背景音乐”就是上拉电阻提供的稳定高电平。

其次,它确保了数据采样的窗口稳定。 I2C协议规定,数据在时钟线SCL为高电平期间必须保持稳定,接收方就在这个“窗口期”读取SDA线上的电平是1还是0。如果SDA线没有被上拉电阻牢牢“按住”,在SCL高电平期间就可能因为干扰而抖动,导致读错数据。上拉电阻就像给信号加了一个“稳定器”,让数据在需要被读取的时候,能老老实实地待在该在的位置。

再者,它让“点头确认”(ACK)成为可能。 I2C通信中,接收方每收到一个字节数据,都需要在第9个时钟脉冲期间,将SDA线拉低,以此向发送方说一声“收到啦!”。这个拉低的动作,正是基于SDA线平时被上拉电阻维持在高电平的前提。接收方只需要“轻轻一拉”,就能产生一个从高到低的跳变,完成ACK信号。如果没有上拉电阻,接收方想发ACK都没地方“起跳”。

此外,它还默默承担着限流和保护的角色。 当某个设备把总线拉低到地时,电流会从电源VCC通过上拉电阻流到地。这个电阻值的大小,直接决定了电流的大小。选一个合适的阻值,既能保证信号变化速度,又能把电流限制在安全范围内,防止损坏设备脆弱的IO口。它就像一个智能水龙头,既保证有水可用,又防止水压过大冲坏管道。

最后,它极大地简化了电路设计。正因为有了上拉电阻,所有I2C设备只需要实现“拉低”这个单一动作即可,芯片内部的输出级电路可以做得非常简单,成本也更低。整个总线系统因此变得优雅而高效。

所以,千万别小看这两个电阻。它们不是可有可无的,而是I2C总线协议的物理基础。接下来,我们就聊聊怎么给这根“橡皮筋”选个合适的“劲道”,也就是如何选择上拉电阻的阻值。

2. 上拉电阻值怎么选?一个公式与三大实战场景

选上拉电阻值,可不是随便从物料盒里抓个4.7kΩ或者10kΩ焊上就完事的。电阻值选大了,信号上升沿太慢,高速通信会出错;选小了,耗电剧增,甚至可能烧坏芯片。这里头有个经典的权衡。我一般会从一个基础公式出发,再根据不同的实际场景做调整。

这个核心公式关系到信号的上升时间: Tr = 0.357 * Rp * Cb

我来解释一下这个公式里的“演员”:

  • Tr:这是信号从低电平跳到高电平所需的时间,也就是上升时间。I2C协议规范里对这个时间有明确要求,不能太长。
  • Rp:这就是我们要选的上拉电阻的阻值。
  • Cb:这是整条I2C总线上的总负载电容。它包括了所有连接到总线上的设备的引脚电容、PCB走线的寄生电容等等。总线越长、挂的设备越多,这个电容就越大。

公式很简单:总线电容(Cb)是客观存在的,你希望上升时间(Tr)满足协议要求,那么就能反推出上拉电阻(Rp)的最大允许值。电阻越大,上升时间越长,速度越慢。

那么,协议要求的上升时间是多少呢?这取决于你用的I2C模式:

  • 标准模式(100 kbps):要求 Tr ≤ 1000 ns。
  • 快速模式(400 kbps):要求 Tr ≤ 300 ns。
  • 快速模式+(1 Mbps):要求 Tr ≤ 120 ns。
  • 高速模式(3.4 Mbps):这个模式更复杂,通常需要特定的驱动电路,对上拉电阻选择有特殊要求,我们稍后讨论。

假设你设计一个400kbps的系统,总线电容Cb经测量或估算为200pF(这是一个比较典型的数值)。那么,允许的最大上拉电阻 Rp ≤ Tr / (0.357 * Cb) = 300ns / (0.357 * 200pF) ≈ 4.2kΩ。这意味着,为了满足400kbps的时序,你的上拉电阻不能大于4.2kΩ,通常我们会选择比如3.3kΩ或2.2kΩ来留出一些余量。

但是,公式只是理论起点。实际项目中,我们得考虑下面这几个活生生的场景:

2.1 场景一:追求速度的高速通信

当你使用快速模式(400kbps)甚至更高速度时,信号完整性是首要敌人。这时候,你必须优先保证足够短的上升时间。

我的实战经验是:

  1. 精确估算或测量Cb:不要拍脑袋。如果总线超过10厘米,挂了3个以上设备,最好用示波器配合已知的小电阻(如100欧姆)注入一个阶跃信号,实际测量一下时间常数来估算电容。我曾在一条连接了5个传感器的总线上,实测Cb达到了350pF,远超最初150pF的预估。
  2. 选择较小的电阻值:在公式计算的基础上,选择更小一些的电阻。比如计算出来最大可用4.7kΩ,我会优先选用2.2kΩ或1.5kΩ。这样能有效对抗因PCB布局、温度变化等带来的电容微增。
  3. 注意电源电压的影响:同样的电阻值,在3.3V系统下比在5V系统下,拉高总线的“力气”更小(因为高低电平压差更小),上升沿更容易变缓。因此,在3.3V低压系统中,如果想跑高速,电阻值需要选得比5V系统更小一些。
  4. 检查芯片驱动能力:电阻变小,当总线被拉低时,电流 I = Vcc / Rp 会变大。务必查阅主控和所有从设备数据手册的IO口“最大下拉电流”规格,确保这个电流值在安全范围内。比如,如果Vcc=3.3V,Rp=1kΩ,拉低时的电流就是3.3mA,要确保所有设备的IO口都能承受这个灌电流。

一个高速场景的配置示例:

  • 模式:快速模式+ (1 Mbps)
  • Vcc:3.3V
  • 估算Cb:150 pF
  • 计算Rp_max:120ns / (0.357 * 150pF) ≈ 2.24kΩ
  • 实战选择:为留足裕量,选择 1.5kΩ。此时拉低电流约为2.2mA,需确认所有设备IO口 sink current 大于此值。
  • 走线要点:总线尽可能短,远离高频噪声源,最好在SDA和SCL线上串联小电阻(如22Ω-100Ω)来抑制过冲和振铃,这对高速信号很有帮助。

2.2 场景二:电池供电的低功耗设计

对于靠电池工作的设备,比如物联网传感器节点,每一微安的电流都至关重要。此时,上拉电阻就成了静态功耗的一个来源。因为只要总线为高电平,电流就会通过电阻从Vcc流到IO口内部(虽然很小)。电阻值越大,这个漏电流就越小。

低功耗设计的选型策略:

  1. 在满足时序的前提下,尽可能选用大电阻:如果你的通信频率只是标准的100kbps,甚至更低(很多传感器支持10kbps模式),那么上升时间的要求非常宽松。这时完全可以选择10kΩ,甚至47kΩ、100kΩ的电阻。我曾在一个纽扣电池供电的温度记录仪上,使用了100kΩ的上拉电阻,通信速率设为10kbps,工作非常稳定,静态电流降低了十几微安。
  2. 利用GPIO内部上拉:很多现代微控制器(如STM32, ESP32)的IO口都提供了可编程的内部上拉电阻,阻值通常在30kΩ-50kΩ左右。在低功耗、低速场景下,启用内部上拉,可以省去两个外部电阻,节省成本和空间。但要注意:内部上拉电阻一般精度较差(离散度可能±30%),且阻值固定。如果总线电容稍大,可能无法满足标准100kbps的上升时间要求。所以,仅在对速度和可靠性要求不高的场景下推荐使用。
  3. 动态管理上拉:这是一个高级技巧。对于间歇性工作的设备,可以在MCU软件控制下,通过一个MOSFET管来控制外部上拉电阻的电源。当总线需要活动时,才接通上拉电阻的电源;进入深度睡眠前,则断开。这样可以彻底消除上拉电阻的功耗。实现起来稍复杂,但对功耗的优化是革命性的。

一个低功耗场景的配置示例:

  • 模式:标准模式 (100 kbps)
  • Vcc:3.0V (锂亚电池)
  • 估算Cb:很低,仅MCU和一个传感器,约100 pF
  • 计算Rp_max:非常宽松,理论上可达28kΩ。
  • 实战选择:为极致省电,选择 47kΩ 外部电阻,或直接使用MCU的 ~40kΩ内部上拉。实测通信正常,静态电流满足要求。

2.3 场景三:长距离与多设备的总线扩展

当你的I2C总线需要拉得很长(比如超过1米),或者挂载了很多设备(超过8个)时,总负载电容Cb会变得很大。这会导致信号边沿严重变缓,即使使用很小的上拉电阻也无济于事,因为RC时间常数里的C太大了。

应对长距离多设备的办法:

  1. 降低通信速率:这是最直接有效的方法。不要试图在一条长总线上跑400kbps,降到100kbps甚至50kbps,会立刻稳定很多。
  2. 使用专用的I2C总线缓冲器/中继器芯片:例如PCA9515、PCA9615这类芯片。它们的作用是把一条长总线分割成几段,每一段都有自己的上拉电阻和较小的负载电容。中继器芯片在中间起到信号整形和放大作用,能有效驱动长线缆和大电容。我在一个工业巡检设备里,用PCA9515成功驱动了超过5米的总线,挂了12个IO扩展芯片。
  3. 调整上拉电阻值:在这种场景下,单纯减小电阻值来对抗大电容,会导致电流过大。需要在满足上升时间和电流限制之间找一个折中点。可能最终选用的电阻值(如2.2kΩ)会比纯计算值(如1kΩ)大一些,同时必须把通信速率降下来配合。
  4. 考虑使用差分I2C:对于更长距离、更恶劣环境的通信,可以考虑使用SMbus的衍生协议或类似PCA9615这样的芯片,它们支持差分信号传输,抗干扰能力极强,距离可以延伸到几十米。

配置建议表格:

应用场景核心矛盾电阻选型倾向额外措施典型阻值参考 (Vcc=3.3V)
高速通信上升时间 vs. 驱动电流偏小,优先保证边沿速度精确估算Cb,检查IO驱动能力,串联小电阻1kΩ - 2.2kΩ
低功耗设计功耗 vs. 上升时间偏大,在满足最低速率下尽量取大启用内部上拉,动态电源管理10kΩ - 100kΩ (或内部上拉)
长线多设备大负载电容 vs. 电流/速度折中,并降低速率使用总线缓冲器中继器,降低波特率2.2kΩ - 4.7kΩ (配合降速)

注意:上拉电阻的功率也要留意。虽然大多数情况下电流很小,但在5V系统、使用很小电阻(如560Ω)时,拉低瞬间的功耗 P = V²/R = 25/560 ≈ 45mW,需选用0402或更大封装的电阻,0603及以上更稳妥。

3. 硬件配置实战:从原理图到PCB的细节

知道了选多大电阻,接下来就得把它正确地放到电路里。这里面的门道,可不仅仅是连两根线那么简单。我画过不少板子,也调试过更多别人的板子,总结出几个硬件配置上容易踩坑的地方。

3.1 连接方式:集中上拉 vs. 分布式上拉

集中上拉是最常见的方式,就是在总线的主设备端(通常是MCU附近),为SDA和SCL各放置一个上拉电阻,连接到电源。这种方式简单,布局紧凑。但是,当总线较长时,信号从远端设备反射回来,在电阻处可能会产生振铃。

分布式上拉(或称为多点上拉)则是在总线上关键的几个点(例如,主设备处、总线中点和末端)都放置上拉电阻,但这些电阻的并联总值要等于你计算出的目标阻值。例如,你需要一个2.2kΩ的上拉,可以采用两个4.4kΩ的电阻分别放在总线两端并联实现。这种方式能改善长距离传输的信号质量,因为它在多个点提供了上拉“力道”,减少了信号反射。但要注意计算并联值,并且会略微增加静态功耗。

我的建议是:对于大多数板内通信(距离<20cm),设备少于5个的情况,用集中上拉就足够了,简单可靠。如果总线需要走到板外,或者设备很多、布局分散,可以考虑分布式上拉。

3.2 PCB布局布线:看不见的电容杀手

PCB设计对I2C信号质量影响巨大,尤其是那条“幽灵般”的总线电容Cb。

  1. 走线要短而粗:尽量缩短SDA和SCL的走线长度。走线越长,对地电容就越大。在空间允许的情况下,适当增加走线宽度,可以减少电感,但也会略微增加电容,需要权衡。通常5-10mil的线宽是常见的。
  2. 平行走线,保持等距:SDA和SCL最好并排走线,并始终保持大致相同的间距。这样有助于它们受到的干扰一致,形成某种程度的“伪差分”对。但切记,I2C不是差分信号,所以不需要像USB那样严格等长等距。
  3. 远离噪声源:绝对不要让I2C走线靠近开关电源的电感、晶振、时钟线、电机驱动线等高频、大电流的噪声源。如果无法避免,必须在中间用地线或电源线进行隔离。
  4. 上拉电阻的位置:如果采用集中上拉,电阻应尽量靠近主控制器的I2C引脚放置。这样能确保主设备在释放总线后,能最快地将总线恢复到高电平。电阻到引脚和到电源的走线也要尽量短。
  5. 预留调试接口和备选位置:我有个习惯,会在原理图上将上拉电阻的值标注为“NC”(不贴装)或“TBD”(待定),并在PCB上预留出焊盘。同时,在总线靠近接口或远端设备的位置,也多预留一对上拉电阻的焊盘。这样在调试时,如果发现信号不好,可以非常方便地尝试不同的电阻值,或者改为分布式上拉,飞线测试,事半功倍。

3.3 电源去耦:为稳定通信保驾护航

上拉电阻的电源一定要干净。很多通信不稳定的问题,根源是电源噪声。务必在给上拉电阻供电的电源入口处,放置一个0.1uF的陶瓷电容进行去耦,并且这个电容要尽可能靠近上拉电阻的电源引脚。如果系统电源噪声较大,甚至可以再并联一个1uF或10uF的电容。

4. 软件配置与调试:让理论照进现实

硬件焊好了,电阻也选好了,最后一步就是通过软件配置和调试,让整个系统跑起来。这里分享几个我常用的调试技巧和软件注意事项。

4.1 初始化配置要点

大多数MCU的I2C外设都需要初始化,这里有几个关键参数和上拉电阻相关:

  1. 时钟速度设置:这里设置的是SCL时钟的频率。务必根据你最终选择的上拉电阻值和总线电容,设置一个保守的、留有余地的时钟速度。 比如,你计算后认为系统在400kbps下勉强可行,那么初始化时可以先设为100kbps,稳定后再尝试提升。不要一上来就怼最高速度。
  2. GPIO模式设置:一定要将MCU的SDA和SCL引脚配置为开漏输出(Open-Drain)模式,并使能内部上拉(如果使用的话)。如果错误地配置为推挽输出,当两个设备一个输出高一个输出低时,会形成电源到地的直接短路,可能瞬间损坏芯片!这是一个非常严重的错误。
  3. 总线空闲检查:在启动任何通信前,优秀的驱动代码应该先检查一下总线状态。如果SDA和SCL都为高,说明总线空闲,可以发起起始条件。如果任何一条线为低,说明总线可能被锁死(某个设备故障一直拉低总线),此时应进行错误处理,而不是强行发起通信。

4.2 示波器:你最好的朋友

没有示波器,调试I2C就像蒙着眼睛走路。一个带有I2C解码功能的数字示波器是必备工具。看什么呢?

  1. 看波形形状:重点观察SDA和SCL信号从低到高的上升沿。它应该是干净、陡峭的指数曲线。如果上升沿变得圆滑、缓慢,像“弓背”一样,那就是上升时间太长了,说明上拉电阻太大或总线电容太大,需要调整。
  2. 测量上升时间:用示波器的光标功能,测量从信号幅度的30%上升到70%所花的时间,这就是Tr。确保它小于你所用模式规范要求的时间。
  3. 看信号幅值:高电平是否稳定在Vcc附近?低电平是否扎实地接近0V?如果高电平达不到Vcc(比如只有2V),可能是上拉电阻太大或负载太重;如果低电平下不去(比如还有0.5V),可能是某个设备的拉低能力不足。
  4. 看噪声和振铃:在信号的高电平或低电平平缓期,是否有毛刺?在信号跳变沿,是否有过冲和振铃?过冲和振铃可以通过在信号线上串联一个小电阻(22-100欧姆)来抑制,这个电阻要靠近信号发送端放置。

4.3 常见问题与排查清单

当你遇到I2C通信失败时,可以按这个清单逐一排查:

  • 问题:ACK失败,设备无响应。
    • 排查:1. 确认设备地址是否正确(7位地址别忘了左移一位)。2. 用示波器看,主机发送完地址字节后,在第9个时钟周期,SDA线是否被从设备拉低?如果没有,说明从设备没应答。检查从设备电源、上拉电阻、以及SDA线能否被从设备可靠拉低(测量低电平电压)。
  • 问题:通信随机出错,时好时坏。
    • 排查:1. 首要怀疑对象:上拉电阻和总线电容。用示波器看上升沿!十有八九是Tr太长了。尝试减小上拉电阻值,或降低通信速率。2. 检查电源噪声,在VCC和GND之间增加去耦电容。3. 检查PCB走线是否靠近噪声源。
  • 问题:总线锁死,SCL或SDA一直为低。
    • 排查:这是最讨厌的情况。通常是因为通信过程被意外打断(如电源抖动、程序跑飞),导致某个设备卡在了输出低电平的状态。1. 尝试软件复位I2C外设。2. 如果无效,可以尝试一种“时钟冲刷”技巧:将MCU的SCL引脚临时配置为通用输出口,然后手动输出9个以上的时钟脉冲,这有助于让卡住的从设备释放总线。3. 硬件上,最彻底的解决办法是给每个从设备设计一个电源开关,或者使用带总线复位功能的I2C缓冲器。

调试I2C问题,耐心和系统性的排查是关键。从电源、上拉电阻、波形这三个基础点入手,大部分问题都能迎刃而解。记住,稳定的I2C通信是硬件(电阻、布局)和软件(配置、时序)共同作用的结果,两者缺一不可。希望这些从实际项目中摸爬滚打出来的经验,能帮你少走些弯路。

深入解析PCA9574:I2C GPIO扩展器的电平转换与实战应用 在嵌入式系统开发中,GPIO(通用输入输出)引脚资源紧张是常见挑战。I2C总线作为一种广泛应用的串行通信协议,通过其主从架构和简单的两线制(SDA、SCL)设计,为系统扩展提供了高效解决方案。其核心价值在于能以极少的MCU引脚连接多个外设,显著提升系统集成度与灵活性。这一特性使其在需要连接大量传感器、执行器或人机交互模块的应用场景中不可或缺。GPIO扩展器正是基于I2C协议,实现引脚资源虚拟化与管理的典型器件。而NXP的PCA9574,作为一款集成了双向电平转换功能的I2C GPIO扩展器,其独特之处在于解 阅读详情

相关推荐

I2C的上拉电阻介绍

在I2C总线中,上拉电阻是不可或缺的一部分。它们确保了数据线和时钟线在没有设备驱动时能够维持在高电平状态,这对于确保I2C通信的正确性和可靠性至关重要。如果没有上拉电阻,I2C总线将无法正常工作,数据传输将变得不可靠。因此,在设计I2C系统时,一定要确保上拉电阻被正确配置和安装。

MHD0815的博客 2610

I2C上拉电阻设计

I2C上拉电阻 在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求。 I2C接口 对于单片机来讲,有些IO内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,这是对于单片机带有标准I2C通信协议接口,若是只带有模拟I2C协议接口,那么就需要考虑接入上拉电阻问题。下图是摄像头进行配置通信时SCL和SDA需要进行上拉电阻的连接。 在大多数情况下,由于I2C接口采用Open...

qq_28938511的博客 1895

I2C上拉电阻配置方法:新手不可忽略的关键点

在I2C通信中,正确的上拉电阻配置直接影响信号质量与总线稳定性。过大的电阻会导致信号上升沿缓慢,而过小则增加功耗,合理选择阻值至关重要。

weixin_42598278的博客 859

I2C为什么要用开漏输出和上拉电阻?

I2C为什么要接上拉电阻?因为它是开漏输出。为什么是开漏输出?I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。所以总线一般会使...

HackEle的博客 7628

STM32模拟I²C通信时上拉电阻的配置技巧

在STM32模拟I²C通信时,合理配置上拉电阻对信号稳定性至关重要。通过选择合适的上拉电阻阻值,可有效提升通信可靠性,避免数据出错,尤其在多设备连接时更需注意上拉电阻的影响。

weixin_42629522的博客 841

I2C通讯为什么要用开漏输出和上拉电阻?

I2C通讯要用开漏输出和上拉电阻的原因

weixin_58602623的博客 2568

I²C开漏上拉原理与上拉电阻选型详解

I²C总线是一种支持多主多从的同步串行通信协议,其核心电气特性依赖于开漏输出(Open-Drain)与外部上拉电阻协同实现的线与(Wired-AND)逻辑。该设计避免了推挽输出在总线竞争时可能引发的电源直通短路风险,保障多设备安全共享同一物理线路。技术价值体现在天然支持多主仲裁、电平灵活适配及硬件级冲突规避。典型应用场景包括传感器网络、EEPROM通信、OLED显示驱动等嵌入式系统互连。理解开漏工作原理与上拉电阻的RC上升时间约束、灌电流能力及静态功耗三重平衡,是确保I²C稳定运行的关键——尤其在100kH

weixin_34034261的博客 849

STM32 GPIO上拉电阻选型:阻值选择全面讲解

深入讲解STM32 GPIO中上拉电阻的选型方法,结合实际应用场景分析不同阻值对信号稳定性与功耗的影响,帮助开发者合理选用上拉电阻,提升电路可靠性与系统性能。

weixin_35238815的博客 1308

I²C配置开漏输出和上拉电阻的原因

开漏输出是指输出端只能拉低电平,不能主动拉高电平,当设备输出逻辑高电平时,实际处于“高阻态”(Hi-Z),不输出任何电平。配置项作用与意义开漏输出允许多个设备控制总线而无电平冲突,实现总线仲裁上拉电阻提供高电平、确保信号恢复、防止悬空禁用推挽避免同时输出高低电平造成短路I²C的这一设计使其在复杂、多设备通信场景中具备更高的稳定性和可靠性。

A344567的博客 2395

I2C 400kHz速率上拉电阻选择指南

最近在客户端遇到一些因I2C电阻选择不合适,导致的BLE芯片无法使Gsensor外设进入低功耗模式,一度怀疑BLE芯片I2C接口软件配置问题,查了半天才发现是客户上拉电阻10K,导致的通信异常,因此写一遍科普文,对于400KHZ通信速率该如何选择上拉电阻。例如,R_{pullup} = 1kΩRpullup​=1kΩ、V_{dd}=3.3VVdd​=3.3V 时,电流 I = 3.3mAI=3.3mA。:快速模式(400kHz)的**最大上升时间(Tr)**为。:对于400kHz速率,上拉电阻通常在。

qin5401063的博客 1432

开漏输出与上拉电阻:软件模拟I2C的硬件设计陷阱与避坑实践

本文深入探讨了软件模拟I2C总线时开漏输出模式与上拉电阻配置的关键硬件设计要点。针对STM32平台,分析了使用推挽输出的风险,提供了上拉电阻的精确计算方法、多设备总线冲突的解决方案以及PCB布局实践,帮助开发者避免常见陷阱,确保通信稳定。

alice7model的博客 970

I2C上拉电阻选择

在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求。 I2C接口 对于单片机来讲,有些IO内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,这是对于单片机带有标准I2C通信协议接口,若是只带有模拟I2C协议接口,那么就需要考虑接入上拉电阻问题。下图是摄像头进行配置通信时SC...

二进制模----细微行动改变影响世界 1211

I2C通信物理层详解:开漏输出与上拉电阻全面讲解

深入解析i2c通信的详细讲解,重点剖析I2C通信物理层的工作机制,涵盖开漏输出与上拉电阻的关键作用,帮助理解信号稳定性和总线驱动原理。

weixin_30299319的博客 796

I2C总线上拉电阻选型完整指南

I2C总线设计中,上拉电阻直接影响通信稳定性与速度。阻值过大会导致上升沿迟缓、时序超限;过小则增加功耗并可能损坏器件。需结合总线电容、工作电压、速率(标准模式100kHz/快速模式400kHz)及器件灌电流能力综合计算。实际选型常在1kΩ~10kΩ间权衡,推荐从4.7kΩ起测并用示波器验证信号质量。

weixin_42612405的博客 375

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4720

别再为PT100测温发愁了!手把手教你用ADS1247+STM32搞定高精度温度采集(附完整源码)

本文详细介绍了如何利用ADS1247高精度ADC与STM32微控制器构建PT100测温系统,实现±0.1℃的温度测量精度。内容涵盖硬件设计、寄存器配置、SPI通信优化及温度换算算法,特别适合工业自动化和精密仪器领域的嵌入式开发人员参考。

weixin_26897585的博客 428

I2C总线上拉电阻--为什么要

asw1: 这个就要看你使用的单片机是否有标准的IIC标准接口了,如果你使用了标准的IIC接口,这个接口在使能的时候,引脚进入漏极开路模式,不过有一些单片机内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,我用过AVR的,就是使能的内部的上拉电阻。但是如果是使用单片机的引脚模拟IIC协议的话,这个就得另说了,得看你的单片机引脚是否支持漏极开路模式或者上拉模式,不

tianshiyalin的专栏 2万+

RTX6000 PRO BLACKWELL 最优 CUDA 版本选择指南(适配 vLLM/SGLang 大模型推理)

本文针对NVIDIA Blackwell架构RTX6000PRO显卡部署vLLM/SGLang大模型推理引擎时的CUDA版本选择问题,提出专业建议。分析表明,CUDA12.9(需搭配552.06+驱动)是最优选择,因其完全支持BW架构特性,且与vLLM/SGLang最新版本深度适配。文章提供详细的Linux环境部署教程,包括驱动升级、CUDA12.9安装及vLLM/SGLang配置步骤,并指出CUDA13.0目前适配不完善,不推荐新手使用。最后给出常见问题解决方案,强调版本匹配对推理性能和稳定性的重要性。

2501_93651177的博客 681

I2C时序详解与实战操作指南

本文详细解析I2C通信协议的时序机制,包括起始/停止信号、数据传输与应答机制等核心要点。通过实战操作指南和EEPROM读写案例,帮助开发者掌握I2C时序调试技巧,解决常见通信问题,提升嵌入式系统开发效率。

z2a3b4c5d的博客 594

按角色定制同一张 Fiori 画面:一篇讲透 SAP Fiori UI Adaptation for Roles 的版本、优先级、视图迁移与安全边界

摘要:SAP Fiori应用中常见的问题并非功能缺失,而是同一应用被不同岗位用于不同工作流时导致界面难以满足各方需求。SAP的"角色适配UI"机制允许在不修改后端逻辑或创建新应用的情况下,为不同角色定制界面呈现。该机制包含多套界面适配方案,按用户角色自动匹配显示,同时保持统一的应用入口。实施时需注意:适配方案与原始应用共享版本管理;需设置"默认界面层";多角色用户通过优先级机制确定显示方案;界面隐藏不等于权限控制,数据安全仍需后端保障。该方案能有效解决跨岗位的界面适配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 147

第1.2章 机器人SLAM计算机基础总结(二):VSCode教程及 AI等效率插件推荐

如何高效编写代码?怎样快速调试程序?**别担心,今天就给大家带来一款超强大的编程神器 ——VSCode,以及能让编程之路 “一马平川” 的实用插件推荐,无论你是新手小白还是资深大神,都能从中受益!

行知SLAM 1862

I2C上拉电阻选型实战:从4.7K到10K,你的电路到底适合哪个?

本文深入解析I2C上拉电阻选型的关键因素,从理论计算到工程实践,详细探讨了4.7K到10K电阻在不同场景下的适用性。通过分析总线电容、通信速率和器件特性,提供精确的计算方法和优化策略,帮助工程师解决实际电路设计中的常见问题。

honey的博客 775

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 821
上一篇: 【STC32G12K128开发板】——从零到一:物联网应用开发实战入门指南
下一篇: 揭秘车载导航GPS欺骗:从原理到实战
人间清醒863
博客等级 码龄3年 33粉丝 1544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值