找回密码
 立即注册
查看: 2910|回复: 19

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-05-30 03:12:14

1

主题

1

回帖

31

积分

新手上路

积分
31
发表于 2023-2-19 03:10:45 | 显示全部楼层 |阅读模式
本帖最后由 hyperma 于 2023-2-19 03:14 编辑

我真的快疯了,买的2.23寸12832 OLED显示屏(不是模组),自己做的板子,打算把规划中的某机全部外部触发条件和显示屏内容,都用STC8G的大ROM装进去,但没想到在这个12832面前踢了铁板。

由于我是从STM8叛变过来的,对I2C一向自认很有信心,10K上拉电阻,10p退耦降噪电容,Open Drain驱动,用官方库函数,已经玩得不能再熟练了。但这回无论怎么写程序,就是没有显示啊!

示波器加逻辑分析仪一量,出现了奇怪的事情,连续发射多个字符后会出问题!I2C发射从机地址、寄存器地址,都OK,偏偏从第三组8bit数据开始出问题,缺一位!

怎么缺呢?比如我连续发射0x78,0x40,0x05这一组固定数据,从第三次开始,05开始变成04!就是说00000101变成了00000100!怎么折腾都这样,于是我折腾了三天。足足三天啊!换驱动、换成模拟I2C模式、降速,都不成……。


实在不行了,凌晨想上来发帖子求救,刚注册需要等两分钟……。唉,揉揉已经通红的眼睛看会儿帖子吧,偶然看到了版主的帖子里讲了输出的PP推挽模式,由于STM8内部上拉电阻非常弱,大概33-62k之间的样子,我一向基本不用,虽然知道STC有4k的上拉电阻,可以驱动晶体管拉动继电器了,但习惯上基本从未把芯片设置成PP模式,闲着也是闲着,初始化函数里改两个字母看看吧……。

OLED出图像了!我……

然后用逻辑分析仪抓了一下数据,正常了……。这是为什么啊!为什么啊!真心向版主求教,是否说STC8的准双向口可以省却外部上拉电阻了?还是说Open Drain模式的输出是有问题的?

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-2-19 07:17:15 | 显示全部楼层
I2C,  MCU/外设如都工作在同一个电压,
I/O应设置在开漏或准双向口模式,不应设置在强推挽
估计  投诚的新兄弟看错了设置
1.png

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-05-30 03:12:14

1

主题

1

回帖

31

积分

新手上路

积分
31
发表于 2023-2-19 09:56:22 来自手机 | 显示全部楼层
回长官,应该不会,我没有用寄存器配置,而是通用驱动里的GPIO配置函数。有通用驱动我是不会用寄存器的,毕竟跑过来就图个花天酒地……。
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-2-19 10:54:11 | 显示全部楼层
同电压的推荐准双向口或开漏,允许内部4K上拉或外挂5.1K上拉电阻。Open Drain模式的输入输出都没有任何问题。

楼主这种情况,示波器一看便知。看这种信号有时候用逻辑分析仪反而不好(特别是那种山寨的便宜货),看不了精细的信息。
  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-01 20:16:58
已绑定手机

229

主题

328

回帖

1471

积分

金牌会员

积分
1471
发表于 2023-2-19 14:03:40 | 显示全部楼层
所以说嘛,玩st的都玩糊涂了
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-2-19 17:05:49 | 显示全部楼层
回国参加革命不分早晚,能回来支援祖国建设都是好同志!
我改行搞思想建设已 N 年,各种新式武器已不亲自操作,估计还是害人弱智的库函数的通病

库函数不求甚解,设错了,多试几个组合能通过,就往下继续走了

明我请陈工在本贴讲下 库函数 I/O工作模式的设置
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-2-19 17:13:26 | 显示全部楼层
1.png
1.png

1.png
2.png
3.png

STC32库函数使用说明-20230217.pdf

7.59 MB, 下载次数: 145

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-2-19 17:22:02 | 显示全部楼层
Open Drain模式的输出是有问题的?====要外部加上拉,或打开内部4K独立上拉电阻

准双向口/弱上拉====往往拉的速度不够快, 不够强

16

主题

57

回帖

366

积分

中级会员

积分
366
发表于 2023-11-21 17:44:03 | 显示全部楼层
梁*** 发表于 2023-2-19 10:54
同电压的推荐准双向口或开漏,允许内部4K上拉或外挂5.1K上拉电阻。Open Drain模式的输入输出都没有任何问题 ...

你好在这种状态下, 我是不需要外接电阻上拉是吧? 我这两天也遇到了这个问题, 调整了好几遍io口状态, 偶尔成功, 偶尔有不行了

点评

同系统电压的,准双向口+内部上拉4K。  详情 回复 发表于 2023-11-21 18:40
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2023-11-21 18:16:30 | 显示全部楼层
我的I2C都是   开漏(OD)+上拉

不用强推挽(PP)
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:28 , Processed in 0.216481 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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