wukangkang 发表于 2015-9-2 15:16:01

关于OLED电源无法关闭问题,请教大家了

我使用悠景0.91寸12832 白光 I2C OLED 液晶显示屏 SSD1306 14PIN,在淘宝买的裸屏,屏是好的,外围驱动电路自己设计的,实际使用也没问题,下面是电路图:

驱动起来后使用感觉还是很方便的,我设计的系统是一个低功耗系统,希望单片机休眠后尽可能降低功耗,所以单独设计了电路控制进入休眠前关闭OLED电源,发现我的电路没有办法关闭电源,执行关闭代码后发现OLED电源仍然为2.8V左右,实际电源电压为3.3V,也就是主系统电源。
焊接下来OLED发现,电源输出是可以控制的,于是又焊接上OLED,把把R26 R27电阻去掉,OLED电源线割掉,这时候发现系统启动后OLED仍然工作,而且测量OLED电源电压2.8V左右,现在只有IO模拟的IIC接口和单片机通讯,难道电源是从这里进来的,感觉好奇怪,测试电路板也没有发现电源其他地方有问题,系统工作正常,就是没有办法关掉OLED电源。

下面是控制OLED的电源电路:

下面是我的电路板:


麻烦大家帮我分析分析,非常感谢!

wukangkang 发表于 2015-9-2 15:19:02

补充一下,代码是没有问题的,焊接下来OLED,软件关闭打开电源是正常的。
也就是说OLED工作在我设计这个系统里可以不需要3.3V_DEV这个电源,仅仅用IO就可以了,好奇怪,问买屏的淘宝,也没有技术支持。

Scarlette 发表于 2015-9-2 15:24:47

你先量下屏幕自身的SCL和SDA引脚对VCC是否有个上拉

Scarlette 发表于 2015-9-2 15:26:55

呃……打错了,是对屏幕自身的VDD是否有上拉

ibichao 发表于 2015-9-2 15:28:47

于是又焊接上OLED,把把R26 R27电阻去掉,OLED电源线割掉,这时候发现系统启动后OLED仍然工作,
这句话是什么意思?是OLED完全与电路无关了吗?
另外看到OLED上有VBAT引脚,难道OLED内部有缓冲?

xiaodao35 发表于 2015-9-2 15:34:18

本帖最后由 xiaodao35 于 2015-9-2 15:38 编辑

你把上拉电阻的电源接到受控电源上。[没写完就发了]然后IO输出0试试。

Scarlette 发表于 2015-9-2 15:34:50

ibichao 发表于 2015-9-2 15:28
于是又焊接上OLED,把把R26 R27电阻去掉,OLED电源线割掉,这时候发现系统启动后OLED仍然工作,
这句话是什 ...

我猜LZ可能是把I2C的引脚设成推挽输出了。有些器件SCL和SDA引脚上集成了对VDD的上拉电阻,MCU这边一推挽,于是就通过I2C供电了……

friendljy 发表于 2015-9-2 16:10:21

跟我前两天遇到的一个问题几乎一模一样。修改IO口的设置,输出低电平就好了。

lgupen 发表于 2015-9-2 16:30:31

呵呵,你没必要控制屏幕的电源啊,难道你想每次给他上电都要初始化啊。。。。你应该让OLED进入低功耗模式,这个屏幕进入低功耗后有10ua左右的电流,那你自己算下能有多久。。。。哈哈,时间绝对达到你的要求,还有提示下,注意上拉电阻,因为上拉电阻会消耗掉一些。。。。。

jdh99 发表于 2015-9-2 17:07:26

本帖最后由 jdh99 于 2015-9-2 17:09 编辑

lgupen 发表于 2015-9-2 16:30
呵呵,你没必要控制屏幕的电源啊,难道你想每次给他上电都要初始化啊。。。。你应该让OLED进入低功耗模式, ...
遇到类似问题,请教如何设置oled低功耗:

电路上与LZ图一致,Vcc用的是内置电压,接一个电容到地
pdf中设置低功耗的方法:


pdf上写的不够详细,导致有两种理解:
1.设置display为0xae后,oled自动将vcc置低,然后进入睡眠模式
2.设置display为0xae后,再将vcc置低,然后进入睡眠模式
请问哪种理解是正确?

lgupen 发表于 2015-9-7 09:07:48

jdh99 发表于 2015-9-2 17:07
遇到类似问题,请教如何设置oled低功耗:

电路上与LZ图一致,Vcc用的是内置电压,接一个电容到地


这个不清楚了,我的做法是先清屏,让屏幕没有显示,然后再设置0xae

wukangkang 发表于 2015-9-7 10:09:12

Scarlette 发表于 2015-9-2 15:34
我猜LZ可能是把I2C的引脚设成推挽输出了。有些器件SCL和SDA引脚上集成了对VDD的上拉电阻,MCU这边一推挽 ...

多谢提醒,我看了下代码,确实没有设置成推挽输出,而且现在把IO口上下拉电阻都禁止掉,还是不行。

wukangkang 发表于 2015-9-7 10:12:45

lgupen 发表于 2015-9-2 16:30
呵呵,你没必要控制屏幕的电源啊,难道你想每次给他上电都要初始化啊。。。。你应该让OLED进入低功耗模式, ...

有道理,我之前怎么没想到,应该让显示屏也进去低功耗状态,每次唤醒都初始化平也挺蛋疼的。

wukangkang 发表于 2015-9-7 10:14:28

friendljy 发表于 2015-9-2 16:10
跟我前两天遇到的一个问题几乎一模一样。修改IO口的设置,输出低电平就好了。 ...

确实,休眠之前把SCL和SDA的IO口拉低,屏幕就灭了,但是唤醒后还得初始化屏幕。

friendljy 发表于 2015-9-7 10:18:31

wukangkang 发表于 2015-9-7 10:14
确实,休眠之前把SCL和SDA的IO口拉低,屏幕就灭了,但是唤醒后还得初始化屏幕。 ...

你都掉电了。肯定要重新初始化呀。

lgupen 发表于 2015-9-7 11:41:19

wukangkang 发表于 2015-9-7 10:12
有道理,我之前怎么没想到,应该让显示屏也进去低功耗状态,每次唤醒都初始化平也挺蛋疼的。 ...

不多说了,直接上代码。
void OLED_ON(void)
{
        WriteCmd(0X8D);//设置电荷泵
        WriteCmd(0X14);//开启电荷泵
        WriteCmd(0XAF);//OLED唤醒
}
void OLED_OFF(void)
{
        WriteCmd(0X8D);//设置电荷泵
        WriteCmd(0X10);//关闭电荷泵
        WriteCmd(0XAE);//OLED休眠
}
IIC上面的两个上拉电阻,如果可以就不要焊上去,大概有几ma的影响,你直接用芯片的内部上拉,去试试吧。功耗肯定在ua级别

wukangkang 发表于 2015-9-7 12:21:26

lgupen 发表于 2015-9-7 11:41
不多说了,直接上代码。
void OLED_ON(void)
{


非常感谢,马上试试。

liaihua1997 发表于 2015-9-7 12:54:46

wukangkang 发表于 2015-9-7 12:21
非常感谢,马上试试。

试的结果呢,马要就需要写OLED民间的,1306的,参考一下,

lnso 发表于 2015-11-16 20:09:52

楼主解决了吗?

wukangkang 发表于 2015-11-19 14:18:11

lnso 发表于 2015-11-16 20:09
楼主解决了吗?

你好,解决了。其实不是MOS开关的问题,在单片机休眠前需要把操作IIC的引脚设置为输入口。否则会从单片机引脚有电流输出到导致OLED点亮。
页: [1]
查看完整版本: 关于OLED电源无法关闭问题,请教大家了