前言
前一段时间通过淘宝采购了两块sh1106的1.3寸oled屏幕,30P排线款。计划是拿来使用U8g2来驱动一下,制作一个小制作摆件。陆陆续续花了两个周六的时间完成了原理图的设计,又花了一个周六的时间把第一版设计给焊接制作完成了。(悲悲悲,三个周六没了)........
遭遇
然后当我开始移植U8g2到stm32G0上时遇到了无法点亮的问题。我使用的是HAL库下的硬件I2c的方式。当我像网上历程一样完成移植后屏幕迟迟无法点亮。我检查了自己是不是有虚焊,检查了软件是不是有哪里写的不对。检测屏幕第28p的引脚电压,按商家所说正常驱动后的电压为8v,我实际测量后电压只有3v,说明屏幕驱动芯片并没有正常启动。来来回回折腾了我两个晚上还是没有点亮。然后我就想着先去debug一下看看软件运行问题,先不管屏幕了。然后奇迹发生了,屏幕亮了。我懵逼了!!!!
原因
我当时想着debug也就是相比我多个复位而已啊。(我设计的板子上并没有复位按键 而是上电复位)我用镊子短接了复位的104电容,然后屏幕正常点亮了。经过推测可能是上电瞬间屏幕电流比较低,此时初始化屏幕的程序并没有正常运行。最后在初始化屏幕的函数之前加上几百毫米的延时。便可以正常启动了。