HC32L136在模拟IIC上设置成开漏输出是不是不能读输入电平?
请问下,现在用这款mcu在跟oled通信。有时候会通信无应答,导致oled刷全屏,部分数据没刷到。数据引脚设置成开漏输出,外部拉上电阻。然后通过在读取电平时,切换模式,这样后就不会出现无应答,都能正常刷屏
你是用GPIO模拟的IIC还是硬件模块的IIC? 切换的时候要切换引脚模式吧 外部要加上啦电阻 开漏模式不太稳定,改成推挽模式
IIC引脚是开漏引脚,需要外加上拉电阻 chenjun89 发表于 2021-11-3 08:19
外部要加上啦电阻
有的,外面有上拉电阻,就是开漏模式下,不稳定,不像stm32那样稳定 martinhu 发表于 2021-11-2 19:08
你是用GPIO模拟的IIC还是硬件模块的IIC?
GPIO模拟的,是不是跟stm32开漏不同?以前搞stm32开漏,是可以正常输出,读取输入的,不需要切换引脚的模式 mqx2020 发表于 2021-11-3 08:33
开漏模式不太稳定,改成推挽模式
对,我感觉是这样,因为有时候可以正常,有时候刷了一半就有问题。
我改成读取切换为输入模式,就没出现问题。 我也觉的不能和stm的一样,直接切换状态算了
不用设置成推挽输出也没有问题的,只有外部有上拉电阻就行,因为对端IIC是硬件接口,一般是开漏方式。 外面要接上拉吧 是不是要改变io状态啊? 开漏输出(Open-Drain)是一种输出驱动方式,它允许输出引脚在无驱动时处于高阻抗状态,可以通过外接上拉电阻来控制输出电平。 在这种模式下,引脚不再试图控制总线电平,而是简单地检测由其他设备或上拉电阻确定的电平。 当HC32L136的模拟IIC接口设置为开漏输出时,它确实不能直接读取输入电平。开漏输出的特点是,当输出为高电平时,实际上是处于高阻态,即不驱动输出引脚,因此无法直接读取引脚的电平状态。为了读取输入电平,通常需要外接一个上拉电阻,这样当外部设备将引脚拉低时,可以通过检测是否是高阻态来判断输入电平。 在使用开漏输出配置的IIC接口时,通常的做法是在SCL(时钟线)和SDA(数据线)上各接一个上拉电阻,这样可以在不发送数据时保持线路为高电平,而在需要读取数据时,外部设备可以将线路拉低,从而实现双向通信。 一些现代微控制器的I²C硬件模块会自动处理这些细节,不需要你手动切换引脚模式。 在设计IIC接口时,推荐遵循标准的开漏输出加外部上拉电阻的配置。 在开漏模式下,引脚可以被视为具有高阻态