Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
haoJin750TFT
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
haoJin750TFT
Commits
15a3fb95
Commit
15a3fb95
authored
Aug 16, 2024
by
王雅楠
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://tyw-server.synology.me:12345/shihao/haojin750tft
into wangyanan
parents
98295941
e0948dd3
Changes
24
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
2561 additions
and
1038 deletions
+2561
-1038
HaoJin750TFT.uvprojx
.../Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx
+1
-1
HaoJin750TFT.sct
...ject/Cmsemicon/BAT32A279/MDK_ARM/Objects/HaoJin750TFT.sct
+2
-2
BackLight.h
Firmware/Source/Application/BackLight.h
+1
-1
CAN_CH0_CAN_Communication_Matrix.c
...are/Source/Application/CAN_CH0_CAN_Communication_Matrix.c
+1
-1
Data_ESpeed.c
Firmware/Source/Application/Data_ESpeed.c
+21
-21
Data_ESpeed.h
Firmware/Source/Application/Data_ESpeed.h
+1
-1
Data_VSpeed.c
Firmware/Source/Application/Data_VSpeed.c
+4
-4
Data_VSpeed.h
Firmware/Source/Application/Data_VSpeed.h
+1
-1
AMT630H.c
Firmware/Source/Component/AMT630H/AMT630H.c
+5
-0
AMT630H.h
Firmware/Source/Component/AMT630H/AMT630H.h
+2
-2
AMT630H_Datas.c
Firmware/Source/Component/AMT630H/AMT630H_Datas.c
+46
-15
GraphicsFunc.c
Firmware/Source/Component/AMT630H/GraphicsFunc.c
+92
-146
Key_user.c
Firmware/Source/Component/Key/Key_user.c
+4
-2
Menu.h
Firmware/Source/Component/Menu/Menu.h
+1
-1
Menu_Interface.c
Firmware/Source/Component/Menu/Menu_Interface.c
+2
-2
PowerManag_user.c
Firmware/Source/Component/PowerManagement/PowerManag_user.c
+1
-1
flash.h
...Device/Cmsemicon/BAT32A279/Library/Driver/include/flash.h
+5
-5
flash.c
...rce/Device/Cmsemicon/BAT32A279/Library/Driver/src/flash.c
+2
-3
Sys_Task_List.c
Firmware/Source/System/Sys_Task_List.c
+2
-3
UDS_ISO14229_Services.c
Firmware/Source/UDS/UDS_ISO14229_Services.c
+31
-773
UDS_ISO14229_Services.h
Firmware/Source/UDS/UDS_ISO14229_Services.h
+18
-53
Boot程序版本更新说明.txt
Firmware/utility/Boot_Release/Boot程序版本更新说明.txt
+9
-0
HaoJin_750TFT_HJYB-7500TFT_BV1.02_20240816.hex
...ot_Release/HaoJin_750TFT_HJYB-7500TFT_BV1.02_20240816.hex
+1153
-0
HaoJin_750TFT_HJYB-7500TFT_BV1.03_20240816.hex
...ot_Release/HaoJin_750TFT_HJYB-7500TFT_BV1.03_20240816.hex
+1156
-0
No files found.
Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx
View file @
15a3fb95
...
...
@@ -275,7 +275,7 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>
1
</Type>
<StartAddress>
0x
c40
0
</StartAddress>
<StartAddress>
0x0
</StartAddress>
<Size>
0x73c00
</Size>
</OCR_RVCT4>
<OCR_RVCT5>
...
...
Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/Objects/HaoJin750TFT.sct
View file @
15a3fb95
...
...
@@ -2,8 +2,8 @@
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x0000
c4
00 0x00073C00 { ; load region size_region
ER_IROM1 0x0000
c4
00 0x00073C00 { ; load address = execution address
LR_IROM1 0x0000
00
00 0x00073C00 { ; load region size_region
ER_IROM1 0x0000
00
00 0x00073C00 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
...
...
Firmware/Source/Application/BackLight.h
View file @
15a3fb95
Firmware/Source/Application/CAN_CH0_CAN_Communication_Matrix.c
View file @
15a3fb95
...
...
@@ -15,7 +15,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
{
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
},
{
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
},
{
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
},
500
0
ul
,
500ul
,
0x101ul
,
((
void
*
)
0
),
((
void
*
)
0
),
...
...
Firmware/Source/Application/Data_ESpeed.c
View file @
15a3fb95
...
...
@@ -288,27 +288,27 @@ void Data_Engine_Speed_Processing_Service ( void )
}
}
}
//第4步 增加回差
if
(
DataESpeedDisp
<=
80
)
{
DataESpeedDisp
=
DataESPeedDamping
.
Speed
;
}
else
{
if
(
DataESpeedDisp
<
DataESPeedDamping
.
Speed
)
{
DataESpeedDisp
=
DataESPeedDamping
.
Speed
;
}
else
{
Delta
=
DataESpeedDisp
-
DataESPeedDamping
.
Speed
;
if
(
Delta
>=
DATA_ESPEED_HYSTERESIS
)
{
DataESpeedDisp
=
DataESPeedDamping
.
Speed
;
}
}
}
// //第4步 增加回差
// if (DataESpeedDisp <= 80)
// {
// DataESpeedDisp = DataESPeedDamping.Speed;
// }
// else
// {
// if ( DataESpeedDisp < DataESPeedDamping.Speed )
// {
// DataESpeedDisp = DataESPeedDamping.Speed;
// }
// else
// {
// Delta = DataESpeedDisp - DataESPeedDamping.Speed;
// if ( Delta >= DATA_ESPEED_HYSTERESIS )
// {
// DataESpeedDisp = DataESPeedDamping.Speed;
// }
// }
// }
}
uint8_t
Get_EngineValid
(
void
)
...
...
Firmware/Source/Application/Data_ESpeed.h
View file @
15a3fb95
...
...
@@ -11,7 +11,7 @@
#define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值
#define DATA_ENGINE_STOP_THRESHOLD 300 //发动机停止阈值
#define DATA_ESPEED_DAMPING_FACTOR
4
//阻尼系数
#define DATA_ESPEED_DAMPING_FACTOR
1
//阻尼系数
#define DATA_ESPEED_INC_STEP 10 //速度增加时慢加速速度变化步长
#define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长
#define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度
...
...
Firmware/Source/Application/Data_VSpeed.c
View file @
15a3fb95
...
...
@@ -339,10 +339,10 @@ void Data_Vehicle_Speed_Processing_Service(void)
{
VSpeedCal
*=
105
;
VSpeedCal
/=
100
;
if
((
VSpeedCal
%
10
)
>=
5
)
{
VSpeedCal
+=
5
;
/* 四舍五入 */
}
//
if((VSpeedCal % 10) >= 5)
//
{
//
VSpeedCal += 5; /* 四舍五入 */
//
}
DataVSpeedDisp
=
(
uint16_t
)
VSpeedCal
;
}
else
...
...
Firmware/Source/Application/Data_VSpeed.h
View file @
15a3fb95
...
...
@@ -7,7 +7,7 @@
#define DATA_VEHICLE_RUNNING_THRESHOLD 25 //汽车行进阈值
#define DATA_VEHICLE_STOP_THRESHOLD 20 //汽车停止阈值
#define DATA_VSPEED_DAMPING_FACTOR
3
//阻尼系数
#define DATA_VSPEED_DAMPING_FACTOR
1
//阻尼系数
#define DATA_VSPEED_INC_STEP 2 //速度增加时慢加速速度变化步长
#define DATA_VSPEED_DEC_STEP 6 //方向改变时急减速速度变化步长
#define DATA_VSPEED_APPR_SPEED_MIN 2 //最小逼近速度
...
...
Firmware/Source/Component/AMT630H/AMT630H.c
View file @
15a3fb95
...
...
@@ -37,6 +37,9 @@ s_AMT630H_FlashCheck_t AMT630H_FlashCheck;
unsigned
long
Delay_Time
=
0
;
unsigned
long
Delay_Time_Set
=
0
;
extern
uint32_t
Check_Upgrade
;
extern
uint32_t
Check_Upgrade_Cnt
;
/* Refresh Time */
unsigned
long
AMT630H_RefreshTime
=
0
;
static
uint8_t
AMT630H_Animation_Start
=
0
;
...
...
@@ -306,6 +309,8 @@ void Amt630hInit(void)
AMT630H_FlashCheck
.
InquireTime
=
0
;
AMT630H_FlashCheck
.
CheckStateTime
=
0
;
AMT630H_FlashCheck
.
Result
=
0
;
Check_Upgrade
=
0
;
Check_Upgrade_Cnt
=
0
;
}
void
AMT630H_Sleep
(
void
)
{
...
...
Firmware/Source/Component/AMT630H/AMT630H.h
View file @
15a3fb95
...
...
@@ -18,7 +18,7 @@ typedef struct
uint8_t
Result
;
}
s_AMT630H_FlashCheck_t
;
#define AMT630H_REFRESH_TIME
25
U
#define AMT630H_REFRESH_TIME
50
U
#define AMT630H_ANIMATION_TIME 3000U //ms
#define AMT630H_ANIMATION_PIC_NUM 110U
...
...
Firmware/Source/Component/AMT630H/AMT630H_Datas.c
View file @
15a3fb95
...
...
@@ -2851,7 +2851,10 @@ static void AMT630H_GUI_TIME(uint16_t Hour, uint16_t Minute)
else
if
(
g_u8Display_Mode
==
ModeNIGHT
)
{
/*外部接收小时和分钟*/
if
(
FLASH_SYNC_1Hz
)
{
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0634_916_503
);
}
DISPLAY_NUM_ST
DisplayNumPara
;
uint16_t
HourNumber
;
uint16_t
MinuteNumber
;
...
...
@@ -2923,11 +2926,11 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
else
if
(
FuelLevel
==
1
)
{
s_FuelLowTime
++
;
if
(
s_FuelLowTime
<
15
)
if
(
s_FuelLowTime
<
=
15
)
{
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0552_503_529
);
/*黄色燃油灯*/
}
if
(
s_FuelLowTime
==
20
)
if
(
s_FuelLowTime
>
20
)
{
s_FuelLowTime
=
0
;
}
...
...
@@ -2951,14 +2954,14 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
}
s_FuelLowTime
=
0
;
}
else
if
(
FuelLevel
==
1
)
else
if
(
FuelLevel
==
1
)
{
s_FuelLowTime
++
;
if
(
s_FuelLowTime
<
15
)
if
(
s_FuelLowTime
<
=
15
)
{
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0552_503_529
);
/*黄色燃油灯*/
}
if
(
s_FuelLowTime
==
20
)
if
(
s_FuelLowTime
>
20
)
{
s_FuelLowTime
=
0
;
}
...
...
@@ -2966,7 +2969,9 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
else
{
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0661_503_529
);
/*白色燃油灯*/
s_FuelLowTime
=
0
;
}
}
/*燃油格数走格*/
...
...
@@ -3156,16 +3161,27 @@ static void AMT630H_GUI_Voltage(uint16_t Voltage)
DISPLAY_NUM_ST
DisplayNumPara
;
uint16_t
VoltageNumber
;
VoltageNumber
=
Voltage
/
10
;
if
(
Voltage
%
10
>
5
)
{
VoltageNumber
++
;
}
uint16_t
Voltage_Hundred
;
uint16_t
Voltage_Ten
;
uint16_t
Voltage_Unit
;
uint16_t
Front
;
if
((
VoltageNumber
<=
120
)
||
(
VoltageNumber
>
150
))
{
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0563_923_407
);
/*电压图标*/
}
else
{
;
}
/*数据处理*/
Voltage_Hundred
=
VoltageNumber
/
100
;
Voltage_Ten
=
(
VoltageNumber
%
100
)
/
10
;
Voltage_Unit
=
VoltageNumber
%
10
;
Front
=
Voltage_
Ten
*
10
+
Voltage_Unit
;
Front
=
Voltage_
Hundred
*
10
+
Voltage_Ten
;
DisplayNumPara
.
NumList
=
NumbeList_Voltage_NIGHT
;
if
((
VoltageNumber
>=
100
)
&&
(
VoltageNumber
<
1000
))
...
...
@@ -3754,6 +3770,10 @@ static void AMT630H_GUI_ESpeed(uint16_t ESpeed)
* @brief 主界面显示
*
*/
uint8_t
VechileSpeed_time
=
0
;
uint8_t
KL30_VOLTAGE_time
=
0
;
uint8_t
VechileSpeed
=
0
;
uint16_t
KL30_VOLTAGE_Value
=
0
;
void
AMT630H_GUI_BACKGRAND
()
{
/*背景图*/
...
...
@@ -3787,7 +3807,6 @@ void AMT630H_GUI_BACKGRAND()
/*主界面函数*/
AMT630H_GUI_Light
();
AMT630H_GUI_TIME
(
Get_Dis_Hour_Time
(),
Get_Dis_Minute_Time
());
AMT630H_GUI_Voltage
((
ADC_Read_Signal
(
ADC_CH_KL30_VOLTAGE
))
/
10
);
// AMT630H_GUI_Telephone(Telephone);
/*燃油*/
if
(
Get_Fuel_Sensor_State
()
==
FuelSensorNormal
)
...
...
@@ -3798,16 +3817,28 @@ void AMT630H_GUI_BACKGRAND()
{
AMT630H_GUI_Fuel
(
0
);
}
/*里程*/
if
(
Get_Dis_OdoAndTrip
()
==
0
)
if
(
KL30_VOLTAGE_time
<
10
)
{
AMT630H_GUI_ODO
(
Get_ODO_Value
()
/
10
,
Get_Dis_Unit
())
;
KL30_VOLTAGE_time
++
;
}
else
{
AMT630H_GUI_Trip
(
Get_Trip_Value
(),
Get_Dis_Unit
());
KL30_VOLTAGE_time
=
0
;
KL30_VOLTAGE_Value
=
(
ADC_Read_Signal
(
ADC_CH_KL30_VOLTAGE
))
/
10
;
}
AMT630H_GUI_Voltage
(
KL30_VOLTAGE_Value
);
AMT630H_GUI_ODO
(
Get_ODO_Value
()
/
10
,
0
);
if
(
VechileSpeed_time
<
4
)
{
VechileSpeed_time
++
;
}
else
{
VechileSpeed_time
=
0
;
VechileSpeed
=
Get_DispVechileSpeed
()
/
10
;
}
/*车速*/
if
(
Get_VechileSpeedValid
()
==
1
)
{
AMT630H_GUI_VSpeed
(
Get_DispVechileSpeed
()
/
10
,
Get_Dis_Unit
());
...
...
Firmware/Source/Component/AMT630H/GraphicsFunc.c
View file @
15a3fb95
#include <string.h>
#include "UartProtocol.h"
#include "PicBin.h"
#include <stdint.h>
#include "UDS_ISO14229_Services.h"
#include "flash.h"
#define NULL 0
extern
uint8_t
UartRevBuff
[
0x1000
];
extern
uint32_t
UartRevCnts
;
uint8_t
*
GetUartRecvData
(
uint32_t
*
UartRecvBufLen
,
uint32_t
*
UartRecvPos
)
{
*
UartRecvBufLen
=
0x1000
;
...
...
@@ -72,7 +77,7 @@ void DisplayNum(uint8_t page, DISPLAY_NUM_ST *pNumData, int32_t NumVal)
}
/***************** Read 630 ************************/
#define READ_MCU_DATA_MAX 0x
80
0
#define READ_MCU_DATA_MAX 0x
4
0
enum
{
READ630_IDLE
,
READ630_WAITING_RESP
,
...
...
@@ -82,6 +87,13 @@ enum {
READ630_RECV_BACKUP_DATA_CRC
,
};
uint8_t
ReadDataBuf
[
READ_MCU_DATA_MAX
];
/* 读取缓存 */
uint32_t
NeedWriteSize
;
/* 需要写入文件的长度 */
uint32_t
FactOffset
;
/* 绝对地址 */
uint32_t
AppOffset
;
uint32_t
Check_Upgrade
;
uint32_t
Check_Upgrade_Cnt
;
static
uint8_t
Read630State
=
READ630_IDLE
;
static
uint32_t
ReqDataBufAddr
=
0
;
static
uint32_t
ReqDataLen
=
0
;
...
...
@@ -171,177 +183,111 @@ void SetRecvDataSt(RECV_MCU_DATA_TYPE type, uint32_t addr, uint32_t len, uint32_
}
/***************** Read 630 end ************************/
/* Test */
static
uint8_t
TestReadBuf
[
READ_MCU_DATA_MAX
];
static
uint32_t
TestDataLen
=
0
;
static
uint32_t
TestDataCrC
=
0
;
static
uint32_t
ReadOffset
=
0
;
static
uint32_t
CalcCrcVal
=
0xffffffff
;
static
uint32_t
TestCycleNum
=
0
;
static
uint32_t
CalcCrc32
(
uint8_t
*
buf
,
int
Len
,
uint32_t
InitVal
)
{
int
i
;
int
n
=
0
;
uint32_t
crc
=
InitVal
;
// Initial value
for
(
n
=
0
;
n
<
Len
;
n
++
)
{
crc
^=
(
uint32_t
)
buf
[
n
]
<<
24
;
// crc ^= *data; data++;
for
(
i
=
0
;
i
<
8
;
++
i
)
{
if
(
crc
&
0x80000000
)
{
crc
=
(
crc
<<
1
)
^
0x04C11DB7
;
// 0xEDB88320= reverse 0x04C11DB7
}
else
{
crc
=
(
crc
<<
1
);
}
}
}
return
crc
;
}
void
TestRead630Update
(
void
)
void
GetReadInfo
(
READ_ARK630_CMD
type
)
{
uint32_t
tmpLen
;
static
uint8_t
readSt
=
0
;
static
uint16_t
getStRetryCnts
=
0
;
if
(
TestDataLen
==
0
)
{
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
GET_APP_DATA_OFFSET
,
0
,
0
,
0
);
getStRetryCnts
=
500
;
}
else
{
TestDataLen
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
if
((
TestDataLen
!=
0
)
||
(
--
getStRetryCnts
==
0
))
{
if
(
TestDataLen
!=
0
)
{
TestDataLen
=
RespDataLen
;
TestDataCrC
=
RespDataCrc
;
ReadOffset
=
0
;
CalcCrcVal
=
0xffffffff
;
}
readSt
=
0
;
}
}
}
else
{
if
(
readSt
==
0
)
{
uint32_t
tmpRet
;
if
(
NeedWriteSize
==
0
)
{
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
REQ_DATA
,
ReadOffset
,
READ_MCU_DATA_MAX
,
TestReadBuf
);
ProcMcuOrBackupData
(
type
,
0
,
0
,
0
);
/* 获取偏移地址 */
getStRetryCnts
=
500
;
ReadOffset
+=
READ_MCU_DATA_MAX
;
}
else
{
tmpLen
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
if
(
ReadOffset
==
tmpLen
)
{
if
(
ReadOffset
<
TestDataLen
)
{
CalcCrcVal
=
CalcCrc32
(
TestReadBuf
,
READ_MCU_DATA_MAX
,
CalcCrcVal
);
readSt
=
0
;
}
else
{
CalcCrcVal
=
CalcCrc32
(
TestReadBuf
,
TestDataLen
-
(
ReadOffset
-
READ_MCU_DATA_MAX
),
CalcCrcVal
);
if
(
CalcCrcVal
!=
TestDataCrC
)
{
while
(
1
)
{
RTE_WDT_Clear
();
}
}
else
{
TestCycleNum
++
;
}
getStRetryCnts
=
500
;
TestDataLen
=
0
;
TestDataCrC
=
0
;
readSt
=
0
;
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
if
((
tmpRet
!=
2
)
||
(
--
getStRetryCnts
==
0
))
/* 非零值为获得的程序地址 */
{
if
(
tmpRet
!=
2
)
{
NeedWriteSize
=
32
;
/* 此时的NeedWriteSize不重要, 只要跳出循环就行 */
if
(
type
==
GET_APP_DATA_OFFSET
)
{
FactOffset
=
0
;
/* USB按相对地址获取数据 */
}
AppOffset
=
0x00
;
}
if
(
--
getStRetryCnts
==
0
)
{
ReadOffset
-=
READ_MCU_DATA_MAX
;
readSt
=
0
;
}
}
}
}
/* Test end */
/* Test */
static
uint32_t
TestBackupDataLen
=
0
;
static
uint32_t
TestBackupDataOffset
=
0
;
static
uint32_t
TestBackupDataOffsetEnd
=
0
;
static
uint32_t
TestBackupDataCrc
=
0
;
static
uint8_t
*
pData
=
(
uint8_t
*
)
0x40400
;
void
TestWrite630Backup
(
void
)
/**
* @brief 检查Flash中的MCU程序信息, 是否与当前运行的MCU_APP信息相同, 若不同, 则进入升级模式
*/
void
Check_MCU_in_Flash
(
READ_ARK630_CMD
type
)
{
static
int
readstep
=
0
;
uint32_t
tmpRet
;
static
uint8_t
readSt
=
0
;
static
uint16_t
getStRetryCnts
=
0
;
TestBackupDataLen
=
0x100000
;
if
(
TestBackupDataOffset
==
0
)
{
if
(
readSt
==
0
)
{
uint32_t
tmpLen
;
uint8_t
saveVersion
[
16
];
uint8_t
readVersion
[
16
];
if
(
NeedWriteSize
!=
0
)
{
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
GET_BACKUP_DATA_OFFSET
,
0
,
0
,
NULL
);
(
void
)
memset
(
ReadDataBuf
,
0xFFU
,
sizeof
(
ReadDataBuf
));
/* 初始化buffer */
ProcMcuOrBackupData
(
REQ_DATA
,
FactOffset
,
READ_MCU_DATA_MAX
,
ReadDataBuf
);
// 按地址获取程序数据
getStRetryCnts
=
500
;
}
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
NULL
);
if
((
tmpRet
!=
2
)
||
(
--
getStRetryCnts
==
0
))
{
if
(
tmpRet
!=
2
)
{
TestBackupDataOffset
=
tmpRet
;
TestBackupDataOffsetEnd
=
TestBackupDataOffset
+
TestBackupDataLen
;
}
else
{
tmpLen
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
/* 获取读取状态 */
if
(
FactOffset
+
READ_MCU_DATA_MAX
==
tmpLen
)
/* 当返回值为目标位置时为数据获取成功 */
{
if
(
AppOffset
==
0
)
/* 首个数据块内解析文件信息 */
{
if
(
type
==
GET_APP_DATA_OFFSET
)
/* 从 MCU_APP 升级文件 */
{
flash_read
(
FLASH_630H_UPDATE_INFO
,
sizeof
(
saveVersion
),
saveVersion
);
/* 读取630H升级记录 */
memcpy
(
readVersion
,
&
ReadDataBuf
[
16
],
16
);
/* 630中读出的版本信息 */
if
(
memcmp
(
readVersion
,
saveVersion
,
16
)
!=
0
)
/* 对比版本不同才更新 */
{
Get_Into_630H_Update_MCU_Mode
();
}
else
{
/* 信息相同, 重置状态 */
NeedWriteSize
=
0
;
Check_Upgrade
=
0
;
readSt
=
0
;
}
}
}
else
if
(
TestBackupDataCrc
==
0
)
{
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
GET_BACKUP_DATA_CRC
,
TestBackupDataOffset
,
TestBackupDataLen
,
NULL
);
getStRetryCnts
=
500
;
}
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
NULL
);
if
((
tmpRet
!=
2
)
||
(
--
getStRetryCnts
==
0
))
{
if
(
tmpRet
!=
2
)
{
TestBackupDataCrc
=
tmpRet
;
}
readSt
=
0
;
}
}
}
else
{
#if 1
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
REQ_DATA
,
TestBackupDataOffset
,
READ_MCU_DATA_MAX
,
TestReadBuf
);
getStRetryCnts
=
500
;
TestBackupDataOffset
+=
READ_MCU_DATA_MAX
;
}
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
if
(
TestBackupDataOffset
==
tmpRet
)
{
if
(
TestBackupDataOffset
<
TestBackupDataOffsetEnd
)
{
readSt
=
0
;
}
else
{
if
(
--
getStRetryCnts
==
0
)
{
/* 读信息超时, 重置状态 */
readSt
=
0
;
}
}
if
(
--
getStRetryCnts
==
0
)
{
TestBackupDataOffset
-=
READ_MCU_DATA_MAX
;
readSt
=
0
;
}
}
#else
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
WRITE_BACKUP_DATA
,
TestBackupDataOffset
,
READ_MCU_DATA_MAX
,
pData
);
getStRetryCnts
=
1500
;
TestBackupDataOffset
+=
READ_MCU_DATA_MAX
;
pData
+=
READ_MCU_DATA_MAX
;
}
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
0
);
if
(
TestBackupDataOffset
==
tmpRet
)
{
if
(
TestBackupDataOffset
<
TestBackupDataOffsetEnd
)
{
readSt
=
0
;
}
else
{
readSt
=
0
;
}
}
if
(
--
getStRetryCnts
==
0
)
{
TestBackupDataOffset
-=
READ_MCU_DATA_MAX
;
pData
-=
READ_MCU_DATA_MAX
;
readSt
=
0
;
}
void
Check_MCU_Info_in_630H
(
void
)
{
if
(
Check_Upgrade
==
1U
)
{
GetReadInfo
(
GET_APP_DATA_OFFSET
);
Check_MCU_in_Flash
(
GET_APP_DATA_OFFSET
);
}
else
{
Check_Upgrade_Cnt
++
;
if
(
Check_Upgrade_Cnt
>=
2500U
)
/* 放在2ms任务中, 2500 = 5000ms */
{
Check_Upgrade_Cnt
=
0
;
Check_Upgrade
=
1U
;
}
#endif
}
}
/* Test end */
Firmware/Source/Component/Key/Key_user.c
View file @
15a3fb95
#include "Key_user.h"
#include "Components.h"
#include "UDS_ISO14229_Services.h"
__align
(
4
)
...
...
@@ -27,6 +27,8 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择
case
KEY_EVENT_LONG_PRESS_3
:
//5s
break
;
case
KEY_EVENT_LONG_PRESS_4
:
//10s
/* 进入630H升级MCU模式 */
Get_Into_630H_Update_MCU_Mode
();
break
;
case
KEY_EVENT_OFF_TO_ON
:
break
;
...
...
Firmware/Source/Component/Menu/Menu.h
View file @
15a3fb95
Firmware/Source/Component/Menu/Menu_Interface.c
View file @
15a3fb95
Firmware/Source/Component/PowerManagement/PowerManag_user.c
View file @
15a3fb95
...
...
@@ -60,7 +60,7 @@ static void Power_KL30_Init(void)
TimerM_PWM_CH_Output_init
(
TIMERM_COUNTER1
,
TIMERM_CHB
,
ActiveLevel_High
);
g_stRTCInformation
.
u8RTCSecond
=
0
;
g_stRTCInformation
.
u8RTCMinute
=
0
;
g_stRTCInformation
.
u8RTCHour
=
8
;
g_stRTCInformation
.
u8RTCHour
=
0
;
g_stRTCInformation
.
u8RTCDayOfMonth
=
1
;
g_stRTCInformation
.
u8RTCMonth
=
1
;
g_stRTCInformation
.
u8RTCYear
=
20
;
...
...
Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/include/flash.h
View file @
15a3fb95
...
...
@@ -15,10 +15,10 @@ typedef enum
extern
uint32_t
flash_protect_flag
;
int
EraseChip
(
uint32_t
adr
);
int
EraseSector
(
uint32_t
adr
);
int
ProgramPage
(
uint32_t
adr
,
uint32_t
sz
,
uint8_t
*
buf
);
FLASH_STATUS
flash_write
(
uint32_t
adr
,
uint32_t
sz
,
uint8_t
*
buf
);
void
flashRead
(
uint8_t
*
read_address
,
uint16_t
size
,
uint8_t
*
readbuf
);
extern
int
EraseChip
(
uint32_t
adr
);
extern
int
EraseSector
(
uint32_t
adr
);
extern
int
ProgramPage
(
uint32_t
adr
,
uint32_t
sz
,
uint8_t
*
buf
);
extern
FLASH_STATUS
flash_write
(
uint32_t
adr
,
uint32_t
sz
,
uint8_t
*
buf
);
extern
void
flash_read
(
uint32_t
read_address
,
uint16_t
size
,
uint8_t
*
readbuf
);
#endif
Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/src/flash.c
View file @
15a3fb95
...
...
@@ -255,12 +255,11 @@ FLASH_STATUS flash_write(uint32_t adr, uint32_t sz, uint8_t *buf)
return
(
status
);
}
void
flash
Read
(
uint8_t
*
read_address
,
uint16_t
size
,
uint8_t
*
readbuf
)
void
flash
_read
(
uint32_t
read_address
,
uint16_t
size
,
uint8_t
*
readbuf
)
{
uint8_t
*
w_ptr
;
uint32_t
i
;
w_ptr
=
(
uint8_t
*
)
read_address
;
for
(
i
=
0
;
i
<
size
;
i
++
)
{
*
readbuf
=
*
w_ptr
++
;
...
...
Firmware/Source/System/Sys_Task_List.c
View file @
15a3fb95
...
...
@@ -20,6 +20,7 @@ void Sys_2ms_Tasks(void)
Sys_Status_Update_Service
();
Analog_Signal_Conv_Service
();
AMT630H_Main
();
/* Check_MCU_Info_in_630H(); */
DoCAN_Timer_Update
(
2000u
);
//Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发
CanMSg_XMS_Analysis
(
&
CAN_CH0_CanMsgOp
,
2u
);
...
...
@@ -74,14 +75,12 @@ uint32_t aaa = 0;
void
Sys_100ms_Tasks
(
void
)
{
ODOtest
=
Data_ODO_Read
();
Triptest
=
Data_Read_Trip
(
0
);
S3_ServerCNTT
();
Get_DisTime_Service
();
Fuel_Cal_Sevice
(
100u
);
Coolant_Cal_Sevice
(
100u
);
Services_Mileage_Callback
();
//Data_Mileage_Clear();
//
Data_Mileage_Clear();
RTE_GPIO_Config
(
RTE_GPIO_PORT05_PIN04
,
GpioOut_High
);
//BackLight_Process();
...
...
Firmware/Source/UDS/UDS_ISO14229_Services.c
View file @
15a3fb95
This diff is collapsed.
Click to expand it.
Firmware/Source/UDS/UDS_ISO14229_Services.h
View file @
15a3fb95
...
...
@@ -26,15 +26,26 @@
#include "UDS_ISO14229_Server_Config.h"
/******************************************************************************
program version
*******************************************************************************/
#define SWV 0x100 // 0x100 = 1.00 software version 软件版本号
#define HWV 0x100 // 0x100 = 1.00 hardware version 硬件版本号
#define BTV 0x100 // 0x100 = 1.00 bootloader version boot程序版本号
#define internal_version (105UL)
/* 内部版本号 105 -> 1.05 */
#define internal_date (20240805UL)
/* 内部版本日期 20240805 -> 2024.08.05 */
/**
*DFlash
*/
#define NoNeedWait 0x00u
#define NeedWait 0x01u
#define APP_STATUS_ADDR (0x501000)
#define APP_DATA_INFO (0x501400)
#define APP_DATA_WRITE (0x501800)
#define FLASH_APP_STATUS_INFO (0x00501000UL)
/* APP 程序有效性标识地址 */
#define FLASH_SECOND_BOOT_INFO (0x00501400UL)
/* 二级Boot程序状态地址 */
#define FLASH_630H_UPDATE_INFO (0x00501800UL)
/* 630H升级信息 */
#define FLASH_APP_RODATA_INFO (0x00501C00UL)
/* 存储只读DID信息 */
#define FLASH_APP_RWDATA_INFO (0x00502000UL)
/* 存储可写的DID信息 */
#define Data_Flash_Addr_BootValid_OFFSET 0x00000000
#define Data_Flash_Addr_DiagReceive_OFFSET 0x00002000
...
...
@@ -313,41 +324,6 @@
#define CheckSumErr 7 // Checksum Error
#define UnknownPartID 8 // Unknown Part ID
#define SWV 0x100 // 0x100 = 1.00 software version 软件版本号
#define HWV 0x100 // 0x100 = 1.00 hardware version 硬件版本号
#define BTV 0x100 // 0x100 = 1.00 bootloader version boot程序版本号
#define INTLV 0x100 // 0x100 = 1.00 internal version 内部版本号
#define PROG_Y 0x24 // 0x24 = 2024年, program year
#define PROG_M 0x07 // 0x03 = 3月, program month
#define PROG_D 0x16 // 0x19 = 19日, program day
typedef
struct
{
uint32_t
Flag
;
uint8_t
Attemptcnt
;
uint8_t
RequestSeedCnt
;
uint8_t
AttemptIIcnt
;
uint8_t
RequestSeedIICnt
;
}
Ser27_FlowCtrlCntUnion
;
typedef
struct
{
uint32_t
Flag
;
uint8_t
DID_F180
[
6
];
uint8_t
DID_F187
[
16
];
uint8_t
DID_F193
[
6
];
uint8_t
DID_F195
[
6
];
uint8_t
Filldata
[
2
];
}
DiagDFlashData
;
extern
DiagDFlashData
DiagDataForDFlash
;
typedef
struct
{
uint32_t
Flag
;
uint8_t
DID_F184
[
32
];
}
Ser2EDFlashData
;
extern
Ser2EDFlashData
Ser2EDataForDFlash
;
typedef
struct
{
uint32_t
Flag
;
...
...
@@ -365,19 +341,10 @@ typedef struct
void
UDS_Service_10_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_11_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_22_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_2E_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_27_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_28_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_3E_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
UDS_Service_85_Indication
(
uint16_t
A_TA_type
,
uint16_t
A_Length
,
uint8_t
*
A_Data
);
void
S3_ServerCNTT
(
void
);
void
Randomcnt
(
void
);
extern
void
DIAG_InitParameter
(
void
);
void
GetSeed
(
void
);
void
CalculateKey
(
void
);
void
CalculateKeyLv11
(
void
);
typedef
void
(
*
InitFunction
)(
void
);
/***********Local Functin*************/
...
...
@@ -386,13 +353,11 @@ uint8_t SerXXNRC12Filter(uint8_t insub, const uint8_t *supportsub, uint8_t size,
uint8_t
SerXXNRC13Filter
(
uint8_t
type
,
uint8_t
serlength
,
const
uint8_t
*
length
,
uint8_t
index
);
uint8_t
SerXXNRC22Filter
(
void
);
uint8_t
SerXXNRC31DIDFilter
(
uint16_t
inDID
,
const
uint16_t
*
DIDList
,
uint8_t
size
,
uint8_t
*
index
);
uint8_t
SerXXNRC33Filter
(
const
uint8_t
*
levelList
,
uint8_t
index
);
uint8_t
SerXXNRC7EFilter
(
const
uint8_t
*
SubSupportSession
,
uint8_t
index
);
uint8_t
SerXXNRC7FFilter
(
uint8_t
SupportSession
);
extern
void
Data_Set_DiagPara
(
void
);
void
Write_App_InValid
(
uint32_t
m32
);
void
Data_Read_DiagPara
(
void
);
void
DFlash_init
(
void
);
void
Data_Read_DiagPara
(
void
);
extern
void
Get_Into_630H_Update_MCU_Mode
(
void
);
extern
void
Check_MCU_Info_in_630H
(
void
);
#endif
Firmware/utility/Boot_Release/Boot程序版本更新说明.txt
View file @
15a3fb95
# 2024.08.16 (2)
中微厂家提供了新的cgc.c文件
内部版本信息更新(1.03_20240816)
# 2024.08.16
修复一级Boot计算Flash Block错误的问题
添加630H升级MCU APP的能力
内部版本号更新(1.02_20240816)
# 2024.08.08
修复一级Boot失效的问题
项目信息统一
...
...
Firmware/utility/Boot_Release/HaoJin_750TFT_HJYB-7500TFT_BV1.02_20240816.hex
0 → 100644
View file @
15a3fb95
This diff is collapsed.
Click to expand it.
Firmware/utility/Boot_Release/HaoJin_750TFT_HJYB-7500TFT_BV1.03_20240816.hex
0 → 100644
View file @
15a3fb95
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment