找回密码
 立即注册
楼主: hyperma

笑死,STC8G的I2C问题折腾三天,绝望的发帖前30秒解决……

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-11-21 18:40:26 | 显示全部楼层
peiti*** 发表于 2023-11-21 17:44
你好在这种状态下, 我是不需要外接电阻上拉是吧? 我这两天也遇到了这个问题, 调整了好几遍io口状态, 偶尔 ...

同系统电压的,准双向口+内部上拉4K。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-05-01 09:38:35

10

主题

70

回帖

1307

积分

金牌会员

积分
1307
发表于 2023-11-21 19:09:30 | 显示全部楼层
请问为什么推挽不行?是因为速度不行吗?如果使用PWM,IO可以设置成推挽和双向加上拉有什么区别?
回复 支持 反对

使用道具 举报 送花

16

主题

57

回帖

366

积分

中级会员

积分
366
发表于 2023-11-22 09:55:00 | 显示全部楼层
梁*** 发表于 2023-11-21 18:40
同系统电压的,准双向口+内部上拉4K。

您好, 我是两边都是stc8g1k, 一个用于主机一个用于从机, 两边都得是准双向+内部上拉吗?

点评

一般主机上拉即可,当然,两边都上拉也可以。  详情 回复 发表于 2023-11-22 10:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-11-22 10:03:36 | 显示全部楼层
peiti*** 发表于 2023-11-22 09:55
您好, 我是两边都是stc8g1k, 一个用于主机一个用于从机, 两边都得是准双向+内部上拉吗? ...

一般主机上拉即可,当然,两边都上拉也可以。
回复 支持 反对

使用道具 举报 送花

16

主题

57

回帖

366

积分

中级会员

积分
366
发表于 2023-11-22 10:05:12 | 显示全部楼层
梁*** 发表于 2023-11-22 10:03
一般主机上拉即可,当然,两边都上拉也可以。

感谢感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-12-04 16:35:53

0

主题

9

回帖

80

积分

注册会员

积分
80
发表于 2023-11-28 00:57:56 | 显示全部楼层
谢谢分享
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:248
  • 最近打卡:2024-10-22 13:41:46

3

主题

39

回帖

444

积分

中级会员

积分
444
发表于 2023-12-4 16:56:23 | 显示全部楼层
刚刚点灯  前来学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:267
  • 最近打卡:2025-04-22 07:35:24

13

主题

109

回帖

342

积分

中级会员

积分
342
发表于 2023-12-5 13:18:46 来自手机 | 显示全部楼层
找不同,哪里不同改哪里
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:70
  • 最近打卡:2025-02-04 20:10:36

1

主题

42

回帖

169

积分

注册会员

积分
169
发表于 2025-1-24 15:43:40 来自手机 | 显示全部楼层
hhh402 发表于 2023-11-21 19:09
请问为什么推挽不行?是因为速度不行吗?如果使用PWM,IO可以设置成推挽和双向加上拉有什么区别? ...

这个是i2c的基础工作原理“线与”决定的,主机或者从机释放总线后,可以读,但不能干扰总线电平状态,因为需要交给其他设备发送数据。
因此,mcu引脚强下拉、无上拉的开漏输出模式,通过在外部设置上拉电阻配合;以及51的强下拉、弱上拉(mcu内部上拉电阻)的准双向口模式,是合适的。将io口电平设置为1就是释放总线,由于上拉电阻阻值大,总线具体是什么电平状态,由上拉电阻和外部设备决定。换句话就是,总线电平状态由其他设备发送数据拉低,而不受这两种上拉电阻影响。
而推挽模式是强上拉,设置为1释放总线后,其他设备如果下拉能力不足,可能无法将总线电平拉低,从而无法正确发送数据。如果其他设备下拉能力足够,又会导致mcu引脚输出电流大,存在烧毁端口的风险。
菜鸟之言,仅供研讨。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:70
  • 最近打卡:2025-02-04 20:10:36

1

主题

42

回帖

169

积分

注册会员

积分
169
发表于 2025-1-24 16:26:02 来自手机 | 显示全部楼层
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就亮了。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:34 , Processed in 0.159073 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表