在嵌入式开发过程中,针对I2C外设,大家会把主要关注点集中在逻辑的交互/ACK超时信号设定/异常失败处理等,基本把通讯IO初始化的相关配置都交给了厂商提供的SDK。如果大家是自己手写软件I2C,那么通讯IO的类型配置就是一个需要关注的点。本篇将会简要对I2C的通讯管脚类型配置以及实际应用注意事项进行描述。
I2C(Inter-Integrated Circuit)的管脚(SCL时钟线和SDA数据线)类型配置通常可以配置为开漏(Open-Drain)或推挽(Push-Pull)两种模式,具体配置取决于具体的应用场景和MCU的硬件设计。
1、开漏模式(Open-Drain)
在开漏模式下,I2C的SCL和SDA引脚不直接驱动信号到高电平,而是通过上拉电阻将信号拉至高电平。这种模式具有以下特点:
节省功耗:当引脚不驱动信号时,它们处于高阻态,不消耗电流。
允许多个设备共享总线:由于所有设备都通过上拉电阻连接到总线,因此当所有设备都未驱动总线时,总线由上拉电阻拉至高电平。这使得多个I2C设备可以共享同一对SCL和SDA线。
需要外部上拉电阻:为了确保信号在空闲时能够被正确拉至高电平,需要在SCL和SDA引脚上外接上拉电阻。推荐的上拉电阻阻值通常在1-2KΩ左右,但具体值可能需要根据实际测试情况确定。
|