Commit aea302d5 authored by 张金硕's avatar 张金硕

Merge branch 'dev' of http://tyw-server.synology.me:12345/shihao/haojin750tft into jinshuo

parents a955523e 29a6dbbd
...@@ -979,9 +979,9 @@ ...@@ -979,9 +979,9 @@
<FilePath>..\..\..\..\Source\Component\AMT630H\PicBin.h</FilePath> <FilePath>..\..\..\..\Source\Component\AMT630H\PicBin.h</FilePath>
</File> </File>
<File> <File>
<FileName>LQ_GR250_S1.0.3.lib</FileName> <FileName>UartProtocol_V1.32_BAT32A239.lib</FileName>
<FileType>4</FileType> <FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\LQ_GR250_S1.0.3.lib</FilePath> <FilePath>..\..\..\..\Source\Component\AMT630H\UartProtocol_V1.32_BAT32A239.lib</FilePath>
</File> </File>
<File> <File>
<FileName>UartProtocol.h</FileName> <FileName>UartProtocol.h</FileName>
......
...@@ -12,8 +12,8 @@ LR_IROM1 0x00000000 0x00073C00 { ; load region size_region ...@@ -12,8 +12,8 @@ LR_IROM1 0x00000000 0x00073C00 { ; load region size_region
RW_IRAM1 0x20000000 0x0000FF00 { ; RW data RW_IRAM1 0x20000000 0x0000FF00 { ; RW data
.ANY (+RW +ZI) .ANY (+RW +ZI)
} }
RW_IRAM2 0x2000FF00 0x00000100 { RW_IRAM2 0x2000FF00 0x00000100 { ; RW data
.ANY (+RW +ZI) .ANY (RW_FUNC_PLL)
} }
} }
#include "Backlight.h" #include "Backlight.h"
#include "Components.h" #include "Components.h"
#define BACK_LIGHT_Val_1 100
#define BACK_LIGHT_Val_2 300
#define BACK_LIGHT_Val_3 500
#define BACK_LIGHT_Val_4 700
#define BACK_LIGHT_Val_5 900
#define LIGHT_DATA_TIME 10u /*这里填写多长时间采集一个数据,单位ms*/
#define LIGHT_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define LIGHT_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define LIGHT_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
Light_uint8_t LightADCompleteFlg = 0u;
Light_uint16_t LightR = 0u;
Light_uint16_t LightR_Status = 0;
Light_uint16_t LightR_Status_Count = 0u;
Light_uint16_t NtcDataCount;
Light_uint16_t NtcData[LIGHT_DATA_NUM];
typedef struct typedef struct
{ {
Light_uint16_t Temperature; /* 温度 */ Light_uint16_t Temperature; /* 温度 */
...@@ -14,7 +30,7 @@ typedef struct ...@@ -14,7 +30,7 @@ typedef struct
} _st_BacklightLevel; } _st_BacklightLevel;
#define Backlight_Max 10 #define Backlight_Max 10
#define BacklightLevel_Max 10 #define BacklightLevel_Max 5
_st_Backlight BacklightTable[Backlight_Max] = _st_Backlight BacklightTable[Backlight_Max] =
{ {
/*温度 阻值 */ /*温度 阻值 */
...@@ -34,13 +50,130 @@ _st_BacklightLevel BacklightLevelTable[BacklightLevel_Max] = ...@@ -34,13 +50,130 @@ _st_BacklightLevel BacklightLevelTable[BacklightLevel_Max] =
/*背光等级 背光占空比 */ /*背光等级 背光占空比 */
{1, 100}, {1, 100},
{2, 200}, {2, 200},
{3, 300}, {3, 400},
{4, 400}, {4, 600},
{5, 500}, {5, 800},
}; };
void Data_Light_Res_service(Light_uint8_t deltaTime)//获取光感阻值,并做平均
{
uint16_t LightRes = 0;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
if (timeCount >= LIGHT_DATA_TIME)
{
timeCount = 0;
if (NtcDataCount < LIGHT_DATA_NUM)
{
/*获取光敏电阻*/
LightRes = ADC_Read_Signal(ADC_CH_LIGHT_SENSITIVE); // ADC_Read_Signal(ADC_CH_FUEL1);
/*四舍五入*/
if (LightRes < 32000)
{
if (LightRes % 10 >= 5)
{
LightRes += 5;
}
}
else
{
LightRes = 32000;
}
/*由小到大插入数据*/
for (i = 0; i < NtcDataCount; i++)
{
if (LightRes < NtcData[i])
{
break;
}
}
for (j = NtcDataCount; j > i; j--)
{
NtcData[j] = NtcData[j - 1];
}
NtcData[i] = LightRes;
NtcDataCount++;
}
else
{
/*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0;
for (i = LIGHT_CAL_START; i < LIGHT_CAL_END; i++)
{
temp32 += NtcData[i];
}
LightR = (uint16_t) (temp32 / (LIGHT_CAL_END - LIGHT_CAL_START));
NtcDataCount = 0;
LightADCompleteFlg = 1;
}
}
timeCount += deltaTime;
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
{
if(LightADCompleteFlg)
{
if(LightR <= 800)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 0;
}
}
else if(LightR > 800)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 1;
}
}
if(LightR_Status == 0)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 200);
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 800);
}
}
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
if(Backlight_SetPwmLevel() == 1U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 100);
}
else if(Backlight_SetPwmLevel() == 2U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 200);
}
else if(Backlight_SetPwmLevel() == 3U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 400);
}
else if(Backlight_SetPwmLevel() == 4U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 600);
}
else if(Backlight_SetPwmLevel() == 5U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 800);
}
}
else
{
BackLight_Process();
}
}
Light_uint16_t GetBacklightDutyByLevel(Light_uint16_t level) Light_uint16_t GetBacklightDutyByLevel(Light_uint16_t level)
...@@ -98,8 +231,29 @@ Light_uint8_t Backlight_SetPwmEn(void) ...@@ -98,8 +231,29 @@ Light_uint8_t Backlight_SetPwmEn(void)
/* 背光等级回调函数 */ /* 背光等级回调函数 */
Light_uint8_t Backlight_SetPwmLevel(void) Light_uint8_t Backlight_SetPwmLevel(void)
{ {
Light_uint8_t Backlight_PwmLevel;
return 1; if(LightR > 0 && LightR <= 400)
{
Backlight_PwmLevel = 1U;
}
else if(LightR > 400 && LightR <= 800)
{
Backlight_PwmLevel = 2U;
}
else if(LightR > 800 && LightR <= 1400)
{
Backlight_PwmLevel = 3U;
}
else if(LightR > 1400 && LightR <= 2000)
{
Backlight_PwmLevel = 4U;
}
else if(LightR > 2000 && LightR <= 2600)
{
Backlight_PwmLevel = 5U;
}
return Backlight_PwmLevel;
} }
/* 获取电阻值回调函数 */ /* 获取电阻值回调函数 */
...@@ -377,4 +531,32 @@ void BackLight_Service(void) ...@@ -377,4 +531,32 @@ void BackLight_Service(void)
{ {
Backlight_Operate.SetPwmCbk(0); Backlight_Operate.SetPwmCbk(0);
} }
} }
\ No newline at end of file
void BackLight_Process(void)
{
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_5) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_5);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_4) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_4);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_3) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_3);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_2) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_2);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_1) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_1);
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_4);
}
}
...@@ -21,10 +21,12 @@ ...@@ -21,10 +21,12 @@
#define Backlight_NULL ( void * )0u #define Backlight_NULL ( void * )0u
#endif /* NULL */ #endif /* NULL */
extern Light_uint16_t LightR_Status ;
void Backlight_KL30_Wakeup_Init(void); void Backlight_KL30_Wakeup_Init(void);
void BackLight_Process(void);
Light_uint8_t Backlight_SetPwmLevel(void);
#endif
#endif
\ No newline at end of file
...@@ -15,7 +15,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = ...@@ -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}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul, 500ul,
0x101ul, 0x101ul,
(( void * )0), (( void * )0),
(( void * )0), (( void * )0),
...@@ -75,7 +75,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = ...@@ -75,7 +75,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}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul, 500ul,
0x37Bul, 0x37Bul,
(( void * )0), (( void * )0),
(( void * )0), (( void * )0),
......
...@@ -288,27 +288,27 @@ void Data_Engine_Speed_Processing_Service ( void ) ...@@ -288,27 +288,27 @@ void Data_Engine_Speed_Processing_Service ( void )
} }
} }
} }
DataESpeedDisp = DataESPeedDamping.Speed;
//第4步 增加回差 // //第4步 增加回差
if (DataESpeedDisp <= 80) // if (DataESpeedDisp <= 80)
{ // {
DataESpeedDisp = DataESPeedDamping.Speed; // DataESpeedDisp = DataESPeedDamping.Speed;
} // }
else // else
{ // {
if ( DataESpeedDisp < DataESPeedDamping.Speed ) // if ( DataESpeedDisp < DataESPeedDamping.Speed )
{ // {
DataESpeedDisp = DataESPeedDamping.Speed; // DataESpeedDisp = DataESPeedDamping.Speed;
} // }
else // else
{ // {
Delta = DataESpeedDisp - DataESPeedDamping.Speed; // Delta = DataESpeedDisp - DataESPeedDamping.Speed;
if ( Delta >= DATA_ESPEED_HYSTERESIS ) // if ( Delta >= DATA_ESPEED_HYSTERESIS )
{ // {
DataESpeedDisp = DataESPeedDamping.Speed; // DataESpeedDisp = DataESPeedDamping.Speed;
} // }
} // }
} // }
} }
uint8_t Get_EngineValid(void) uint8_t Get_EngineValid(void)
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值 #define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值
#define DATA_ENGINE_STOP_THRESHOLD 300 //发动机停止阈值 #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_INC_STEP 10 //速度增加时慢加速速度变化步长
#define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长 #define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长
#define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度 #define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度
......
...@@ -321,17 +321,7 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -321,17 +321,7 @@ void Data_Vehicle_Speed_Processing_Service(void)
} }
// 第3步:生成显示车速 // 第3步:生成显示车速
if ( (DataVSPeedDamping.Speed >= DataVSpeedHysteresis) || (DataVSPeedDamping.Speed < DATA_VSPEED_HYSTERESIS) ) DataVSpeedHysteresis = DataVSPeedDamping.Speed;
{
DataVSpeedHysteresis = DataVSPeedDamping.Speed;
}
else
{
if ( DataVSpeedHysteresis - DataVSPeedDamping.Speed >= DATA_VSPEED_HYSTERESIS )
{
DataVSpeedHysteresis = DataVSPeedDamping.Speed;
}
}
VSpeedCal = ( uint32_t )DataVSpeedHysteresis; VSpeedCal = ( uint32_t )DataVSpeedHysteresis;
...@@ -339,10 +329,10 @@ void Data_Vehicle_Speed_Processing_Service(void) ...@@ -339,10 +329,10 @@ void Data_Vehicle_Speed_Processing_Service(void)
{ {
VSpeedCal *= 105; VSpeedCal *= 105;
VSpeedCal /= 100; VSpeedCal /= 100;
if((VSpeedCal % 10) >= 5) // if((VSpeedCal % 10) >= 5)
{ // {
VSpeedCal += 5; /* 四舍五入 */ // VSpeedCal += 5; /* 四舍五入 */
} // }
DataVSpeedDisp = ( uint16_t )VSpeedCal; DataVSpeedDisp = ( uint16_t )VSpeedCal;
} }
else else
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#define DATA_VEHICLE_RUNNING_THRESHOLD 25 //汽车行进阈值 #define DATA_VEHICLE_RUNNING_THRESHOLD 25 //汽车行进阈值
#define DATA_VEHICLE_STOP_THRESHOLD 20 //汽车停止阈值 #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_INC_STEP 2 //速度增加时慢加速速度变化步长
#define DATA_VSPEED_DEC_STEP 6 //方向改变时急减速速度变化步长 #define DATA_VSPEED_DEC_STEP 6 //方向改变时急减速速度变化步长
#define DATA_VSPEED_APPR_SPEED_MIN 2 //最小逼近速度 #define DATA_VSPEED_APPR_SPEED_MIN 2 //最小逼近速度
......
...@@ -20,7 +20,7 @@ void Gpio_Init(_GpioUser_Enum InitMode) ...@@ -20,7 +20,7 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT00_PIN05, GpioOut_Low); //L_BiasBitSW 里程百位--- RTE_GPIO_Config(RTE_GPIO_PORT00_PIN05, GpioOut_Low); //L_BiasBitSW 里程百位---
RTE_GPIO_Config(RTE_GPIO_PORT00_PIN06, GpioOut_Low); //L_BiasBitSW 里程千位--- RTE_GPIO_Config(RTE_GPIO_PORT00_PIN06, GpioOut_Low); //L_BiasBitSW 里程千位---
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN00, RTE_GPIO_DIR_OUT); //表盘背光-PWM RTE_GPIO_Config(RTE_GPIO_PORT01_PIN00, GpioOut_Low); //表盘背光-PWM
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN01, GpioOut_Low); //RXD-ESP-IN-MCU RTE_GPIO_Config(RTE_GPIO_PORT01_PIN01, GpioOut_Low); //RXD-ESP-IN-MCU
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_Low); //TXD-ESP-IN-MCU RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_Low); //TXD-ESP-IN-MCU
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, RTE_GPIO_DIR_IN);
...@@ -80,7 +80,7 @@ void Gpio_Init(_GpioUser_Enum InitMode) ...@@ -80,7 +80,7 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT14_PIN00, GpioOut_Low); //L_BD433Ctrl_OUT RTE_GPIO_Config(RTE_GPIO_PORT14_PIN00, GpioOut_Low); //L_BD433Ctrl_OUT
RTE_GPIO_Config(RTE_GPIO_PORT14_PIN01, RTE_GPIO_DIR_IN); //L_BiasBitSW_燃油_OUT--- RTE_GPIO_Config(RTE_GPIO_PORT14_PIN01, RTE_GPIO_DIR_IN); //L_BiasBitSW_燃油_OUT---
RTE_GPIO_Config(RTE_GPIO_PORT14_PIN06, GpioOut_Low); RTE_GPIO_Config(RTE_GPIO_PORT14_PIN06, GpioOut_Low);
RTE_GPIO_Config(RTE_GPIO_PORT14_PIN07, GpioOut_Low); RTE_GPIO_Config(RTE_GPIO_PORT14_PIN07, RTE_GPIO_DIR_IN);
} }
else else
{ {
......
...@@ -37,6 +37,9 @@ s_AMT630H_FlashCheck_t AMT630H_FlashCheck; ...@@ -37,6 +37,9 @@ s_AMT630H_FlashCheck_t AMT630H_FlashCheck;
unsigned long Delay_Time = 0; unsigned long Delay_Time = 0;
unsigned long Delay_Time_Set = 0; unsigned long Delay_Time_Set = 0;
extern uint32_t Check_Upgrade;
extern uint32_t Check_Upgrade_Cnt;
/* Refresh Time */ /* Refresh Time */
unsigned long AMT630H_RefreshTime = 0; unsigned long AMT630H_RefreshTime = 0;
static uint8_t AMT630H_Animation_Start = 0; static uint8_t AMT630H_Animation_Start = 0;
...@@ -306,6 +309,8 @@ void Amt630hInit(void) ...@@ -306,6 +309,8 @@ void Amt630hInit(void)
AMT630H_FlashCheck.InquireTime = 0; AMT630H_FlashCheck.InquireTime = 0;
AMT630H_FlashCheck.CheckStateTime = 0; AMT630H_FlashCheck.CheckStateTime = 0;
AMT630H_FlashCheck.Result = 0; AMT630H_FlashCheck.Result = 0;
Check_Upgrade = 0;
Check_Upgrade_Cnt = 0;
} }
void AMT630H_Sleep(void) void AMT630H_Sleep(void)
{ {
......
...@@ -18,7 +18,7 @@ typedef struct ...@@ -18,7 +18,7 @@ typedef struct
uint8_t Result; uint8_t Result;
}s_AMT630H_FlashCheck_t; }s_AMT630H_FlashCheck_t;
#define AMT630H_REFRESH_TIME 25U #define AMT630H_REFRESH_TIME 50U
#define AMT630H_ANIMATION_TIME 3000U //ms #define AMT630H_ANIMATION_TIME 3000U //ms
#define AMT630H_ANIMATION_PIC_NUM 110U #define AMT630H_ANIMATION_PIC_NUM 110U
...@@ -39,4 +39,4 @@ void AMT630H_Main(void); ...@@ -39,4 +39,4 @@ void AMT630H_Main(void);
unsigned char AMT630H_isInitFinish(void); unsigned char AMT630H_isInitFinish(void);
extern uint32_t Amt630hInitTimerCnts ; extern uint32_t Amt630hInitTimerCnts ;
#endif #endif
\ No newline at end of file
...@@ -52,7 +52,7 @@ typedef enum ...@@ -52,7 +52,7 @@ typedef enum
extern void AMT630H_GUI_DisplayProc(void); extern void AMT630H_GUI_DisplayProc(void);
extern void AMT630H_GUI_Background(void); extern void AMT630H_GUI_Background(void);
extern uint8_t GET_Backlight(void);
......
#include <string.h>
#include "UartProtocol.h" #include "UartProtocol.h"
#include "PicBin.h" #include "PicBin.h"
#include <stdint.h> #include <stdint.h>
#include "UDS_ISO14229_Services.h"
#include "flash.h"
#define NULL 0 #define NULL 0
extern uint8_t UartRevBuff[0x1000]; extern uint8_t UartRevBuff[0x1000];
extern uint32_t UartRevCnts; extern uint32_t UartRevCnts;
uint8_t *GetUartRecvData(uint32_t *UartRecvBufLen, uint32_t *UartRecvPos) uint8_t *GetUartRecvData(uint32_t *UartRecvBufLen, uint32_t *UartRecvPos)
{ {
*UartRecvBufLen = 0x1000; *UartRecvBufLen = 0x1000;
...@@ -72,7 +77,7 @@ void DisplayNum(uint8_t page, DISPLAY_NUM_ST *pNumData, int32_t NumVal) ...@@ -72,7 +77,7 @@ void DisplayNum(uint8_t page, DISPLAY_NUM_ST *pNumData, int32_t NumVal)
} }
/***************** Read 630 ************************/ /***************** Read 630 ************************/
#define READ_MCU_DATA_MAX 0x800 #define READ_MCU_DATA_MAX 0x40
enum { enum {
READ630_IDLE, READ630_IDLE,
READ630_WAITING_RESP, READ630_WAITING_RESP,
...@@ -82,6 +87,13 @@ enum { ...@@ -82,6 +87,13 @@ enum {
READ630_RECV_BACKUP_DATA_CRC, 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 uint8_t Read630State = READ630_IDLE;
static uint32_t ReqDataBufAddr = 0; static uint32_t ReqDataBufAddr = 0;
static uint32_t ReqDataLen = 0; static uint32_t ReqDataLen = 0;
...@@ -171,177 +183,111 @@ void SetRecvDataSt(RECV_MCU_DATA_TYPE type, uint32_t addr, uint32_t len, uint32_ ...@@ -171,177 +183,111 @@ void SetRecvDataSt(RECV_MCU_DATA_TYPE type, uint32_t addr, uint32_t len, uint32_
} }
/***************** Read 630 end ************************/ /***************** Read 630 end ************************/
/* Test */ void GetReadInfo(READ_ARK630_CMD type)
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)
{
uint32_t tmpLen;
static uint8_t readSt = 0; static uint8_t readSt = 0;
static uint16_t getStRetryCnts = 0; static uint16_t getStRetryCnts = 0;
if (TestDataLen == 0) { uint32_t tmpRet;
if (readSt == 0) {
if (NeedWriteSize == 0)
{
if (readSt == 0)
{
readSt = 1; readSt = 1;
ProcMcuOrBackupData(GET_APP_DATA_OFFSET, 0, 0, 0); ProcMcuOrBackupData(type, 0, 0, 0); /* 获取偏移地址 */
getStRetryCnts = 500; 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 { else
if (readSt == 0) { {
readSt = 1; tmpRet = ProcMcuOrBackupData(GET_STATUS, 0, 0, 0);
ProcMcuOrBackupData(REQ_DATA, ReadOffset, READ_MCU_DATA_MAX, TestReadBuf); if ((tmpRet != 2) || (--getStRetryCnts == 0)) /* 非零值为获得的程序地址 */
getStRetryCnts = 500; {
ReadOffset += READ_MCU_DATA_MAX; if (tmpRet != 2)
} else { {
tmpLen = ProcMcuOrBackupData(GET_STATUS, 0, 0, 0); NeedWriteSize = 32; /* 此时的NeedWriteSize不重要, 只要跳出循环就行 */
if (ReadOffset == tmpLen) { if (type == GET_APP_DATA_OFFSET)
if (ReadOffset < TestDataLen) { {
CalcCrcVal = CalcCrc32(TestReadBuf, READ_MCU_DATA_MAX, CalcCrcVal); FactOffset = 0; /* USB按相对地址获取数据 */
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; AppOffset = 0x00;
TestDataLen = 0;
TestDataCrC = 0;
readSt = 0;
} }
}
if (--getStRetryCnts == 0) {
ReadOffset -= READ_MCU_DATA_MAX;
readSt = 0; readSt = 0;
} }
} }
} }
} }
/* Test end */
/* Test */ /**
static uint32_t TestBackupDataLen = 0; * @brief 检查Flash中的MCU程序信息, 是否与当前运行的MCU_APP信息相同, 若不同, 则进入升级模式
static uint32_t TestBackupDataOffset = 0; */
static uint32_t TestBackupDataOffsetEnd = 0; void Check_MCU_in_Flash(READ_ARK630_CMD type)
static uint32_t TestBackupDataCrc = 0;
static uint8_t *pData = (uint8_t*)0x40400;
void TestWrite630Backup(void)
{ {
static int readstep = 0;
uint32_t tmpRet;
static uint8_t readSt = 0; static uint8_t readSt = 0;
static uint16_t getStRetryCnts = 0; static uint16_t getStRetryCnts = 0;
TestBackupDataLen = 0x100000; uint32_t tmpLen;
if (TestBackupDataOffset == 0) { uint8_t saveVersion[16];
if (readSt == 0) { uint8_t readVersion[16];
readSt = 1;
ProcMcuOrBackupData(GET_BACKUP_DATA_OFFSET, 0, 0, NULL); if (NeedWriteSize != 0)
getStRetryCnts = 500; {
} else { if (readSt == 0)
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) {
readSt = 1; 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; getStRetryCnts = 500;
} else {
tmpRet = ProcMcuOrBackupData(GET_STATUS, 0, 0, NULL);
if ((tmpRet != 2) || (--getStRetryCnts == 0)) {
if (tmpRet != 2) {
TestBackupDataCrc = tmpRet;
}
readSt = 0;
}
} }
} else { else
#if 1 {
if (readSt == 0) { tmpLen = ProcMcuOrBackupData(GET_STATUS, 0, 0, 0); /* 获取读取状态 */
readSt = 1; if (FactOffset + READ_MCU_DATA_MAX == tmpLen) /* 当返回值为目标位置时为数据获取成功 */
ProcMcuOrBackupData(REQ_DATA, TestBackupDataOffset, READ_MCU_DATA_MAX, TestReadBuf); {
getStRetryCnts = 500; if (AppOffset == 0) /* 首个数据块内解析文件信息 */
TestBackupDataOffset += READ_MCU_DATA_MAX; {
} else { if (type == GET_APP_DATA_OFFSET) /* 从 MCU_APP 升级文件 */
tmpRet = ProcMcuOrBackupData(GET_STATUS, 0, 0, 0); {
if (TestBackupDataOffset == tmpRet) { flash_read(FLASH_630H_UPDATE_INFO, sizeof(saveVersion), saveVersion); /* 读取630H升级记录 */
if (TestBackupDataOffset < TestBackupDataOffsetEnd) {
readSt = 0; memcpy(readVersion, &ReadDataBuf[16], 16); /* 630中读出的版本信息 */
} else { if (memcmp(readVersion, saveVersion, 16) != 0) /* 对比版本不同才更新 */
readSt = 0; {
Get_Into_630H_Update_MCU_Mode();
}
else
{
/* 信息相同, 重置状态 */
NeedWriteSize = 0;
Check_Upgrade = 0;
readSt = 0;
}
}
} }
} }
if (--getStRetryCnts == 0) { if (--getStRetryCnts == 0)
TestBackupDataOffset -= READ_MCU_DATA_MAX; {
/* 读信息超时, 重置状态 */
readSt = 0; readSt = 0;
} }
} }
#else }
if (readSt == 0) { }
readSt = 1;
ProcMcuOrBackupData(WRITE_BACKUP_DATA, TestBackupDataOffset, READ_MCU_DATA_MAX, pData); void Check_MCU_Info_in_630H(void)
getStRetryCnts = 1500; {
TestBackupDataOffset += READ_MCU_DATA_MAX;
pData += READ_MCU_DATA_MAX; if(Check_Upgrade == 1U)
} else { {
tmpRet = ProcMcuOrBackupData(GET_STATUS, 0, 0, 0); GetReadInfo(GET_APP_DATA_OFFSET);
if (TestBackupDataOffset == tmpRet) { Check_MCU_in_Flash(GET_APP_DATA_OFFSET);
if (TestBackupDataOffset < TestBackupDataOffsetEnd) { }
readSt = 0; else
} else { {
readSt = 0; Check_Upgrade_Cnt++;
} if(Check_Upgrade_Cnt >= 2500U) /* 放在2ms任务中, 2500 = 5000ms */
} {
if (--getStRetryCnts == 0) { Check_Upgrade_Cnt = 0;
TestBackupDataOffset -= READ_MCU_DATA_MAX; Check_Upgrade = 1U;
pData -= READ_MCU_DATA_MAX;
readSt = 0;
}
} }
#endif
} }
} }
/* Test end */
...@@ -117,7 +117,7 @@ static const uint16_t PicIndexData[] = { ...@@ -117,7 +117,7 @@ static const uint16_t PicIndexData[] = {
Pic_0901, 12, 653, 164, Pic_0901, 12, 667, 164, Pic_0902, 13, 638, 293, Pic_0903, 15, 637, 293, Pic_0904, 15, 637, 293, Pic_0905, 21, 634, 293, Pic_0906, 15, 637, 293, Pic_0907, 14, 637, 293, Pic_0908, 15, 637, 293, Pic_0909, 13, 638, 292, Pic_0901, 12, 653, 164, Pic_0901, 12, 667, 164, Pic_0902, 13, 638, 293, Pic_0903, 15, 637, 293, Pic_0904, 15, 637, 293, Pic_0905, 21, 634, 293, Pic_0906, 15, 637, 293, Pic_0907, 14, 637, 293, Pic_0908, 15, 637, 293, Pic_0909, 13, 638, 292,
Pic_0910, 13, 639, 293, Pic_0911, 17, 636, 292, Pic_0912, 13, 639, 293, Pic_0913, 17, 636, 292, Pic_0914, 13, 638, 293, Pic_0915, 16, 636, 293, Pic_0916, 11, 640, 293, Pic_0917, 14, 639, 293, Pic_0899, 11, 638, 293, Pic_0918, 3, 643, 293, Pic_0910, 13, 639, 293, Pic_0911, 17, 636, 292, Pic_0912, 13, 639, 293, Pic_0913, 17, 636, 292, Pic_0914, 13, 638, 293, Pic_0915, 16, 636, 293, Pic_0916, 11, 640, 293, Pic_0917, 14, 639, 293, Pic_0899, 11, 638, 293, Pic_0918, 3, 643, 293,
Pic_0898, 14, 637, 293, Pic_0897, 15, 637, 292, Pic_0919, 11, 640, 293, Pic_0920, 12, 639, 293, Pic_0921, 14, 638, 293, Pic_0922, 14, 638, 292, Pic_0923, 14, 638, 293, Pic_0924, 15, 637, 293, Pic_0925, 221, 501, 160, Pic_0926, 50, 619, 240, Pic_0898, 14, 637, 293, Pic_0897, 15, 637, 292, Pic_0919, 11, 640, 293, Pic_0920, 12, 639, 293, Pic_0921, 14, 638, 293, Pic_0922, 14, 638, 292, Pic_0923, 14, 638, 293, Pic_0924, 15, 637, 293, Pic_0925, 221, 501, 160, Pic_0926, 50, 619, 240,
Pic_0926, 50, 619, 175, Pic_0927, 50, 619, 240, Pic_0927, 50, 619, 175, Pic_0926, 50, 619, 175, Pic_0927, 50, 619, 240, Pic_0927, 50, 619, 175, Pic_0928, 75, 894, 310, Pic_0929, 75, 894, 310,
}; };
#define PicIndexData_LEN 14888 #define PicIndexData_LEN 14888
//uint32_t PicIndexDataLEN = 0; //uint32_t PicIndexDataLEN = 0;
......
#ifndef PICBIN_H #ifndef PICBIN_H
#define PICBIN_H #define PICBIN_H
/* Flash Bin Version:20240813 2024-08-13 15:00:38 Compression ratio:70.00% */ /* Flash Bin Version:20240817 2024-08-17 11:18:35 Compression ratio:70.00% */
#define Pic_0001 1 #define Pic_0001 1
#define Pic_0002 2 #define Pic_0002 2
#define Pic_0003 3 #define Pic_0003 3
...@@ -929,6 +929,8 @@ ...@@ -929,6 +929,8 @@
#define Pic_0925 925 #define Pic_0925 925
#define Pic_0926 926 #define Pic_0926 926
#define Pic_0927 927 #define Pic_0927 927
#define Pic_0928 928
#define Pic_0929 929
enum { enum {
Pic_0001_0_0 = 0, Pic_0001_0_0 = 0,
...@@ -2099,9 +2101,11 @@ enum { ...@@ -2099,9 +2101,11 @@ enum {
Pic_0926_619_175, Pic_0926_619_175,
Pic_0927_619_240, Pic_0927_619_240,
Pic_0927_619_175, Pic_0927_619_175,
Pic_0928_894_310,
Pic_0929_894_310,
}; };
#define PIC_INDEX_DATA_CRC 0xB27A777D #define PIC_INDEX_DATA_CRC 0xDE5B7F88
extern void User_PicIndexDataInit(void); extern void User_PicIndexDataInit(void);
#endif #endif
...@@ -74,7 +74,7 @@ ADC_Data_st_t stADCData[ADC_SIGNAL_CH_NUMBER]; ...@@ -74,7 +74,7 @@ ADC_Data_st_t stADCData[ADC_SIGNAL_CH_NUMBER];
const uint8_t __attribute__((aligned(4))) u8ADCChList[ADC_CONV_CH_NUMBER] = const uint8_t __attribute__((aligned(4))) u8ADCChList[ADC_CONV_CH_NUMBER] =
{ {
2U, 3U, 7U, 5U, 6U, 2U, 3U, 7U, 5U, 6U, 4U, 12U,
}; };
const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBER] = const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBER] =
...@@ -84,6 +84,9 @@ const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBE ...@@ -84,6 +84,9 @@ const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBE
{ 2U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,}, { 2U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 3U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,}, { 3U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 4U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,}, { 4U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 5U, 3U, 0U, 5000U, 0U, 10U, ADC_Res_Calc_Circuit201,},
{ 6U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
}; };
const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_NUMBER] = const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_NUMBER] =
...@@ -93,6 +96,8 @@ const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_N ...@@ -93,6 +96,8 @@ const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_N
{ 0U, 0U, 0U, 0U,}, { 0U, 0U, 0U, 0U,},
{ 0U, 0U, 500U, 300U,}, { 0U, 0U, 500U, 300U,},
{ 0U, 0U, 500U, 0U,}, { 0U, 0U, 500U, 0U,},
{ 47000U, 0U, 100000U, 0U,},
{ 0U, 100000U, 0U, 0U,},
}; };
/* Private function prototypes ----------------------------------------------*/ /* Private function prototypes ----------------------------------------------*/
...@@ -170,7 +175,7 @@ void Analog_Signal_Conv_Service(void) ...@@ -170,7 +175,7 @@ void Analog_Signal_Conv_Service(void)
if (stADCCtrl.u8DebounceCnt == 0U) if (stADCCtrl.u8DebounceCnt == 0U)
{ {
stADCCtrl.enStatus = ADC_STAT_CONV; stADCCtrl.enStatus = ADC_STAT_CONV;
} }
else else
{ {
......
...@@ -33,11 +33,13 @@ enum ADCChName ...@@ -33,11 +33,13 @@ enum ADCChName
ADC_CH_FUEL_VREF, ADC_CH_FUEL_VREF,
ADC_CH_FUEL1, ADC_CH_FUEL1,
ADC_CH_COOLANT_TEMP1_R, ADC_CH_COOLANT_TEMP1_R,
ADC_CH_NTC_TEMP,
ADC_CH_LIGHT_SENSITIVE,
}; };
/* Exported macro ------------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/
#define ADC_TOTAL_CH_NUMBER (5U) #define ADC_TOTAL_CH_NUMBER (7U)
#define ADC_SIGNAL_CH_NUMBER (5U) #define ADC_SIGNAL_CH_NUMBER (7U)
#define ADC_REF_VOLTAGE u16ADCRefVoltage #define ADC_REF_VOLTAGE u16ADCRefVoltage
/* Exported variables --------------------------------------------------------*/ /* Exported variables --------------------------------------------------------*/
......
#include "Key_user.h" #include "Key_user.h"
#include "Components.h" #include "Components.h"
#include "UDS_ISO14229_Services.h"
__align(4) __align(4)
...@@ -21,12 +21,18 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择 ...@@ -21,12 +21,18 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择
case KEY_EVENT_SHORT_PRESS_2: case KEY_EVENT_SHORT_PRESS_2:
break; break;
case KEY_EVENT_LONG_PRESS_1: //2 case KEY_EVENT_LONG_PRESS_1: //2
if(Get_Dis_OdoAndTrip() == 1)
{
Data_Clear_Trip(1);
}
break; break;
case KEY_EVENT_LONG_PRESS_2: //3 case KEY_EVENT_LONG_PRESS_2: //3
break; break;
case KEY_EVENT_LONG_PRESS_3: //5s case KEY_EVENT_LONG_PRESS_3: //5s
break; break;
case KEY_EVENT_LONG_PRESS_4: //10s case KEY_EVENT_LONG_PRESS_4: //10s
/* 进入630H升级MCU模式 */
Get_Into_630H_Update_MCU_Mode();
break; break;
case KEY_EVENT_OFF_TO_ON: case KEY_EVENT_OFF_TO_ON:
break; break;
...@@ -330,7 +336,7 @@ void Get_DisTime_Service(void) ...@@ -330,7 +336,7 @@ void Get_DisTime_Service(void)
{ {
RTE_RTC_Get_CounterValue(&counter_val); RTE_RTC_Get_CounterValue(&counter_val);
counter_val.time.RTC_Hours = RTC_Bcd2ToByte(counter_val.time.RTC_Hours); 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);
} }
} }
......
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] = const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] =
{ {
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, }, {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, },/*P10*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, }, {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, },/*P9*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 60U, 20U, Get_LINE_IN_High_Beam, }, {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 60U, 20U, Get_LINE_IN_High_Beam, },/*P18*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 100U, 20U, Get_LINE_IN_Efi_Fault, }, {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 100U, 20U, Get_LINE_IN_Efi_Fault, },/*P15*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_ABS, }, {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_ABS, },/*P7*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Auto_Start_Stop, }, {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Auto_Start_Stop, },/*P12*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Oil_Pressure_Alert, }, {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Oil_Pressure_Alert, },/*P21*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Voltage, }, {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Voltage, },/*P19*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Fuel_Level_Low, }, {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Fuel_Level_Low, },/*P14*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Coolant_Temperature }, {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Coolant_Temperature }, /*P11*/
}; };
Linelib_uint8_t Get_LINE_IN_Turn_Left(void) Linelib_uint8_t Get_LINE_IN_Turn_Left(void)
{ {
......
...@@ -426,4 +426,4 @@ void Menu_User_WAKEUP(void); ...@@ -426,4 +426,4 @@ void Menu_User_WAKEUP(void);
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
#endif #endif
\ No newline at end of file
...@@ -65,6 +65,10 @@ void Menu_User_Init(void) ...@@ -65,6 +65,10 @@ void Menu_User_Init(void)
Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX; Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX;
Menu_Init_st.uintMenuConfig = 0x0001; Menu_Init_st.uintMenuConfig = 0x0001;
Menu_Init_st.uintMenuCursorMemoryDepth = 0; Menu_Init_st.uintMenuCursorMemoryDepth = 0;
Menu_Item_Select_Set(MENU_ITEM_SELECT_DAYTIME, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_UNIT_KM, 1);
Menu_Item_Select_Set(MENU_ITEM_LANGUAGE_CHINESE, 1);
Menu_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st); Menu_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
} }
...@@ -76,6 +80,10 @@ void Menu_User_WAKEUP(void) ...@@ -76,6 +80,10 @@ void Menu_User_WAKEUP(void)
Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX; Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX;
Menu_Init_st.uintMenuConfig = 0x0001; Menu_Init_st.uintMenuConfig = 0x0001;
Menu_Init_st.uintMenuCursorMemoryDepth = 0; Menu_Init_st.uintMenuCursorMemoryDepth = 0;
Menu_Item_Select_Set(MENU_ITEM_SELECT_DAYTIME, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_UNIT_KM, 1);
Menu_Item_Select_Set(MENU_ITEM_LANGUAGE_CHINESE, 1);
Menu_Wake_Up_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st); Menu_Wake_Up_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
} }
...@@ -326,12 +334,15 @@ void Menu_Logic_Operation_Bluetooth_Back(Menu_Key_en_t enKeyType) ...@@ -326,12 +334,15 @@ void Menu_Logic_Operation_Bluetooth_Back(Menu_Key_en_t enKeyType)
void Menu_Logic_Operation_Clock_Hour_Tenb(Menu_Key_en_t enKeyType) void Menu_Logic_Operation_Clock_Hour_Tenb(Menu_Key_en_t enKeyType)
{ {
// counter_val.time.RTC_Hours = (MenuData.Dis_Hour_Tenb*10 + MenuData.Dis_Hour_Bit); RTE_RTC_Get_CounterValue(&counter_val);
// counter_val.time.RTC_Minutes = (MenuData.Dis_Minute_Tenb*10 + MenuData.Dis_Minute_Bit); counter_val.time.RTC_Hours = RTC_Bcd2ToByte(counter_val.time.RTC_Hours);
// if(MENU_KEY_CONFIRM_SHORT == enKeyType) counter_val.time.RTC_Minutes = RTC_Bcd2ToByte(counter_val.time.RTC_Minutes);
// {
// RTC_SetTime(&counter_val.time); MenuData.Dis_Hour_Tenb = counter_val.time.RTC_Hours / 10;
// } MenuData.Dis_Hour_Bit = counter_val.time.RTC_Hours % 10;
MenuData.Dis_Minute_Tenb = counter_val.time.RTC_Minutes / 10;
MenuData.Dis_Minute_Bit = counter_val.time.RTC_Minutes % 10;
} }
void Menu_Logic_Operation_Clock_Hour_Bit(Menu_Key_en_t enKeyType) void Menu_Logic_Operation_Clock_Hour_Bit(Menu_Key_en_t enKeyType)
...@@ -371,11 +382,7 @@ void Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType) ...@@ -371,11 +382,7 @@ void Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType)
uint8_t updataDir = 0u; uint8_t updataDir = 0u;
uint8_t datmax = 0u; uint8_t datmax = 0u;
uint8_t datmin = 0u; uint8_t datmin = 0u;
// 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);
// MenuData.Dis_Hour_Tenb = counter_val.time.RTC_Hours / 10;
if(enKeyType == MENU_KEY_DOWN_SHORT) if(enKeyType == MENU_KEY_DOWN_SHORT)
{ {
...@@ -388,7 +395,7 @@ void Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType) ...@@ -388,7 +395,7 @@ void Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType)
if(MENU_KEY_CONFIRM_SHORT == 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_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); RTC_SetTime(&counter_val.time);
} }
} }
...@@ -450,7 +457,7 @@ void Menu_Logic_Operation_Clock_Min_Bit_Set(Menu_Key_en_t enKeyType) ...@@ -450,7 +457,7 @@ void Menu_Logic_Operation_Clock_Min_Bit_Set(Menu_Key_en_t enKeyType)
if(MENU_KEY_CONFIRM_SHORT == 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_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); RTC_SetTime(&counter_val.time);
} }
} }
......
...@@ -75,7 +75,7 @@ void Data_User_Mileage_KL30Init(void) ...@@ -75,7 +75,7 @@ void Data_User_Mileage_KL30Init(void)
{ {
ODOInit.Offset = TempBuf[2]; ODOInit.Offset = TempBuf[2];
} }
ODOInit.MaxValue = 16103058; ODOInit.MaxValue = 9999999;
Data_ODO_KL30_Init(DataODOBuf, &ODOInit, Func.EEPromWrite_Cbk); Data_ODO_KL30_Init(DataODOBuf, &ODOInit, Func.EEPromWrite_Cbk);
(void)Data_User_EEPROM_Read(EM_TRIP_BLOCK, TempBuf + 3, 8); (void)Data_User_EEPROM_Read(EM_TRIP_BLOCK, TempBuf + 3, 8);
...@@ -194,18 +194,18 @@ void Services_Mileage_Callback(void) ...@@ -194,18 +194,18 @@ void Services_Mileage_Callback(void)
uint32_t Get_ODO_Value(void) uint32_t Get_ODO_Value(void)
{ {
uint32_t ODO = 0; uint32_t ODO = 0;
// if (Get_Dis_Unit() == 0) /* 公制 */ if (Get_Dis_Unit() == 0) /* 公制 */
// { {
// ODO = Data_ODO_Read(); ODO = Data_ODO_Read();
// } }
// else if (Get_Dis_Unit() == 1) /* 英制 */ else if (Get_Dis_Unit() == 1) /* 英制 */
// { {
// ODO = Data_Km_To_Mile(Data_ODO_Read()); ODO = Data_Km_To_Mile(Data_ODO_Read());
// } }
// else /* 无效值,按照公里处理,理论上不会执行到这 */ else /* 无效值,按照公里处理,理论上不会执行到这 */
// { {
// ODO = Data_ODO_Read(); ODO = Data_ODO_Read();
// } }
return ODO; return ODO;
} }
...@@ -216,18 +216,18 @@ uint32_t Get_ODO_Value(void) ...@@ -216,18 +216,18 @@ uint32_t Get_ODO_Value(void)
uint32_t Get_Trip_Value(void) uint32_t Get_Trip_Value(void)
{ {
uint32_t Trip = 0; uint32_t Trip = 0;
// if (Get_Dis_Unit() == 0) /* 公制 */ if (Get_Dis_Unit() == 0) /* 公制 */
// { {
// Trip = Data_Read_Trip(EM_TRIP_A); Trip = Data_Read_Trip(EM_TRIP_B);
// } }
// else if (Get_Dis_Unit() == 1) /* 英制 */ else if (Get_Dis_Unit() == 1) /* 英制 */
// { {
// Trip = Data_Km_To_Mile(Data_Read_Trip(EM_TRIP_A)); Trip = Data_Km_To_Mile(Data_Read_Trip(EM_TRIP_B));
// } }
// else /* 无效值,按照公里处理,理论上不会执行到这 */ else /* 无效值,按照公里处理,理论上不会执行到这 */
// { {
// Trip = Data_Read_Trip(EM_TRIP_A); Trip = Data_Read_Trip(EM_TRIP_B);
// } }
return Trip; return Trip;
} }
...@@ -237,13 +237,13 @@ uint32_t Get_Trip_Value(void) ...@@ -237,13 +237,13 @@ uint32_t Get_Trip_Value(void)
*/ */
void Trip_Clear_Km_Service(void) void Trip_Clear_Km_Service(void)
{ {
// if (Get_Dis_Unit() == 0) /* 公制 */ if (Get_Dis_Unit() == 0) /* 公制 */
// { {
// if (Data_Read_Trip(EM_TRIP_A) > 9999) /* 当前单位在KM时,里程大于999.9KM进行清零 */ if (Data_Read_Trip(EM_TRIP_B) > 9999) /* 当前单位在KM时,里程大于999.9KM进行清零 */
// { {
// Data_Clear_Trip_All(); Data_Clear_Trip_All();
// } }
// } }
} }
......
...@@ -56,11 +56,11 @@ static void Power_KL30_Init(void) ...@@ -56,11 +56,11 @@ static void Power_KL30_Init(void)
Fuel_KL30_Init(); Fuel_KL30_Init();
Amt630hInit(); Amt630hInit();
Telltales_Init(); Telltales_Init();
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 64000000); TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High); TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
g_stRTCInformation.u8RTCSecond = 0; g_stRTCInformation.u8RTCSecond = 0;
g_stRTCInformation.u8RTCMinute = 0; g_stRTCInformation.u8RTCMinute = 0;
g_stRTCInformation.u8RTCHour = 8; g_stRTCInformation.u8RTCHour = 0;
g_stRTCInformation.u8RTCDayOfMonth = 1; g_stRTCInformation.u8RTCDayOfMonth = 1;
g_stRTCInformation.u8RTCMonth = 1; g_stRTCInformation.u8RTCMonth = 1;
g_stRTCInformation.u8RTCYear = 20; g_stRTCInformation.u8RTCYear = 20;
...@@ -68,6 +68,7 @@ static void Power_KL30_Init(void) ...@@ -68,6 +68,7 @@ static void Power_KL30_Init(void)
Menu_User_Init(); Menu_User_Init();
Can_Init(); Can_Init();
Protocol_KL30_Wakeup_Init(); Protocol_KL30_Wakeup_Init();
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 500);
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising);
FaultCode_Init(); FaultCode_Init();
} }
...@@ -87,7 +88,7 @@ static void Power_Wakeup_Init(void) ...@@ -87,7 +88,7 @@ static void Power_Wakeup_Init(void)
Line_In_KL15_ON_Init(); Line_In_KL15_ON_Init();
Fuel_KL30_Init(); Fuel_KL30_Init();
Amt630hInit(); Amt630hInit();
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 64000000); TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High); TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
Telltales_Init(); Telltales_Init();
Key_KL30_Init_EXample(); Key_KL30_Init_EXample();
...@@ -110,7 +111,7 @@ static void Power_OVP_Init(void) ...@@ -110,7 +111,7 @@ static void Power_OVP_Init(void)
static void Power_IG_OFF_Init(void) static void Power_IG_OFF_Init(void)
{ {
Line_In_KL15_OFF_Init(); Line_In_KL15_OFF_Init();
RTE_GPIO_Set_Level(Blacklight_PWM, 0); TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
} }
static void Power_IG_ON_Init(void) static void Power_IG_ON_Init(void)
...@@ -119,13 +120,13 @@ static void Power_IG_ON_Init(void) ...@@ -119,13 +120,13 @@ static void Power_IG_ON_Init(void)
Line_In_KL15_ON_Init(); Line_In_KL15_ON_Init();
Telltales_KL15_Init(); Telltales_KL15_Init();
Fuel_KL15_Init(); Fuel_KL15_Init();
RTE_GPIO_Set_Level(Blacklight_PWM, 1); //RTE_GPIO_Set_Level(Blacklight_PWM, 1);
FaultCode_Init(); FaultCode_Init();
} }
static void Power_Sleep_Init(void) static void Power_Sleep_Init(void)
{ {
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 0); TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 0);
rte_can_deinit(CAN_CH_0); rte_can_deinit(CAN_CH_0);
TMM0_Stop(); TMM0_Stop();
TMM1_Stop(); TMM1_Stop();
...@@ -168,18 +169,10 @@ static Power_Status_em Power_Stay_OFF(void) ...@@ -168,18 +169,10 @@ static Power_Status_em Power_Stay_OFF(void)
} }
else else
{ {
if ((Common_GetIgnOffTime() < 1000)) if ((Common_GetIgnOffTime() < 20000))
{ {
u8PowerSts = EM_IGN_OFF; u8PowerSts = EM_IGN_OFF;
} }
else
{
//igoff大于1s且下15电才进休眠,否则一直保持在igoff状态
//if(Sys_Read_KL15_Voltage() < 5000)
{
u8PowerSts = EM_IGN_Sleep_Init;
}
}
} }
return u8PowerSts; return u8PowerSts;
...@@ -195,7 +188,7 @@ static Power_Status_em Power_Stay_Protect(void) ...@@ -195,7 +188,7 @@ static Power_Status_em Power_Stay_Protect(void)
/* 关闭所有外设,坪保留AD采集,电溝状思切�? */ /* 关闭所有外设,坪保留AD采集,电溝状思切�? */
{ {
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0); TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Disable); //CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Disable);
} }
u8PowerSts = EM_IGN_OFF_Init; u8PowerSts = EM_IGN_OFF_Init;
/* 电溝模弝正常 */ /* 电溝模弝正常 */
...@@ -208,15 +201,10 @@ static Power_Status_em Power_Stay_Protect(void) ...@@ -208,15 +201,10 @@ static Power_Status_em Power_Stay_Protect(void)
if ( SYS_OPR_STAT_RUN ) if ( SYS_OPR_STAT_RUN )
{ {
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable); //CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
return u8PowerSts; return u8PowerSts;
} }
//进入异常电压,电源库里直接将15电等于0,则直接退出,状态是igoff,下15则进入休眠
// if ( SYS_OPR_STAT_IGN_OFF )
// {
// break;
// }
} }
} }
......
...@@ -234,22 +234,34 @@ static Tellib_uint16_t LED_TCS_Judgement(void) ...@@ -234,22 +234,34 @@ static Tellib_uint16_t LED_TCS_Judgement(void)
{ {
LED_STATE = 1u;/*TCS灯亮*/ LED_STATE = 1u;/*TCS灯亮*/
} }
else else if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x0)
{ {
LED_STATE = 0u;/*都不亮*/ LED_STATE = 0u;/*都不亮*/
} }
else
{
LED_STATE = 0u;
}
} }
else else if(Get_CAN_CH0_ID_37B_Sig_TCS_Work_Mode == 0x0)
{ {
if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x1) if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x1)
{ {
LED_STATE = 2u;/*TCS/亮*/ LED_STATE = 2u;/*TCS/亮*/
} }
else else if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x0)
{ {
; LED_STATE = 0u;
} }
else
{
LED_STATE = 0u;
}
} }
else
{
;
}
} }
return LED_STATE; return LED_STATE;
} }
......
...@@ -15,10 +15,10 @@ typedef enum ...@@ -15,10 +15,10 @@ typedef enum
extern uint32_t flash_protect_flag; extern uint32_t flash_protect_flag;
int EraseChip (uint32_t adr); extern int EraseChip (uint32_t adr);
int EraseSector (uint32_t adr); extern int EraseSector (uint32_t adr);
int ProgramPage (uint32_t adr, uint32_t sz, uint8_t *buf); extern int ProgramPage (uint32_t adr, uint32_t sz, uint8_t *buf);
FLASH_STATUS flash_write(uint32_t adr, uint32_t sz, uint8_t *buf); extern 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 void flash_read(uint32_t read_address, uint16_t size, uint8_t *readbuf);
#endif #endif
...@@ -255,16 +255,15 @@ FLASH_STATUS flash_write(uint32_t adr, uint32_t sz, uint8_t *buf) ...@@ -255,16 +255,15 @@ FLASH_STATUS flash_write(uint32_t adr, uint32_t sz, uint8_t *buf)
return (status); return (status);
} }
void flashRead(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; uint8_t *w_ptr;
uint32_t i; uint32_t i;
w_ptr = (uint8_t *)read_address; w_ptr = (uint8_t *)read_address;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
{ {
*readbuf = *w_ptr++; *readbuf = *w_ptr++;
readbuf++; readbuf++;
} }
} }
......
...@@ -61,7 +61,7 @@ uint8_t TimerM_PWM_counter_Output_Init(TIMERM_PWM_Counter_en_t counter, uint16_t ...@@ -61,7 +61,7 @@ uint8_t TimerM_PWM_counter_Output_Init(TIMERM_PWM_Counter_en_t counter, uint16_t
TIMM_InitStructure[counter].TMM_Channel = TMM_Channel_A|TMM_Channel_B|TMM_Channel_C|TMM_Channel_D; TIMM_InitStructure[counter].TMM_Channel = TMM_Channel_A|TMM_Channel_B|TMM_Channel_C|TMM_Channel_D;
TIMM_InitStructure[counter].TMM_Mode = TMM_Mode_PWM; TIMM_InitStructure[counter].TMM_Mode = TMM_Mode_PWM;
TIMM_InitStructure[counter].TMM_CounterClear = TM_Clear_Match_TMGRA; //when TM is matched with TMGRA, TM0 is cleared TIMM_InitStructure[counter].TMM_CounterClear = TM_Clear_Match_TMGRA; //when TM is matched with TMGRA, TM0 is cleared
TIMM_InitStructure[counter].TMM_Intp = TMM_Int_IMIA; ///compare match interrupt enable A (IMIEA) TIMM_InitStructure[counter].TMM_Intp = TMM_Int_NONE; ///compare match interrupt enable A (IMIEA)
if (freq > 2000) if (freq > 2000)
{ {
...@@ -227,13 +227,15 @@ uint8_t TimerM_PWM_CH_Output_init(TIMERM_PWM_Counter_en_t counter, TIMERM_PWM_Ch ...@@ -227,13 +227,15 @@ uint8_t TimerM_PWM_CH_Output_init(TIMERM_PWM_Counter_en_t counter, TIMERM_PWM_Ch
return 1; return 1;
//break; //break;
} }
TMM_Init(&TIMM_InitStructure[counter]);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Level = GPIO_Level_LOW; GPIO_InitStruct.GPIO_Level = GPIO_Level_LOW;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIO_PORT1,&GPIO_InitStruct);
TMM_Init(&TIMM_InitStructure[counter]);
if (counter == TIMERM_COUNTER0) if (counter == TIMERM_COUNTER0)
{ {
TMM0_Start(ENABLE); TMM0_Start(ENABLE);
...@@ -247,7 +249,7 @@ uint8_t TimerM_PWM_CH_Output_init(TIMERM_PWM_Counter_en_t counter, TIMERM_PWM_Ch ...@@ -247,7 +249,7 @@ uint8_t TimerM_PWM_CH_Output_init(TIMERM_PWM_Counter_en_t counter, TIMERM_PWM_Ch
return 1; return 1;
} }
GPIO_Init(GPIO_PORT1,&GPIO_InitStruct);
high_level_Pulse[counter][ch] = ((cycle_pulse[counter]) ) & 0x0FFFF; high_level_Pulse[counter][ch] = ((cycle_pulse[counter]) ) & 0x0FFFF;
pwm_duty[counter][ch] = 1000; pwm_duty[counter][ch] = 1000;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "RTE.h" #include "RTE.h"
#include "UDS_ISO14229_Server.h" #include "UDS_ISO14229_Server.h"
#include "FaultCode.h" #include "FaultCode.h"
extern _Menu_Data MenuData;
void Sys_Pseudo_Real_Time_Tasks(void) void Sys_Pseudo_Real_Time_Tasks(void)
{ {
...@@ -19,6 +20,7 @@ void Sys_2ms_Tasks(void) ...@@ -19,6 +20,7 @@ void Sys_2ms_Tasks(void)
Sys_Status_Update_Service(); Sys_Status_Update_Service();
Analog_Signal_Conv_Service(); Analog_Signal_Conv_Service();
AMT630H_Main(); AMT630H_Main();
/* Check_MCU_Info_in_630H(); */
DoCAN_Timer_Update(2000u); DoCAN_Timer_Update(2000u);
//Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发 //Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u); CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u);
...@@ -39,6 +41,7 @@ void Sys_10ms_Tasks(void) ...@@ -39,6 +41,7 @@ void Sys_10ms_Tasks(void)
Key_TimeOut_Service(); Key_TimeOut_Service();
Fuel_R_Cal(10u); Fuel_R_Cal(10u);
Coolant_R_Cal(10u); Coolant_R_Cal(10u);
Data_Light_Res_service(10);
} }
void Sys_20ms_Tasks(void) void Sys_20ms_Tasks(void)
...@@ -54,17 +57,17 @@ void Sys_50ms_Tasks(void) ...@@ -54,17 +57,17 @@ void Sys_50ms_Tasks(void)
g_u8Cursor_Posittion = Menu_Get_Current_Cursor_Information(); g_u8Cursor_Posittion = Menu_Get_Current_Cursor_Information();
// if((MenuData.Dis_Hour_Tenb*10 + MenuData.Dis_Hour_Bit) > 23) if((MenuData.Dis_Hour_Tenb*10 + MenuData.Dis_Hour_Bit) > 23)
// { {
// MenuData.Dis_Hour_Tenb = 2; MenuData.Dis_Hour_Tenb = 2;
// MenuData.Dis_Hour_Bit = 3; MenuData.Dis_Hour_Bit = 3;
// } }
// if((MenuData.Dis_Minute_Tenb*10 + MenuData.Dis_Minute_Bit) > 59) if((MenuData.Dis_Minute_Tenb*10 + MenuData.Dis_Minute_Bit) > 59)
// { {
// MenuData.Dis_Minute_Tenb = 5; MenuData.Dis_Minute_Tenb = 5;
// MenuData.Dis_Minute_Bit = 9; MenuData.Dis_Minute_Bit = 9;
// } }
} }
uint32_t ODOtest = 0; uint32_t ODOtest = 0;
...@@ -73,16 +76,16 @@ uint32_t aaa = 0; ...@@ -73,16 +76,16 @@ uint32_t aaa = 0;
void Sys_100ms_Tasks(void) void Sys_100ms_Tasks(void)
{ {
ODOtest = Data_ODO_Read();
Triptest = Data_Read_Trip(0);
S3_ServerCNTT(); S3_ServerCNTT();
Get_DisTime_Service(); Get_DisTime_Service();
Fuel_Cal_Sevice(100u); Fuel_Cal_Sevice(100u);
Coolant_Cal_Sevice(100u); Coolant_Cal_Sevice(100u);
Services_Mileage_Callback(); Services_Mileage_Callback();
//Data_Mileage_Clear(); // Data_Mileage_Clear();
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
//BackLight_Process();
//TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 100);
// aaa = Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO); // aaa = Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO);
} }
......
This diff is collapsed.
...@@ -26,15 +26,26 @@ ...@@ -26,15 +26,26 @@
#include "UDS_ISO14229_Server_Config.h" #include "UDS_ISO14229_Server_Config.h"
/******************************************************************************
program version
*******************************************************************************/
#define SWV 0x102 // 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 *DFlash
*/ */
#define NoNeedWait 0x00u #define NoNeedWait 0x00u
#define NeedWait 0x01u #define NeedWait 0x01u
#define APP_STATUS_ADDR (0x501000) #define FLASH_APP_STATUS_INFO (0x00501000UL) /* APP 程序有效性标识地址 */
#define APP_DATA_INFO (0x501400) #define FLASH_SECOND_BOOT_INFO (0x00501400UL) /* 二级Boot程序状态地址 */
#define APP_DATA_WRITE (0x501800) #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_BootValid_OFFSET 0x00000000
#define Data_Flash_Addr_DiagReceive_OFFSET 0x00002000 #define Data_Flash_Addr_DiagReceive_OFFSET 0x00002000
...@@ -313,41 +324,6 @@ ...@@ -313,41 +324,6 @@
#define CheckSumErr 7 // Checksum Error #define CheckSumErr 7 // Checksum Error
#define UnknownPartID 8 // Unknown Part ID #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 typedef struct
{ {
uint32_t Flag; uint32_t Flag;
...@@ -365,19 +341,10 @@ typedef struct ...@@ -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_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_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_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_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 S3_ServerCNTT(void);
void Randomcnt(void);
extern void DIAG_InitParameter(void); extern void DIAG_InitParameter(void);
void GetSeed(void);
void CalculateKey(void);
void CalculateKeyLv11(void);
typedef void (*InitFunction)(void); typedef void (*InitFunction)(void);
/***********Local Functin*************/ /***********Local Functin*************/
...@@ -386,13 +353,11 @@ uint8_t SerXXNRC12Filter(uint8_t insub, const uint8_t *supportsub, uint8_t size, ...@@ -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 SerXXNRC13Filter(uint8_t type, uint8_t serlength, const uint8_t *length, uint8_t index);
uint8_t SerXXNRC22Filter(void); uint8_t SerXXNRC22Filter(void);
uint8_t SerXXNRC31DIDFilter(uint16_t inDID, const uint16_t *DIDList, uint8_t size, uint8_t *index); 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 SerXXNRC7EFilter(const uint8_t *SubSupportSession, uint8_t index);
uint8_t SerXXNRC7FFilter(uint8_t SupportSession); uint8_t SerXXNRC7FFilter(uint8_t SupportSession);
extern void Data_Set_DiagPara(void);
void Write_App_InValid(uint32_t m32); void Write_App_InValid(uint32_t m32);
void Data_Read_DiagPara(void);
void DFlash_init(void); extern void Get_Into_630H_Update_MCU_Mode(void);
void Data_Read_DiagPara(void); extern void Check_MCU_Info_in_630H(void);
#endif #endif
# 2024.08.16 (2)
中微厂家提供了新的cgc.c文件
内部版本信息更新(1.03_20240816)
# 2024.08.16
修复一级Boot计算Flash Block错误的问题
添加630H升级MCU APP的能力
内部版本号更新(1.02_20240816)
# 2024.08.08 # 2024.08.08
修复一级Boot失效的问题 修复一级Boot失效的问题
项目信息统一 项目信息统一
......
#new Option
#Tue Aug 13 23:16:37 CST 2024
IsSort=true
MergeFlashIsCompression=false
ChangeAppFilePath=
MergeCanXLSPath=
RH850_D1M1AGPIOJSONpath=
DBFFilePath=
MergeCrcTtpe=29
MergeBootFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750_TFT\\haojin750tft\\Firmware\\utility\\Boot_Release\\HaoJin_750TFT_HJYB-7500TFT_BV1.01_20240808.hex
IsMergeChangeAddress=false
MergeFlashOutPutFilePath=
GPIOOutPutPath=
MergeCanDBCPath=
IsFilling=true
RxID=789
MergeAudioInPutPath=
MergeAudioIndex=3
IsFastSend=true
MergeBinFilePath=
MsgMaxBc=0
UDS_22_2E_DID_FilePath=
SoftwareVersion=0
MsgSTmin=0
MergeLineInOutPutPath=
Leave2ID=17
PHYID=781
BaudRate=500K
AppUpdateFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750tft_2024-8-13\\APP_20240813230755344371.srec
FUNID=7DF
IsMergeCreateBin=false
IsOverWrite=true
DllFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750_TFT\\haojin750tft\\Firmware\\utility\\\u8BCA\u65AD\u5DE5\u5177\\\u89E3\u9501\u6587\u4EF6\\default_64.dll
MergeAudioOutPutPath=
MergeCanOutPutPath=
ChangeOutPutFilePath=
MergeTelltalesOutPutPath=
TTFExtractTXTpath=
JieFaRH850GPIOJSONpath=
MergeFlashIsMandatory=false
UpdateProcess=\u9ED8\u8BA4
Driver=Kvaser
MergeFlashImageFormat=
RH850_F1KMGPIOJSONpath=
DriverFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750_TFT\\haojin750tft\\Firmware\\utility\\\u8BCA\u65AD\u5DE5\u5177\\FlashDriver\\R5_FlashDriver.srec
IsMergeCreateHex=false
MergeFlashIsCreateREC=false
TTFExtractTTFpath=
MergeImageFilePath=
IsMergeCreateUpdateBin=false
MergeImageSize=128M
CRCFilePath=
MergeFlashCompressionFormat=
IsPlayMusic=false
IsHexDisplay=true
MergeLineInXLSPath=
MergeFlashInPutFilePath=
MergeFlashIsInternal=false
MergeOutPutFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750tft_2024-8-13
MergeAppFilePath=C\:\\Users\\Lenovo\\Desktop\\haojin750tft_2024-8-13\\HaoJin750TFT.hex
MergeTelltalesXLSPath=
FillingByte=-86
ImageVersion=0
XHYGPIOJSONpath=
Leave1ID=1
TTFExtractOUTpath=
MergeAudioPWMMax=2000
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment