IIC上拉电阻的选择

上周项目评审的时候,评审部门问了我一个问题:为什么单片机内部有上拉电阻,你们还要用外部的上拉电阻?

我的答复如下:

上拉电阻的选取要考虑上限值下限值这两点:

  1. 上限值的最大限制来至于RC的限制,因为上拉电限越大,那总线上的电流越小,给电容充电的速度也就越慢,这样会对IIC协议中电平信号上升沿或下降沿的最大变化时间造成影响,记忆芯片IIC总线在变化时会产生寄生电容,如下图2中的CBUS,寄生电容的大小为100pF,所以上拉电阻最大不能超过12K;
  2. 下限值的限制来自于最大电流的限制,记忆芯片在输出低电平的时候,能接受收最大灌电流为3mA,所以上拉电阻最小不能小于5V/0.003A=1666.67欧。
  3. 而内部的上拉电阻为50K,所以不符合要求,不可用,只能用外部上拉电路。

### IIC协议中上拉电阻的位置、布局与设计 IIC(Inter-Integrated Circuit)协议中的上拉电阻是确保信号正常传输的关键元件。以下是对上拉电阻位置、布局及设计的详细说明。 #### 1. 上拉电阻的基本功能与位置选择 在I2C总线中,SDA(数据线)和SCL(时钟线)均为开漏(OD,Open Drain)输出。为了确保信号能够从低电平拉回到高电平,必须在这些信号线上添加上拉电阻上拉电阻的具体位置取决于主设备(Master)和从设备(Slave)的配置方式。 - 当主从设备两端均为OD输出时,上拉电阻放置在信号路径的中间位置[^1]。 - 如果主设备端使用软件模拟时序,而从设备为OD输出,则上拉电阻靠近从设备放置,以减少信号延迟并提高可靠性[^1]。 #### 2. 上拉电阻的布局设计 在实际电路设计中,上拉电阻的布局需要考虑以下因素: - **靠近敏感模块**:对于一些对干扰敏感的功能模块(如FM接收模块或Capsense触摸感功能块),可以通过在靠近这些模块的I2C信号线上串接Rs电阻来降低干扰的影响[^3]。 - **退耦处理**:上拉电阻连接的电源端需要进行退耦处理,以避免电源噪声通过上拉电阻传导到信号线上[^4]。 #### 3. Rs电阻的作用与选择 除了上拉电阻外,有时还需要在I2C信号线上串联一个Rs电阻。该电阻的主要作用是抑制总线上的干扰脉冲进入从设备,从而提高通信的可靠性。Rs电阻的选择范围一般在100~200欧姆之间,但在普通用中并非必须使用[^2]。 #### 4. 软件模拟I2C时序的特殊要求 当主设备通过软件模拟I2C时序时,处理器分配给I2C任务的IO口需要具备高低电平输出能力,并能配置为输入端口。在这种情况下,上拉电阻的阻值可以适当增大,因为较大的阻值不会显著影响数据传输结果。此外,为了避免上电过程中出现低电平状态,IO口默认设置为输入(高阻)或输出高电平[^4]。 #### 5. 总结 IIC协议中上拉电阻的设计需综合考虑主从设备的类型、信号路径长度以及是否需要抗干扰措施。合理选择上拉电阻的位置和阻值,可以有效提升I2C通信的稳定性和可靠性。 ```python # 示例代码:软件模拟I2C时序的基本框架 def i2c_start(): # 模拟I2C启动条件 sda = 1 scl = 1 sda = 0 scl = 0 def i2c_stop(): # 模拟I2C停止条件 scl = 0 sda = 0 scl = 1 sda = 1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值