IIC输出模式选择推挽输出还是开漏输出?

推挽输出能提供高电平,而开漏输出则不能。在IIC协议中,选择开漏输出可避免多主设备间短路。详细解释见链接,了解两者工作原理及IIC通信详情。

推挽输出有输出高电平的能力,开漏输出没有输出高电平的能力。

IIC输出模式选择应选择开漏输出。如果选择推挽输出,在多主多从的情况下会出现短路现象。

以上是我目前的理解。

详细的推挽和开漏输出的原理及比较如下链接:

(17条消息) 开漏输出、推挽输出的区别_Daniel雨林的博客-优快云博客_开漏输出和推挽输出的区别

IIC详解如下:

(17条消息) STM32硬件I2C与软件模拟I2C超详解_rivencode的博客-优快云博客_stm32硬件i2c

I2C总线使用的是输出,而不是推挽输出。这种设计选择主要是基于I2C协议的电气特性和工作原理。I2C总线允许一个或多个主设备与多个从设备进行通信,所有设备都通过两条线连接:一条数据线(SDA)和一条时钟线(SCL)。由于I2C总线上的设备可能同时尝试控制总线,因此需要一种机制来避免设备间的冲突。 输出允许将多个设备的输出端直接连接在一起,因为它们只能将线路拉低至地电位(GND)或者呈现高阻态。当没有设备拉低总线时,上拉电阻会将总线保持在高电平状态(VCC)。这样,即使多个设备连接到同一总线上,也不会导致电源和地之间的直接短路[^4]。 相比之下,推挽输出具有驱动高电平和低电平的能力,这意味着如果两个设备同时分别尝试驱动高电平和低电平,将会导致电源和地之间形成直接路径,从而造成短路。这不仅会损坏设备,还会干扰正常的通信过程[^1]。 为了确保I2C总线能够正常工作,必须使用上拉电阻来提供高电平的电压源。上拉电阻连接在总线和电源之间,当总线上没有任何设备拉低时,上拉电阻将总线维持在高电平状态。当任一设备需要发送低电平时,它会将总线拉低至地电位。这种方式确保了I2C总线能够在多设备环境下可靠地工作[^5]。 综上所述,I2C总线使用输出而非推挽输出,这是为了防止设备间发生短路,并且能够实现所谓的“线与”逻辑功能,这对于总线仲裁是非常重要的[^3]。 ```c // 示例代码:配置I2C引脚为输出 // 假设使用的是STM32微控制器 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 使能GPIO时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // 配置I2C SDA和SCL引脚为输出 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // 假设使用PB6和PB7作为I2C接口 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_OType = GPIO_OType_OD; // 设置为输出 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; // 内部上拉电阻,但实际应用中通常使用外部上拉电阻 GPIO_Init(GPIOB, &GPIO_InitStruct); ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值