大家好,欢迎来到IT知识分享网。
首先呢,介绍一下4054这款芯片。4054 是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。其 SOT封装与较少的外部元件数目使得 4054 成为便携式应用的理想选择。充电电流在达到最终浮充电压之后降至设定值 1/10 时,4054 将自动终止充电循环。这就使得这个IC可以很好的应用到插卡的面条耳机或者音箱之中,这里详细讲解在面条耳机之中的应用(真实原因其实是由于中科蓝讯AB5365B等6系列的芯片没有内置充电模块,只能通过外围IC来实现充电,主要讲解4054与中科蓝讯AB5365B芯片配合充电实现,充电亮红灯(灯控是由芯片控制),充满之后灭灯)。
接下来就是软件的检测了,软件需要将IO口设置为输入上拉,关下拉(中科蓝讯AB5365B芯片连接1脚为PB4),如下所示:
#define INSET_KEY_EN 1 #define INSET_KEY_INIT() {
GPIOBDE |= BIT(4); GPIOBDIR |=BIT(4); GPIOBPU |= BIT(4); GPIOBPD&=~BIT(4);}//输入上拉,关下拉 #define INSET_KEY_ONCHECK() (!(GPIOB& BIT(4)))//IO口检测 #define INSET_KEY_OFFCHECK() (GPIOB& BIT(4))//IO口检测
接下来需要注意,初始化要添加在IO口检测的上面,之后就是检测的部分了:
///这里的定义,系统以及写好了,使用的时候记得带上对应的关灯函数/ #define LED_SET_ON() bled_func.set_on(&bled_gpio) #define LED_SET_OFF() bled_func.set_off(&bled_gpio) #define LED_PWR_SET_ON() rled_func.set_on(&rled_gpio) #define LED_PWR_SET_OFF() rled_func.set_off(&rled_gpio) /// //检测部分如下: u16 blue_num = 0;//控制蓝灯亮的时间 if(CHARGE_DC_IN() && INSET_KEY_ONCHECK()) //CHARGE_DC_IN()函数为系统检测DC是否插入 {
LED_PWR_SET_ON(); //红灯亮 } else if(CHARGE_DC_IN() && INSET_KEY_OFFCHECK() && blue_num <= 3000)//这里的数字能够控制充满之后蓝灯亮的时间,由于系统的定时器还未开启,所以写一个合理的数字即可,注意不要超过范围 {
if(blue_num == 0) {
LED_PWR_SET_OFF();//红灯灭 } blue_num++; LED_SET_ON();//蓝灯亮 } else if(CHARGE_DC_IN() && INSET_KEY_OFFCHECK() && blue_num > 3000) {
LED_SET_OFF();//蓝灯灭 }
这样就实现了4054和中科蓝讯AB5365B的配合充电。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126053.html