数码之家

 找回密码
 立即注册
搜索
查看: 1448|回复: 7

求助 - oled0.96 运行中自行熄灭

[复制链接]
发表于 2023-11-2 23:10:36 来自手机浏览器 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近在做一个stm32f103到air32f103的移植项目,项目中用到i2c oled0.96,ssd1306的驱动,出现了很古怪的现象,求助各位老铁。

状态和现象如下:
1)mcu若为stm32f103,pb8/9,mode out_od,i2c线上无上拉电阻,显示也一切正常。
2)mcu为air32f103,同样pb8/9,out_od,无上拉,oled0.96 不亮。
3)i2c scl和sda线上各加1.5k上拉电阻,out_od,依然不亮。
4)mode改out_pp,有上拉,此时屏幕点亮,但有缺划,错行。
5)mode依然out_pp,去掉上拉,屏幕依然点亮,问题依旧。

问题就是,上错半行,缺划,乱码。最大的问题是系统运行10几秒后,屏幕渐渐变暗,20秒后自行熄灭,即使系统依然在运行也不再恢复。拍了个短视频,这里好像不能上传视频,只好拿张中间过程照片。

这里out_pp比上拉管用,好像也不科学呀。代码没啥好上传的,两个mcu测试时main.c和oled.c都没变,就是对比测试。

哪位老铁帮忙能说道说道,谢谢啦。
56CAB5A0-BC84-4A8E-B0EE-F4B7552F7524.jpeg
发表于 2023-11-3 09:49:24 | 显示全部楼层
示波器,逻辑分析仪,测一下通讯的波形就知道了
回复 支持 反对

使用道具 举报

发表于 2023-11-3 10:20:11 | 显示全部楼层
是不是IC速率太高了,OLED受不了。
回复 支持 反对

使用道具 举报

发表于 2023-11-3 10:20:57 | 显示全部楼层
是不是IIC速率太高了,OLED受不了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-3 20:50:52 来自手机浏览器 | 显示全部楼层
lmn2005 发表于 2023-11-3 10:20
是不是IIC速率太高了,OLED受不了。

高手,一语中的。我在每个时钟scl 1和0之间加了2us,立刻点亮而且显示稳定。多谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-3 21:43:10 来自手机浏览器 | 显示全部楼层
用示波器看了一下,几个出乎意料,顺便总结一下,吸取教训:

1)原以为模拟i2c比硬件i2c慢很多,所以想问题时根本没朝这个地方去想。但意外的是并非如此,stm32f103跑起来时钟scl是981Khz,现在看来ssd1306驱动能处理这样高的时钟,所以stm32当时一切正常。
2)同一个程序,air32f103跑出来scl 1.669Mhz,差不多是stm32的两倍,超出ssd1306的极限,所以out_od模式下黑屏。
3)上拉电阻的有无,对模拟i2c程序意义似乎不大,因为在程序中已经保证了每个时序的状态,但对示波器看波形和时序绝对需要。
4)至于pp模式在1.669Mhz下能够有问题的点亮而不完全黑屏,猜测是驱动能力比od强一些。在示波器下看1.669Mhz的od波形惨不忍睹,pp波形稍好一些。

所以,以后做项目出现怪问题,不要想当然,示波器,逻辑分析仪还是数字项目的最高朋友。谢谢帮助我的两位朋友。

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30 总结的不错!!

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2023-11-4 09:42:05 | 显示全部楼层
好贴!有问题、有建议、有结论。赞
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-30 01:26 , Processed in 0.187200 second(s), 15 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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