ZDBMS/header_bootloader/IapIsp.h

150 lines
6.4 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 __IAP_COMMUNICATE_H
#define __IAP_COMMUNICATE_H
//***------- <<< Use Configuration Wizard in Context Menu >>> ------------------
// <o>串口选择
// <i>串口选择切换串口号后需要手动修改InitGPIO()端口初始化确保升级或运行过程中不会误点灯或开MOS另外带IAP/ISP的工程也需要同步切换
// <1=>Uart0 : P0.6 For RXD0,P0.7 For TXD0 UART0CR=32(uart0默认)
// <2=>Uart0 : P0.6 For RXD0,P2.4 For TXD0 UART0CR=42
// <3=>Uart0 : P0.6 For RXD0,P2.5 For TXD0 UART0CR=52
// <4=>Uart0 : P0.6 For RXD0,P0.0 For TXD0 UART0CR=02
// <5=>Uart0 : P0.6 For RXD0,P0.1 For TXD0 UART0CR=12
// <6=>Uart0 : P0.7 For RXD0,P0.6 For TXD0 UART0CR=23
// <7=>Uart0 : P0.7 For RXD0,P2.4 For TXD0 UART0CR=43
// <8=>Uart0 : P0.7 For RXD0,P2.5 For TXD0 UART0CR=53
// <9=>Uart0 : P0.7 For RXD0,P0.0 For TXD0 UART0CR=03
// <10=>Uart0 : P0.7 For RXD0,P0.1 For TXD0 UART0CR=13
// <11=>Uart0 : P2.4 For RXD0,P0.6 For TXD0 UART0CR=24
// <12=>Uart0 : P2.4 For RXD0,P0.7 For TXD0 UART0CR=34
// <13=>Uart0 : P2.4 For RXD0,P2.5 For TXD0 UART0CR=54
// <14=>Uart0 : P2.4 For RXD0,P0.0 For TXD0 UART0CR=04
// <15=>Uart0 : P2.4 For RXD0,P0.1 For TXD0 UART0CR=14
// <16=>Uart0 : P2.5 For RXD0,P0.6 For TXD0 UART0CR=25
// <17=>Uart0 : P2.5 For RXD0,P0.7 For TXD0 UART0CR=35
// <18=>Uart0 : P2.5 For RXD0,P2.4 For TXD0 UART0CR=45
// <19=>Uart0 : P2.5 For RXD0,P0.0 For TXD0 UART0CR=05
// <20=>Uart0 : P2.5 For RXD0,P0.1 For TXD0 UART0CR=15
// <21=>Uart0 : P0.0 For RXD0,P0.7 For TXD0 UART0CR=30
// <22=>Uart0 : P0.0 For RXD0,P2.4 For TXD0 UART0CR=40
// <23=>Uart0 : P0.0 For RXD0,P2.5 For TXD0 UART0CR=50
// <24=>Uart0 : P0.0 For RXD0,P0.6 For TXD0 UART0CR=20
// <25=>Uart0 : P0.0 For RXD0,P0.1 For TXD0 UART0CR=10
// <26=>Uart0 : P0.1 For RXD0,P0.7 For TXD0 UART0CR=31
// <27=>Uart0 : P0.1 For RXD0,P2.4 For TXD0 UART0CR=41
// <28=>Uart0 : P0.1 For RXD0,P2.5 For TXD0 UART0CR=51
// <30=>Uart0 : P0.1 For RXD0,P0.6 For TXD0 UART0CR=21
// <29=>Uart0 : P0.1 For RXD0,P0.0 For TXD0 UART0CR=01
// <31=>Uart1 : P1.0 For RXD1,P1.1 For TXD1 UART1CR=10(uart1默认)
// <32=>Uart1 : P1.0 For RXD1,P3.3 For TXD1 UART1CR=40
// <33=>Uart1 : P1.0 For RXD1,P3.4 For TXD1 UART1CR=50
// <34=>Uart1 : P1.0 For RXD1,P2.6 For TXD1 UART1CR=20
// <35=>Uart1 : P1.0 For RXD1,P2.7 For TXD1 UART1CR=30
// <36=>Uart1 : P1.1 For RXD1,P1.0 For TXD1 UART1CR=01
// <37=>Uart1 : P1.1 For RXD1,P3.3 For TXD1 UART1CR=41
// <38=>Uart1 : P1.1 For RXD1,P3.4 For TXD1 UART1CR=51
// <39=>Uart1 : P1.1 For RXD1,P2.6 For TXD1 UART1CR=21
// <40=>Uart1 : P1.1 For RXD1,P2.7 For TXD1 UART1CR=31
// <41=>Uart1 : P3.3 For RXD1,P1.0 For TXD1 UART1CR=04
// <42=>Uart1 : P3.3 For RXD1,P1.1 For TXD1 UART1CR=14
// <43=>Uart1 : P3.3 For RXD1,P3.4 For TXD1 UART1CR=54
// <44=>Uart1 : P3.3 For RXD1,P2.6 For TXD1 UART1CR=24
// <45=>Uart1 : P3.3 For RXD1,P2.7 For TXD1 UART1CR=34
// <46=>Uart1 : P3.4 For RXD1,P1.0 For TXD1 UART1CR=05
// <47=>Uart1 : P3.4 For RXD1,P1.1 For TXD1 UART1CR=15
// <48=>Uart1 : P3.4 For RXD1,P3.3 For TXD1 UART1CR=45
// <49=>Uart1 : P3.4 For RXD1,P2.6 For TXD1 UART1CR=25
// <50=>Uart1 : P3.4 For RXD1,P2.7 For TXD1 UART1CR=35
// <51=>Uart1 : P2.6 For RXD1,P1.0 For TXD1 UART1CR=02
// <52=>Uart1 : P2.6 For RXD1,P1.1 For TXD1 UART1CR=12
// <53=>Uart1 : P2.6 For RXD1,P3.3 For TXD1 UART1CR=42
// <54=>Uart1 : P2.6 For RXD1,P3.4 For TXD1 UART1CR=52
// <55=>Uart1 : P2.6 For RXD1,P2.7 For TXD1 UART1CR=32
// <56=>Uart1 : P2.7 For RXD1,P1.0 For TXD1 UART1CR=03
// <57=>Uart1 : P2.7 For RXD1,P1.1 For TXD1 UART1CR=13
// <58=>Uart1 : P2.7 For RXD1,P3.3 For TXD1 UART1CR=43
// <59=>Uart1 : P2.7 For RXD1,P3.4 For TXD1 UART1CR=53
// <60=>Uart1 : P2.7 For RXD1,P2.6 For TXD1 UART1CR=23
// <61=>uart2 : P2.2 For RXD2,P2.1 For TXD2
#define UART_DEFINE 1
// <o>波特率选择
// <0=>9600
// <1=>115200
#define UART_BRT 0
#if UART_BRT == 0
#define UART_BPS_H 0x7F
#define UART_BPS_L 0x64
#define UART_BPS_F 0x04
#elif UART_BRT == 1
#define UART_BPS_H 0x7F
#define UART_BPS_L 0xF3
#define UART_BPS_F 0x00
#endif
//*<<< end of configuration section >>>
#if ((UART_DEFINE >= 0)&&(UART_DEFINE<= 30))
#define UartRxEn() INSCON = 0x00; REN = 1; //UART可以接收数据
#define UartTxEn(TxData) INSCON = 0x00; REN = 0; SBUF = TxData; //UART发送数据
#elif ((UART_DEFINE >= 31)&&(UART_DEFINE<= 60))
#define UartRxEn() INSCON = 0x40; REN1 = 1; INSCON = 0x00; //UART可以接收数据
#define UartTxEn(TxData) INSCON = 0x40; REN1 = 0; SBUF1 = TxData; INSCON = 0x00; //UART发送数据
#elif UART_DEFINE == 61
#define UartRxEn() INSCON = 0x40; REN2 = 1; INSCON = 0x00; //UART可以接收数据
#define UartTxEn(TxData) INSCON = 0x40; REN2 = 0; SBUF2 = TxData; INSCON = 0x00; //UART发送数据
#endif
#define IAP_FLG 0x5A
#define ISP_FLG 0xA5
#define IAP_MODE 0
#define ISP_MODE 1
//for 485 communication
#define HEARD1 0x00
#define HEARD2 0x01
#define LENGTH 0x02
#define SOURCE 0x03
#define TARGET 0x04
#define COMMAND 0x05
#define INDEXES 0x06
#define DATA 0x07
#define IAP_BMSID 0x07 //电池管理系统1
#define IAP_PCID 0x3D //上位机系统
//IAP&ISP Command
#define IAP_CMD_HANDSHAKE 0x06
#define IAP_CMD_BEGIN 0x07
#define IAP_CMD_TRANS 0x08
#define IAP_CMD_VERIFY 0x09
#define IAP_CMD_RESET 0x0A
//CMD_IAP_ACK error
#define IAPERROR_SIZE 0x01 //固件大小超范围
#define IAPERROR_ERASE 0x02 //擦除flash失败
#define IAPERROR_WR 0x03 //写入flash失败
#define IAPERROR_UNLOCK 0x04 //车辆未处于锁车状态,未处于可更新固件状态
#define IAPERROR_INDEX 0x05 //数据索引错误
#define IAPERROR_BUSY 0x06 //IAP正忙
#define IAPERROR_FORM 0x07 //数据格式错误非8的整数倍
#define IAPERROR_CRC 0x08 //数据校验失败
#define IAPERROR_RESET 0x09 //芯片复位失败
#define IAPERROR_HANDSHAKE 0x0A //握手失败
#define IAPERROR_CHECKSUM 0x80
#define IAPERROR_ADDR 0x40
#define IAPERROR_CMD 0x30
extern BOOL bIapIspFlg;
extern BOOL bHandsheakOkFlg;
extern void BootIapIsp(void);
#endif