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
Hide 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
...
...
@@ -27,4 +27,4 @@ void BackLight_Process(void);
#endif
\ No newline at end of file
#endif
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
;
}
}
}
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
...
...
@@ -39,4 +39,4 @@ void AMT630H_Main(void);
unsigned
char
AMT630H_isInitFinish
(
void
);
extern
uint32_t
Amt630hInitTimerCnts
;
#endif
\ No newline at end of file
#endif
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
)
{
/*外部接收小时和分钟*/
SetPagePic
(
GRAPHICS_PAGE_0
,
Pic_0634_916_503
);
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
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
)
void
GetReadInfo
(
READ_ARK630_CMD
type
)
{
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
)
{
uint32_t
tmpLen
;
static
uint8_t
readSt
=
0
;
static
uint16_t
getStRetryCnts
=
0
;
if
(
TestDataLen
==
0
)
{
if
(
readSt
==
0
)
{
uint32_t
tmpRet
;
if
(
NeedWriteSize
==
0
)
{
if
(
readSt
==
0
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
GET_APP_DATA_OFFSET
,
0
,
0
,
0
);
ProcMcuOrBackupData
(
type
,
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
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
REQ_DATA
,
ReadOffset
,
READ_MCU_DATA_MAX
,
TestReadBuf
);
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
++
;
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按相对地址获取数据 */
}
getStRetryCnts
=
500
;
TestDataLen
=
0
;
TestDataCrC
=
0
;
readSt
=
0
;
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
)
{
readSt
=
1
;
ProcMcuOrBackupData
(
GET_BACKUP_DATA_OFFSET
,
0
,
0
,
NULL
);
getStRetryCnts
=
500
;
}
else
{
tmpRet
=
ProcMcuOrBackupData
(
GET_STATUS
,
0
,
0
,
NULL
);
if
((
tmpRet
!=
2
)
||
(
--
getStRetryCnts
==
0
))
{
if
(
tmpRet
!=
2
)
{
TestBackupDataOffset
=
tmpRet
;
TestBackupDataOffsetEnd
=
TestBackupDataOffset
+
TestBackupDataLen
;
}
readSt
=
0
;
}
}
}
else
if
(
TestBackupDataCrc
==
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_CRC
,
TestBackupDataOffset
,
TestBackupDataLen
,
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
)
{
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
{
readSt
=
0
;
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
;
}
}
}
}
if
(
--
getStRetryCnts
==
0
)
{
TestBackupDataOffset
-=
READ_MCU_DATA_MAX
;
if
(
--
getStRetryCnts
==
0
)
{
/* 读信息超时, 重置状态 */
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
;
...
...
@@ -330,7 +332,7 @@ void Get_DisTime_Service(void)
{
RTE_RTC_Get_CounterValue
(
&
counter_val
);
counter_val
.
time
.
RTC_Hours
=
RTC_Bcd2ToByte
(
counter_val
.
time
.
RTC_Hours
);
counter_val
.
time
.
RTC_Minutes
=
RTC_Bcd2ToByte
(
counter_val
.
time
.
RTC_Minutes
);
counter_val
.
time
.
RTC_Minutes
=
RTC_Bcd2ToByte
(
counter_val
.
time
.
RTC_Minutes
);
}
}
...
...
Firmware/Source/Component/Menu/Menu.h
View file @
15a3fb95
...
...
@@ -426,4 +426,4 @@ void Menu_User_WAKEUP(void);
/*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/
#endif
\ No newline at end of file
#endif
Firmware/Source/Component/Menu/Menu_Interface.c
View file @
15a3fb95
...
...
@@ -395,7 +395,7 @@ void Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType)
if
(
MENU_KEY_CONFIRM_SHORT
==
enKeyType
)
{
counter_val
.
time
.
RTC_Hours
=
(
MenuData
.
Dis_Hour_Tenb
*
10
+
MenuData
.
Dis_Hour_Bit
);
counter_val
.
time
.
RTC_Minutes
=
(
MenuData
.
Dis_Minute_Tenb
*
10
+
MenuData
.
Dis_Minute_Bit
);
counter_val
.
time
.
RTC_Minutes
=
(
MenuData
.
Dis_Minute_Tenb
*
10
+
MenuData
.
Dis_Minute_Bit
);
RTC_SetTime
(
&
counter_val
.
time
);
}
}
...
...
@@ -457,7 +457,7 @@ void Menu_Logic_Operation_Clock_Min_Bit_Set(Menu_Key_en_t enKeyType)
if
(
MENU_KEY_CONFIRM_SHORT
==
enKeyType
)
{
counter_val
.
time
.
RTC_Hours
=
(
MenuData
.
Dis_Hour_Tenb
*
10
+
MenuData
.
Dis_Hour_Bit
);
counter_val
.
time
.
RTC_Minutes
=
(
MenuData
.
Dis_Minute_Tenb
*
10
+
MenuData
.
Dis_Minute_Bit
);
counter_val
.
time
.
RTC_Minutes
=
(
MenuData
.
Dis_Minute_Tenb
*
10
+
MenuData
.
Dis_Minute_Bit
);
RTC_SetTime
(
&
counter_val
.
time
);
}
}
...
...
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,16 +255,15 @@ 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
++
;
readbuf
++
;
readbuf
++
;
}
}
...
...
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