SH367309中颖单片机专用动力电池保护板开发资料 原理图PCB代码

资料下载地址:SH367309中颖单片机专用动力电池保护板开发资料 原理图PCB代码

目录

1、简介

2、原理图和PCB

3、程序

1、简介

中颖BMS5-16 串 前端芯片,用于充电管理+电池保护+电量计量,有规格书,原理图,PCB, DEMO CODE全套开发资料 。

2、原理图和PCB

3、程序

cpp 复制代码
#include "system.h"
#include "Uart.h"
#include "Main.h"


void main(void)
{
        Initial();                                        //Initialize the system
        
        while(1)
        {
                RSTSTAT = RSTSTAT;

                  if(bAFEFlg)
                {
                         bAFEFlg = 0;
                        AFERdFlag();
                }

                if((ucResetFlag==0x12) && bUartSndAckFlg)        //Software reset occurs, and ended UART communication
                {
                        if(!bWrFlashFlg)
            {
                                EA = 0;
                                ResetAFE();                                                //Reset IC
                                ResetInit();                                        //Reset MCU
                        }
                }
                
                if(bWakeupFlg)                                                //The charger / load, keys can wake up the system
                {
                        bWakeupFlg = 0;
                        WakeUpProcess();                                //System to be awakened
                }

                if(bBleOnOffFlg)                                        //按键长按5秒开启/关闭蓝牙
                {
                        bBleOnOffFlg = 0;
                        BleOnorOff();
                }
                BleDisplay();

                if(bCADCFlg)
                {
                        bCADCFlg = 0;
                        CurProcess();                                        //Calculate the current value and determines the state of charge and discharge
                }

                if(bCalibrationFlg)
                {
                        bCalibrationFlg = 0;
                        CaliProcess();                                        //PC calibration
                }

                if((bWrFlashFlg)&&(ucUpDataLimitTime == 0))
                {
                        bWrFlashFlg = 0;
                        if(FlashProcess())
                        {
                                if(bUartNeedAckFlg)
                                {
                                        UART_SEND_ACK;
                                }
                        }
                        else
                        {
                                if(bUartNeedAckFlg)
                                {
                                        UART_SEND_NACK;
                                }
                        }
                        bUartNeedAckFlg = 0;
                }
                
                if(bLEDOpen)
                {
                        bLEDOpen = 0;
                        bLEDFlg = 1;
                        ucLEDTimeCnt = 0;
                        LEDPowerOn();                                        //By LED displays battery capacity
                }

                if(bEnEEPRomBK && bE2PProcessFlg)
                {
                        bE2PProcessFlg = 0;
                        E2PRomBKProcess();
                }

                if(bISPFlg && bUartSndAckFlg)
                {
                        bISPFlg = 0;
                        ISPProcess();
                }

                if(bTimerFlg)                                                //timer is 1s
                {
                        bTimerFlg = 0;

                        AFECheck();                            //Check AFE Register                

                        LEDPowerOff();                                        //When the LED display 4s, turn off the LED

                        BatteryInfoManage();                        //Get battery voltage and temperature information

                        RamCheckProcess();                    //Detect the xdata block data

                        GaugeManage();                                        //Calculate the battery charge and discharge capacity

                        VolProcess();                                        //Detection of battery charge and discharge cut-off voltage
                        
                        BalProcess();                                        //Process external voltage balance

                        ProtectProcess();                                //Process battery abnormal state
                        
            if(bEnEEPRomBK)
            {
                            E2PRomBKCheck();                        //Detecting whether to backup EEPRom
            }

                        ShutDownProcess();                                //Detecting whether to enter a low-power
                }
                
                IntoShutDown();
        }
}
相关推荐
xu_wenming2 分钟前
嵌入式软件架构中的6种解耦艺术
c语言·驱动开发·嵌入式硬件·架构
sramdram6 分钟前
国产32位mcu微控制器高速风筒方案
单片机·嵌入式硬件·32位mcu·mcu微控制器·国产32位mcu
单片机仿真设计14 分钟前
【proteus仿真】基于STM32单片机直流电机控制设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
天空'之城19 分钟前
单片机基础核心知识点汇总(十八)
单片机·嵌入式硬件
736c1 小时前
STM32-看门狗 10
stm32·单片机
luiyarch1 小时前
汽车电子ISO 26262功能安全系列(第17期):系统集成与测试——验证系统级安全机制
嵌入式硬件·安全·车载系统·汽车
DevHub4 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
单片机仿真设计6 小时前
【proteus仿真】基于 STM32 农业大棚巡检小车 (仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
Hello_Damon_Nikola8 小时前
AiP9M161个人护理产品方案从设计到实现
单片机·嵌入式硬件
智购科技无人售货机工厂8 小时前
2026自动售货机热敏打印模块集成:从串口驱动到小票自动裁切的工程实践~YH
android·stm32·单片机·嵌入式硬件·系统架构