你好在这种状态下, 我是不需要外接电阻上拉是吧? 我这两天也遇到了这个问题, 调整了好几遍io口状态, 偶尔 ...
同系统电压的,准双向口+内部上拉4K。 请问为什么推挽不行?是因为速度不行吗?如果使用PWM,IO可以设置成推挽和双向加上拉有什么区别? 梁工 发表于 2023-11-21 18:40
同系统电压的,准双向口+内部上拉4K。
您好, 我是两边都是stc8g1k, 一个用于主机一个用于从机, 两边都得是准双向+内部上拉吗? peitianyu 发表于 2023-11-22 09:55
您好, 我是两边都是stc8g1k, 一个用于主机一个用于从机, 两边都得是准双向+内部上拉吗? ...
一般主机上拉即可,当然,两边都上拉也可以。 梁工 发表于 2023-11-22 10:03
一般主机上拉即可,当然,两边都上拉也可以。
感谢感谢 谢谢分享{:4_174:} 刚刚点灯前来学习 找不同,哪里不同改哪里 hhh402 发表于 2023-11-21 19:09
请问为什么推挽不行?是因为速度不行吗?如果使用PWM,IO可以设置成推挽和双向加上拉有什么区别? ...
这个是i2c的基础工作原理“线与”决定的,主机或者从机释放总线后,可以读,但不能干扰总线电平状态,因为需要交给其他设备发送数据。
因此,mcu引脚强下拉、无上拉的开漏输出模式,通过在外部设置上拉电阻配合;以及51的强下拉、弱上拉(mcu内部上拉电阻)的准双向口模式,是合适的。将io口电平设置为1就是释放总线,由于上拉电阻阻值大,总线具体是什么电平状态,由上拉电阻和外部设备决定。换句话就是,总线电平状态由其他设备发送数据拉低,而不受这两种上拉电阻影响。
而推挽模式是强上拉,设置为1释放总线后,其他设备如果下拉能力不足,可能无法将总线电平拉低,从而无法正确发送数据。如果其他设备下拉能力足够,又会导致mcu引脚输出电流大,存在烧毁端口的风险。
菜鸟之言,仅供研讨。 zanfi 发表于 2025-1-24 15:43
这个是i2c的基础工作原理“线与”决定的,主机或者从机释放总线后,可以读,但不能干扰总线电平状态,因 ...
对于楼主遇到的问题,我估计楼主外部电阻设置也是10k,是阻值太大的原因,一般设置为4.7k、5.1k不会出问题,再将端口设置为开漏输出或者准双向口模式,应该就解决了。如果是准准双向口,内部上拉电阻加4k,外部电阻用4.7k,并联电阻2.1k,也符合i2c规范定义的高速i2c上拉电阻(印象中是2k)的要求。
我之前自己做0.96寸oled模块,上拉电阻刚开始用的10k,不亮屏,改成4.7k就亮了。
页:
1
[2]