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();
        }
}
相关推荐
橘猫0.o1 小时前
【STM32】Flash详解
stm32·单片机·嵌入式硬件
charlie1145141912 小时前
IMX6ULL学习整理篇——Linux使用更现代的GPIO操作简单设备
linux·嵌入式硬件·学习·教程·mpu·gpio子系统·pinctl
_Ivan_2 小时前
STM32 HAL库 CANFD配置工具
stm32·单片机·嵌入式硬件
基极向上的三极管3 小时前
【51单片机】2-7【I/O口】点亮数码管
单片机·51单片机
建筑玩家3 小时前
FPGA实现按键切换流水灯不同亮灭模式
单片机·fpga开发
嵌入式仿真实验教学平台5 小时前
嵌入式仿真实验教学平台的核心优势再解析:对比Proteus的技术与教学价值突破
人工智能·单片机·嵌入式硬件·学习·proteus·嵌入式实时数据库
阿波c麻了8 小时前
第十五届单片机模拟考试III
单片机·嵌入式硬件
天天爱吃肉821810 小时前
【国产工具链发展,生态链分析,TSMaster VS Zcanpro的技术对比】
单片机·嵌入式硬件·汽车·学习方法
charlie11451419114 小时前
从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第2章——构建简单的ESP8266驱动
stm32·单片机·物联网·学习·c·esp8266
zhmc15 小时前
Cortex-M系列MCU的位带操作
单片机·嵌入式硬件