移动电源

完整源代码: int main(void) { //while(1);// InitAllUserRam(); SysTick_Config(12000); TimeBaseInit(); InitOther(); IOinit(); IICMnit(); ADC_init(); wdt_init(1); #if TYPEC_DAC_CTRL DAC_Init(); #endif//TYPEC_DAC_CTRL // UART_Init(UART0,208); // DelayMCUtimer(10); // printf("reset=%d\t\n",TYPEC.State); DelayMCUtimer(10); setsrcpower(TYPEC_OUT_PD_MAX_WATT); changesrcpdo(); CC_Rule_Cfg(ROLE_UFP); USBAGetOffset(); while(1) { clr_wdt(70000); switch(MainRun.State) { case STATEMAINRUN_RESET: SleepPrePutOnDevice(); MainRun.Timer = 0; POWER.ADCen = 1; MainRun.State = STATEMAINRUN_INIT; break; case STATEMAINRUN_INIT: //if(TimeOut(&MainRun.Timer, 30) == 1) { MainRun.Timer = 0; MainRun.State = STATEMAINRUN_LOOP; } break; case STATEMAINRUN_LOOP: KEY.Flag = KeyCheck(u8KeyData); Timer0EventHandler(); ADCEventHandler(); if(TRUE == CheckDpdm3Mode())//某些快充时序高,要减少其他模块的消耗。 ContractLoop(); //PD协议 I2CreadAndWriteCtrl(); LowBatCtrl(); TYPECctrl(); MICROctrl(); USBA1ctrl(); USBA2ctrl(); DPDM12_ctrl(); ChargeCtrl(); DischargeCtrl(); CapacityCtrl(); NTCctrl(); DisplayCtrl(); OtherFuncCtrl(); //TestAndDebug(); if(StateKeepONtime(((1) //&&(1 == u8KeyData) &&(!Charge.Flag) &&(!Discharge.Flag) //&&(!Display.Mode) ), &MainRun.Timer, 3000)) { POWER.ADCen = 0; IICwrite.WriteAllTrig = 1; MainRun.State = STATEMAINRUN_SLEEP_READY; } break; case STATEMAINRUN_SLEEP_READY: I2CreadAndWriteCtrl(); if(TimeOut(&MainRun.Timer, 50)) { MainRun.Timer = 0; MainRun.State = STATEMAINRUN_SLEEP_READY1; } break; case STATEMAINRUN_SLEEP_READY1: if(TimeOut(&MainRun.Timer, 10)) { MainRun.Timer = 0; MainRun.State = STATEMAINRUN_SLEEP; } break; case STATEMAINRUN_SLEEP: SleepPrePutOffDevice(); MainRun.State = STATEMAINRUN_RESET; break; default: MainRun.State = STATEMAINRUN_RESET; break; } } }
此电路有一个升压电路,一个充电管理电路,一个电保护电路,一个MCU用来显示电量和控制输出, 一个按键控制LED灯显示和控制输出,四个灯(LED1-LED4)来显示电量,一个灯(LED5)用来照明。 1.四个LED(LED1-LED4)灯显示电亮时的定义: 3.30V以下,电量指示灯1以1HZ频率闪烁 3.60V以下,电量指示灯1亮,表示电池剩25%的电量。 3.80V以下, 电量指示灯1,2亮,表示电池剩50%的电量。 4.00V以下,电量指示灯1,2,3亮,表示电池剩75%的电量。 4.00V以上,电量指示灯1,2,3,4亮,表示电满电。 2.接上电时,四个LED灯点亮3S然后熄灭。关闭输出,MCU进入休眠状态。 3.只要不接充电器时,不管在什么状态,按一下按键,四个LED灯按1要求显示电电量5S,然后自动熄灭。 4.接上充电器时,四个LED电量指示灯按如下方式显示电量: 3.60V以下,电量指示灯1以1HZ频率闪烁 3.80V以下,电量指示灯1亮,电量指示灯2以1HZ频率闪烁 4.00V以下, 电量指示灯1,2亮,电量指示灯3以1HZ频率闪烁 4.00V以上,电量指示灯1,2,3亮,电量指示灯4以1HZ频率闪烁 充满时(chang-end变高),电量指示灯1,2,3,4全亮,表示电已充满电。 5.接上充电器时。按一下按键无反应。 6.不管在什么状态,长按按键3秒以上,打开LED5,再长按按键3秒以上,关闭LED5。 7.当没有充电,没有按按键,没有打开LED5时5分钟后自动进入休眠状态,以降低静态功耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值