This commit is contained in:
sunbeam 2024-09-14 17:01:54 +08:00
parent ab7a8f1b16
commit 350b7354cb
13 changed files with 237 additions and 643 deletions

View File

@ -1,6 +1,7 @@
{
"files.associations": {
"rte.h": "c",
"sysdiagdetect.h": "c"
"sysdiagdetect.h": "c",
"touch_example.h": "c"
}
}

View File

@ -1,5 +1,5 @@
#
#Sat Aug 24 10:49:00 CST 2024
#Sat Sep 14 09:55:05 CST 2024
mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
conf.ids=mcal
mcal.languagetoolchain.version=4.10

View File

@ -2,6 +2,8 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group/>
<group>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTL/firmware/src/TouchPanel/TouchPanel.c</file>
</group>
</open-files>
</project-private>

View File

@ -223,6 +223,8 @@ typedef unsigned char UI_8;
#define DID_PRESEE_SEN_SIGNAL ((UI_16)0x7021)
#define DID_PRESEE_SEN_PRE_VAL ((UI_16)0x7022)
#define DID_RESET_SOURCE ((UI_16)0x7030)
/*--------------------------- Global variables ---------------------------- */
//#pragma push

View File

@ -78,8 +78,8 @@ typedef struct{
* Private variables
*/
const UI_8 NVM_DID_CD_VIN[DLC_DID_CD_VIN] = GAC_VIN_DEFAULT_VALUE;
const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x08,0x19};
const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','0','8','1','9'};
const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x09,0x14};
const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','0','9','1','4'};
const UI_8 NVM_Repair_Shop_Code[DLC_REPAIR_SHOP_CODE] = GAC_ECU_REPAIR_SHOP_CODE;
const UI_8 NVM_DID_CD_HW_VERSION[DLC_GAC_HW_VERSION] = {'H','W','0','6',0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
static uint8 RAM_DID_CD_VIN[DLC_DID_CD_VIN];
@ -570,6 +570,16 @@ t_UDS_ERR Get_DID_Pre_Value(uint8 *data)
return ISO15765_3_POSITIVE_RESPONSE;
}
t_UDS_ERR Get_DID_ResetSource(uint8 *data)
{
uint8_t reset_source_buf[20];
SmartEE_Read(0x400,reset_source_buf,20);
memcpy(data,reset_source_buf,20);
return ISO15765_3_POSITIVE_RESPONSE;
}
t_UDS_ERR Get_DID_Reprogramming_Date(uint8 *data)
{
//memcpy(data, RAM_DID_CD_REPROGRAMMING_DATE, sizeof(RAM_DID_CD_REPROGRAMMING_DATE));

View File

@ -218,6 +218,7 @@ t_UDSReadDidSubCommands uds_did_read_commands[] =
{ DID_PRESEE_SEN_BASELINE , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Baseline },
{ DID_PRESEE_SEN_SIGNAL , 2, UDS_DEFAULT_SESSION, Get_DID_PressSen_Signal },
{ DID_PRESEE_SEN_PRE_VAL , 2, UDS_DEFAULT_SESSION, Get_DID_Pre_Value },
{DID_RESET_SOURCE , 20, UDS_DEFAULT_SESSION , Get_DID_ResetSource },
{DID_FUN1, 2, UDS_DEFAULT_SESSION, Get_DID_Fun1},

View File

@ -159,6 +159,7 @@ t_UDS_ERR Get_DID_TouchSen13_Signal(uint8 *data);
t_UDS_ERR Get_DID_PressSen_Baseline(uint8 *data);
t_UDS_ERR Get_DID_PressSen_Signal(uint8 *data);
t_UDS_ERR Get_DID_Pre_Value(uint8 *data);
t_UDS_ERR Get_DID_ResetSource(uint8 *data);
t_UDS_ERR Get_DID_CD_SYSID_CALIRATION_DATE(uint8 *data);
t_UDS_ERR Set_DID_CD_CALIRATION_DATE(uint8 *data);

View File

@ -150,7 +150,7 @@
#define OT_TX_FRM_SWTLPRIVATEDHUCANFR04 ((uint32_t)(0))
#define PT_TX_FRM_SWTLPRIVATEDHUCANFR04 ((uint32_t)(400))
#define OT_TX_FRM_SWTLPRIVATEDHUCANFR03 ((uint32_t)(0))
#define PT_TX_FRM_SWTLPRIVATEDHUCANFR03 ((uint32_t)(100))
#define PT_TX_FRM_SWTLPRIVATEDHUCANFR03 ((uint32_t)(400))
#define OT_TX_FRM_SWTLPRIVATEDHUCANFR02 ((uint32_t)(0))
#define PT_TX_FRM_SWTLPRIVATEDHUCANFR02 ((uint32_t)(100))
#define OT_TX_FRM_SWTLPRIVATEDHUCANFR01 ((uint32_t)(0))

View File

@ -33,6 +33,7 @@
#include "plib_systick.h"
#include "FunctionState.h"
#include "SysDiagDetect.h"
#include "touch_api_ptc.h"
// For SWTL
// #include "Global.h"
@ -689,9 +690,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
{
//满足防误触
Allow_Touch_counter++;
if (Allow_Touch_counter >= 10)//40ms
if (Allow_Touch_counter >= 15)//60ms
{
Allow_Touch_counter = 10;
Allow_Touch_counter = 15;
Allow_Touch_flag = 0;
}
}
@ -725,6 +726,8 @@ uint8_t RTE_Get_CAN_ActvnOfSteerWhlIllmn(void)
return rtn_data;
}
extern uint8_t Msg30_timeout_flag;
// LED Day/Night Mode switch
uint8_t RTE_Get_CAN_TwliBriSts(void)
{
@ -733,6 +736,11 @@ uint8_t RTE_Get_CAN_TwliBriSts(void)
(void)ReceiveMessage(SIG_TWLIBRISTS, &rtn_data);
if (Msg30_timeout_flag == 1)
{
rtn_data = 0;
}
return rtn_data;
}
@ -1334,7 +1342,17 @@ void RTE_Set_All_UB(void)
InitMessage(SIG_SWTLPARTNOCMPL_UB, &UbInitValue);
InitMessage(SIG_SWTLSERNO_UB, &UbInitValue);
}
const uint16_t max_on_time_arr[16] = {
// 0 1 2 3 4 5 6 7
10,10,10,50,50,50,50,50,
50,50,50,50,50,10,10,10,
};
const uint16_t low_baseline_reset_arr[16] = {
// 0 1 2 3 4 5 6 7
40,40,40,40,40,40,40,40,
40,40,40,40,40,40,40,40,
};
#if 1
void RTE_Set_All_Test_Value(void)
{
@ -1342,6 +1360,7 @@ void RTE_Set_All_Test_Value(void)
uint16_t Press_signal, Press_preload;
uint8_t i,frccdata[8]={0};
static uint32_t Press_reset_counter[16], Press_repeat_counter[16], baseline_error_counter, baseline_error_repeat_counter;
static uint32_t low_baseline_reset_counter[16];
Press_baseline = Get_forcedetect_basline_value();
Press_signal = Get_forcedetect_force_value();
Press_preload = Get_forcedetect_preload_value();
@ -1356,13 +1375,13 @@ void RTE_Set_All_Test_Value(void)
if (get_sensor_node_signal(i) > (get_sensor_node_reference(i) + qtlib_key_configs_set1[i].channel_threshold))
{
Press_reset_counter[i]++;
if (Press_reset_counter[i] > 25000) // 50s = 50000 ms
if (Press_reset_counter[i] >= (500 * max_on_time_arr[i])) //
{
if (Press_repeat_counter[i] == 0)
{
Press_repeat_counter[i] = 55000; // 110S
Press_reset_counter[i] = 0;
// update_sensor_node_reference(i,get_sensor_node_signal(i));
calibrate_node(i);
}
else
{
@ -1379,6 +1398,22 @@ void RTE_Set_All_Test_Value(void)
{
Press_repeat_counter[i]--;
}
if (get_sensor_node_signal(i) + low_baseline_reset_arr[i] < get_sensor_node_reference(i))
{
low_baseline_reset_counter[i]++;
if (low_baseline_reset_counter[i] > 250)
{
low_baseline_reset_counter[i] = 0;
calibrate_node(i);
}
}
else
{
low_baseline_reset_counter[i] = 0;
}
}
for (i = 0; i < 16; i++)
{

File diff suppressed because it is too large Load Diff

View File

@ -23,25 +23,11 @@
#define TOUCH_KET_ON 1
#define TOUCH_KET_OFF 0
typedef enum
{
TP_SlideDirection_NONE = 0,
TP_SlideDirection_ShortUP,
TP_SlideDirection_LongUP,
TP_SlideDirection_ShortDOWN,
TP_SlideDirection_LongDOWN,
TP_SlideDirection_ShortLEFT,
TP_SlideDirection_LongLEFT,
TP_SlideDirection_ShortRIGHT,
TP_SlideDirection_LongRIGHT
} TP_SlideDirection_Enum;
typedef enum{
TOUCH_PANEL_NONE_EVENT = 0,
TOUCH_PANEL_PRESS_EVENT,
TOUCH_PANEL_RES_EVENT,
TOUCH_PANEL_MOVE_EVENT,
TOUCH_PANEL_BERR_EVENT
}TouchPanel_EventType;
typedef enum{
@ -51,24 +37,8 @@ typedef enum{
}PanelPress_LevelType;
typedef struct{
boolean Event;
uint32 keep_cycle;
TP_SlideDirection_Enum Direction;
}TouchSlideEvent_type;
typedef struct{
uint8 x_position;
uint8 y_position;
uint8 origin_x_pos;
uint8 origin_y_pos;
uint8 end_x_pos;
uint8 end_y_pos;
TouchPanel_EventType Event;
uint32 CheckCycle;
uint32 TouchCycle;
}TouchSurface_type;
typedef struct{
uint8 convert_x;
@ -122,7 +92,7 @@ void TouchPanel_init(void);
void GetSurface_Position(uint8 *x, uint8 *y);
Buttons_SignalType TouchPanel_BtnSignalRead(Buttons_ChType ChId);
void TouchPanel_MainFunction(void);
TP_SlideDirection_Enum TouchPanel_SlideEventRead(void);
Buttons_SignalType TouchSurface_XY_StsRead(void);
PanelPress_LevelType TouchPanel_PressLevelRead(void);
boolean TouchSurface_is_TouchActive(void);

View File

@ -301,7 +301,7 @@ SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
* Range: 0 to 255.
* Default value: 5.
*/
#define DEF_ANTI_TCH_DET_INT 50u
#define DEF_ANTI_TCH_DET_INT 0u
/* Threshold beyond with automatic sensor recalibration is initiated.
* Range: RECAL_100/ RECAL_50 / RECAL_25 / RECAL_12_5 / RECAL_6_25 / MAX_RECAL
@ -342,7 +342,7 @@ SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
* Range: 0-255
* Default value: 0
*/
#define DEF_MAX_ON_DURATION 250u
#define DEF_MAX_ON_DURATION 0u
/**********************************************************/

View File

@ -196,14 +196,15 @@ void CanTx(t_can_handler can_handler, bool notif, uint32_t idtp, uint16_t len, t
;
}
}
uint8_t Msg30_timeout_flag = 0;
void IhuPrivateDHUCanFr01_CALLBACK(void)
{
;
Msg30_timeout_flag = 0;
}
void IhuPrivateDHUCanFr01_Timeout_CALLBACK(void)
{
;
Msg30_timeout_flag = 1;
}
// *****************************************************************************
@ -213,8 +214,10 @@ void IhuPrivateDHUCanFr01_Timeout_CALLBACK(void)
// *****************************************************************************
static uint32_t status = 0;
uint8_t g_SBC_STATUS[8] = {0};
void GetResetSource(void)
{
uint8_t reset_source_buf[25];
g_SBC_STATUS[0] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_2);
g_SBC_STATUS[1] = (uint8_t)sbc_read_reg(SBC_SUP_STAT_1);
g_SBC_STATUS[2] = (uint8_t)sbc_read_reg(SBC_DEV_STAT);
@ -224,6 +227,22 @@ void GetResetSource(void)
g_SBC_STATUS[6] = 0x00;
g_SBC_STATUS[7] = 0x00;
CanTx(0, true, 0x420, 8, g_SBC_STATUS);
if (g_SBC_STATUS[1] == 0x80 && g_SBC_STATUS[3] == 0x01)
{
//正常上电
}
else
{
//异常复位
SmartEE_Read(0x400,reset_source_buf,20);
reset_source_buf[20] = g_SBC_STATUS[0];
reset_source_buf[21] = g_SBC_STATUS[1];
reset_source_buf[22] = g_SBC_STATUS[2];
reset_source_buf[23] = g_SBC_STATUS[3];
reset_source_buf[24] = g_SBC_STATUS[4];
SmartEE_Write(0x400,&reset_source_buf[5],20);
}
}
int main(void)