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();
        }
}
相关推荐
亿道电子Emdoor4 小时前
【Altium】原理图中网络标签作用范围的设置
单片机·嵌入式硬件
风行男孩5 小时前
stm32基础学习——串口(USART)的基本使用
stm32·嵌入式硬件·学习
点灯小铭5 小时前
基于单片机的多模式档位调节与过热保护风扇设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
星源~5 小时前
Zephyr - MCU 开发快速入门指南
单片机·嵌入式硬件·物联网·嵌入式开发·zephyr
星源~5 小时前
zephyr-开发环境配置疑难问题解决
单片机·嵌入式硬件·物联网·项目开发
BMS小旭5 小时前
CubeMx-DMA
单片机·学习·cubemx·dma
Arciab5 小时前
51单片机_LED点阵屏
单片机·嵌入式硬件·51单片机
电子小白12315 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
清风66666615 小时前
基于单片机的多传感器智能云梯逃生控制器设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计
小何code15 小时前
STM32入门教程,第10课(上),OLED显示屏
stm32·单片机·嵌入式硬件