BenTengFDC2/DCBMSBENTENGB30X08FullVersionVoltVechile/SYSTEM/usart/usart.h
2024-05-30 15:19:55 +08:00

299 lines
7.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __USART_H
#define __USART_H
//#include <stm32f10x_lib.h>
#include "stdio.h"
#include "sys.h"
#define USART_REC_LEN 200 //定义最大接收字节数 200
#define EN_USART1_RX 1 //使能1/禁止0串口1接收
#define USART2_REC_LEN 254 // 250 //定义最大接收字节数 200
#define EN_USART2_RX 1 //使能1/禁止0串口2接收
#define USART3_REC_LEN 200 //定义最大接收字节数 200
#define EN_USART3_RX 1 //使能1/禁止0串口3接收
#define UART4_REC_LEN 200 //定义最大接收字节数 200
#define EN_UART4_RX 1 //使能1/禁止0串口4接收
#define UART5_REC_LEN 200 //定义最大接收字节数 200
#define EN_UART5_RX 1 //使能1/禁止0串口5接收
extern u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 USART_RX_STA; //接收状态标记
//如果想串口中断接收,请不要注释以下宏定义
extern u8 USART2_RX_BUF[USART2_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 USART2_RX_STA; //接收状态标记
extern u8 USART2_RX_FLAG;
void RS232_Uart2_Write(uint8_t* buff, int length) ;
extern u8 USART3_RX_BUF[USART3_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 USART3_RX_STA; //接收状态标记
extern u8 USART3_RX_FLAG;
extern u16 USART3_RX_LEN;
void RS232_Uart3_Write(uint8_t* buff, int length) ;
void RS232_Uart4_Write(uint8_t* buff, int length) ;
extern u8 UART4_RX_BUF[UART4_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 UART4_RX_STA; //接收状态标记
extern u8 UART4_RX_FLAG;
void RS232_Uart4_Write(uint8_t* buff, int length) ;
extern u16 UART5_RX_STA; //接收状态标记
extern u8 UART5_RX_FLAG;
extern u16 UART5_RX_LEN; //接收长度
extern u8 UART5_RX_BUF[UART5_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
////extern u8 UpdToutCnt;
void uart_init(u32 bound);
void uart2_init(u32 bound);
void uart3_init(u32 bound);
void uart4_init(u32 bound);
void uart5_init(u32 bound);
void debugdataprocess(u8 *data,u16 len);
void Delupdtcnt(void);
u16 Getupdtcnt(void);
#include "stm32f10x.h"
#include <stdio.h>
#define MAX_PARAM 4
typedef struct {
uint8_t paranum;
uint8_t cmdlen;
uint8_t *cmd;
uint8_t *param[MAX_PARAM];
uint8_t paramlen[MAX_PARAM];
}SH_CMD;
typedef enum {
SHELL_USER, // 用户级
SHELL_TEST, // 测试工程级别
SHELL_RD, // 研发级别
} e_cmdtype;
typedef struct {
uint8_t shelltype;
char *command;
void (*cmdfunc)(void);
}SHELLMAP;
#define USART_BUFFER_SIZE 128
#define USART_BUFFER_TX_SIZE 64
typedef struct
{
uint8_t Link_status;
uint8_t recvFlag;
uint8_t recvLength;
uint8_t sendLength;
uint8_t recvBuffer[USART_BUFFER_SIZE];
uint8_t sendBuffer[USART_BUFFER_TX_SIZE];
}UsartObj;
void RS232_Blue_Write(uint8_t* buff, int length) ;
void Blue_Receive_Parser(void);
void Blue_Query_Version(void);
void Blue_Connect_State(void);
void Blue_Name_Cfg(uint8_t *data);
void Blue_Name_Query(void);
void Blue_Query_UART_Cfg(void);
typedef enum
{
BLUE_IDLE = 0,
BLUE_CONFIG,
BLUE_PREPARE,
BLUE_LINK_STATUE,
BLUE_LINK_CONNECTING,
BLUE_LINK_CONNECTED,
BLUE_END
}BLueProcessState;
typedef enum
{
BLUE_REGISTERED= 0,
BLUE_LOGIN,
BLUE_WECHATAPPLET_ONLINE,
BLUE_WECHATAPPLET_OFFLINE,
BLUE_WECHATAPPLET_UPDATA,
BLUE_END_OVER
}BLueDataProcessState;
typedef struct
{
uint8_t State;
uint8_t Link_status;
uint8_t ConnectServerState;
uint8_t *recvBuffer;
uint16_t recvLength;
uint16_t sendLength;
uint8_t *sendBuffer;
uint8_t connetcOvertimeFlag;
uint8_t ReciveDataOvertimeFlag;
}BlueManage_t;
void BluetoothProcess(void);
void BluetoothConnectProcess(void);
#define D_DP_FrameStart1 0xA5 /* 帧头 1 */
#define D_DP_FrameStart2 0x5A /* 帧头 2 */
#define D_DP_Device 0x20 //0x10 /* 指定地址写寄存器数据 */
#define D_DP_CtrlRead 0x81 /* 指定地址读寄存器数据 */
#define D_DP_DataWirte 0x82 /* 指定地址开始写入数据串到变量存储区 */
#define D_DP_DataRead 0x83 /* 从变量存储区指定地址开始读入RD_LEN长度数据 */
#define D_DP_CurveWirte 0x84 /* 写曲线缓冲区数据 */
#pragma pack(1)
typedef struct
{
uint16_t address; // 寄存器地址
uint16_t len;
uint8_t device;
uint16_t cmd;
uint8_t ucDataSpace[350]; // 数据域 // 128 512
uint16_t crc;
} DP_FrameBluetooth_t;
#pragma pack()
typedef struct
{
uint8_t addr;
uint8_t len;
uint8_t *param;
}HMI_DW_BLUE;
//发送枚举类型
typedef enum
{
BLUE_Registered = 0,
//充电桩主动发送
BLUE_Login, //
BLUE_BootNotification,
BLUE_DataTransfer_ChargeHost, //充电桩主动发送数据监控中心
BLUE_DiagnosticsStatusNotification,
BLUE_FirmwareStatusNotification,
BLUE_Heartbeat,
BLUE_StartTransaction,
BLUE_StatusNotification,
BLUE_StopTransaction,
OCPP_CallError_Send
}BLUE_SendHandleState;
extern BlueManage_t BluetoothInfo;
extern uint8_t SocCalculateCharging(void);
typedef struct
{
uint8_t paramaddr;
uint8_t paramlen;
uint8_t *paramData;
}SysparamTable_t;
/* 电池组 bms0 信息 */
#pragma pack (1) /*指定按1字节对齐*/
typedef struct
{
// byte 0-1-2
uint16_t BattCellVoltage ; // 0.001V 电池电压
uint8_t Celltemp ; //电池温度
}cellbat_info_t;
typedef union
{
uint8_t stats[8];
struct
{
//byte0 // byte1
uint16_t BatMaNegRlySts :2; //电池主负继电器
uint16_t BatMaPosRlySts :2; //电池包主正继电器
uint16_t BatPrechrgRlySts :2; //电池包预充继电器状态
uint16_t BatHvIntlkSts :2; //电池包高压互锁
uint16_t BatFuSts:1; //电池包保险 0正常 1熔断
uint16_t BatHeRlySts:2; //电池包加热继电器状态
uint16_t BatHeSts:2; //电池包加热状态
uint16_t Prechrgsts:1; //电池预充状态
uint16_t reserve:2;
// byte3-4-5-6
uint16_t Batfaultnum :16; //故障个数
uint16_t BatTalVolSts :16; //故障码
// byte7
uint8_t BatAvgCelVolSts:2; //电池包单体电压告警
uint8_t BatAvgTolVolSts:2; //电池包单体电压告警
uint8_t BatChrgCurSts:1; //电池充电电流状态
uint8_t BatDischrgCurSts:1; //放电电流
uint8_t BatIslateSts:1; //电池包绝缘
uint8_t BatInCANBsErrFlt:1; //can总线异常
// byte8
uint8_t BatTempSensFlt:1;//电池包温度
uint8_t BatCurSensFlt:1; //电池包电流传感器
uint8_t BatCelVolSensFlt:1; //单体电压传感器异常
uint8_t BalanceSts:2;//均衡
uint8_t reserv3:3;
}bits;
}bms_state_info_t;
typedef struct
{
uint8_t BatManuSpecCode[4]; //协议适配车类型
uint8_t BatManuversionNo[4]; //bms协议
uint32_t VehOdo ; //车辆行驶例程
uint8_t CDUType; //产品类型代码
//充电信息
uint16_t ChrgVolRqst ;//充电电压请求
uint16_t ChrgCurRqst ;//充电电流请求
uint16_t BatIslatRes ; //绝缘值 kΩ
uint8_t BatSOH ;
uint8_t BatSOC;
uint16_t BatEnrgAvail ; //电池包剩余电量 0.1kw
uint16_t BatEnrgRated ; //电池额定电量 0.1kw
uint16_t BatChrgTims;
uint8_t BatPlsChrgPowAvail; //脉冲充电功率有效
uint8_t BatPlsDischrgPowAvail;//脉冲放电功率有效
uint16_t BatVolRated ; //电池额定电压 0.1V
//单节电池温度信息 与电池电压信息
cellbat_info_t cellbat_data[40];
//各种继电器状态等信息
bms_state_info_t bms_state_info;
}bmsblue_datainfo_t;
#pragma pack()
extern bmsblue_datainfo_t bluebms_datainfo;
extern void BMS_UpdataACKInfo(void);
extern void BMS_VersionInfo(void);
extern void UpdataDebugInfoToServer(uint8_t *data,uint8_t len);
extern void BMS_ChargingDataInfo(void);
extern void bat_temp_Info(void);
extern void bat_Cell_Vol_Info(void);
extern void bat_state_code(void);
#endif