论坛» 嵌入式开发» STM32

C8051F980 (Silicon Lab) 单片机遇到了怪问题

菜鸟
2014-03-17 20:38 1楼
各位大哥:
我在设计充电检测电路时碰到了一个很头疼的问题,具体如下:
我使用 C8051F980单片机 做电源管理,涉及到单片机进行充电检测和充电 激活单片机 的问题。
因为 充电输入是5V,单片机IO口电平典型值为2.8V,最高能承受3.6V的电平,所以用了2个电阻分压,如附图所示:

5V经过两个电阻分压,分出一个2.8V左右的电压然后接到 单片机的IO口 。
其中,CHARGE_IN_DET为充电检测,MCU_VDD_CTL为 MCU的LDO电源使能脚。

我的设计思路是 ,当充电器插入时,MCU_VDD_CTL脚拉高,LDO使能,MCU就能上电工作,此时,再去单片机检测CHARGE_IN
_DET脚被拉高,就认为是在充电。
为了防止 不充电时,MCU_VDD_CTL到 CHARGE_IN_DET脚漏电,用了二极管做单向导通。
碰到了头疼问题是: 发现 插上充电器后(接入5V),发现 本应该被拉高的两个管脚 都不嫩拉高,CHARGE_IN_DET是0.5V左右,MCU_VDD_CTL是0.3V左右。
但是人为使MCU上电后,这两个管脚就电平正常了。
询问单片机的供应商,说是,单片机在未上电时,IO口到地阻抗是不确定的,导致了这个结果。

那我这个电路就陷入了死循环,,MCU_VDD_CTL不能被拉高,MCU就不能工作,也就导致 这两个管脚永远不会正常。
头疼了,想了好久都没想出什么电路来解决这个问题。

请教一下,大家有什么好的建议没。

目前,我实验得到,如果直接给单片机 IO口个电压,就能拉高,如果经过一个电阻,就不行。所以,想用一个 LDO来做电压变化,就是5V转3.6V或者2.8V,利用LDO的输出电压来直接拉高 CHARGE_IN_DET和MCU_VDD_CTL,就是不知道这样行不行。
高工
2014-03-17 22:07 2楼

用电阻分压的方法的方法不可取,没有稳压措施

既然实验得到,如果直接给单片机 IO口个电压可行,,

用LDO应该可以,,

院士
2014-03-18 10:27 3楼

就是IO引脚对地阻抗的问题。

换一种思路吧

高工
2014-03-18 21:48 4楼
从图上看,既然MCU_VDD_CTL脚是高电平,CHARGE_IN _DET脚当然也是高电平。为什么还要检测???????就是因为MCU_VDD_CTL脚是高电平,MCU才得电工作的,压根就不需要检CHARGE_IN_DET脚,只要MCU在工作,就是在充电。
院士
2014-03-18 23:54 5楼
学习 了,再想想。
菜鸟
2014-03-19 08:29 6楼
IO口到地阻抗 datasheet上有没有写多少啊,你用1M的电阻分压,如IO口阻抗较低,即你所加在IO的分压值就较小,正如你测的0.5V,你可以试着将分压电阻设置小一些(参照IC口对地阻抗---与分压电阻并联)。。。。
菜鸟
2014-03-20 14:53 7楼
单片机正常工作后,要求单片机把 CHARGE_IN_DECT脚置低的,这样,就不会认为一直在充电,这个也就是我们加二极管的原因,二极管反向不导通。也就是 MCU_VDD_CTL的高电平不会导致 CHARGE_IN_DECT 也产生高电平。
菜鸟
2014-03-20 14:54 8楼
刚开始我也是这样想的,把分压电阻改小点,我把R503改到了4.7K,后,分压才能达到1.0V,还是不行,再小的话,即使能把管脚拉高,但是单片机工作后,R503后面的电压就会很大(5V用4.7K和1M电阻分压),会烧掉IO口。如果把R504也改小的话,那就会存在 从IO口漏电的风险,这个是必须避免的。
共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]