Commit 435ca6de authored by hu's avatar hu

Merge branch 'menutest' into withBoot_ENCN

parents 54509772 fa5f01c5
...@@ -146,7 +146,7 @@ void Speed_Processing_Service(void) ...@@ -146,7 +146,7 @@ void Speed_Processing_Service(void)
{ {
Vehicle_ACT_Speed = 1400u; Vehicle_ACT_Speed = 1400u;
} }
else if (VehValCup <= 40u) else if (VehValCup <= 30u)
{ {
Vehicle_ACT_Speed = 0u; Vehicle_ACT_Speed = 0u;
} }
......
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
static uint8_t PowerGetNMStatus(void); static uint8_t PowerGetNMStatus(void);
extern void SEG_LCD_Window_Switch(uint8_t Sw); extern void SEG_LCD_Window_Switch(uint8_t Sw);
extern void DelayUs(uint32_t time); extern void DelayUs(uint32_t time);
extern void Sys_KL30_Init(void);
extern void Sys_Wakeup_Init(void);
Power_Status_t Power_KL30_Init ( void ) Power_Status_t Power_KL30_Init ( void )
{ {
...@@ -311,7 +313,8 @@ Power_Status_t Power_Stay_ON(void) ...@@ -311,7 +313,8 @@ Power_Status_t Power_Stay_ON(void)
u8PowerSts = m_IGN_ON; u8PowerSts = m_IGN_ON;
} }
} }
if (((u8Condition3 == 1u) || (u8Condition3 >= 7u))) //if (((u8Condition3 == 1u) || (u8Condition3 >= 7u)))
if (SYS_OPR_STAT_HALT)
{ {
u8PowerSts = m_IGN_LIMIT; u8PowerSts = m_IGN_LIMIT;
} }
......
#include "System_Monitor.h" #include "System_Monitor.h"
#define Base_Vol 0u typedef struct
{
#define ENTER_LOW_N_RANGE 6500U monitorlib_uint8_t SumCnt;
#define EXIT_LOW_N_RANGE 7000U monitorlib_uint16_t DebounceTimer;
monitorlib_uint32_t ActVoltage;
#define ENTER_LOW_Y_RANGE 9000U monitorlib_uint8_t FinalSts;
#define EXIT_LOW_Y_RANGE 9500U monitorlib_uint8_t ActSts;
} MonitorStruct;
#define EXIT_HIGH_Y_RANGE 26000U
MonitorStruct SysFun_KL30Monitor;
#define ENTER_HIGH_Y_RANGE 26500U MonitorStruct SysFun_KL15Monitor;
#define EXIT_HIGH_N_RANGE 28500U MonitorStruct SysNM_KL30Monitor;
MonitorStruct SysNM_KL15Monitor;
#define ENTER_HIGH_N_RANGE 29000U
#define Base_Vol 0u
#define Top_Vol 0xffffu #define ENTER_LOW_N_RANGE 6500U
#define EXIT_LOW_N_RANGE 7000U
MonitorStruct SysFun_KL30Monitor;
MonitorStruct SysFun_KL15Monitor; #define ENTER_LOW_Y_RANGE 9000U
#define EXIT_LOW_Y_RANGE 9500U
MonitorStruct SysNM_KL30Monitor;
MonitorStruct SysNM_KL15Monitor; #define EXIT_HIGH_Y_RANGE 26000U
uint8_t SysWakeUpMode = 0u; #define ENTER_HIGH_Y_RANGE 26500U
static uint8_t SetVolFlag = 0u;
#define EXIT_HIGH_N_RANGE 28500U
static uint16_t t_NM_KL30_Debounce;
static uint16_t t_NM_KL15_Debounce; #define ENTER_HIGH_N_RANGE 29000U
static uint16_t t_FUN_KL30_Debounce;
static uint16_t t_FUN_KL15_Debounce; #define Top_Vol 0xffffu
static uint16_t FUNSysVol_Range[10u] = static monitorlib_uint8_t System_Calc_NMRange(monitorlib_uint16_t u16Vol);
{ static monitorlib_uint8_t System_Calc_FunRange(monitorlib_uint16_t u16Vol);
Base_Vol,
ENTER_LOW_N_RANGE, static void System_Fast_WakeUp(void);
EXIT_LOW_N_RANGE, static void System_Fun_Process(void);
ENTER_LOW_Y_RANGE, static void System_NM_Process(void);
EXIT_LOW_Y_RANGE,
EXIT_HIGH_Y_RANGE, MonitorExt_st pfunction;
ENTER_HIGH_Y_RANGE,
EXIT_HIGH_N_RANGE, monitorlib_uint8_t SysWakeUpMode = 0u;
ENTER_HIGH_N_RANGE, monitorlib_uint8_t SetVolFlag = 0u;
Top_Vol,
}; monitorlib_uint16_t FUNSysVol_Range [ 10u ] =
{
static uint16_t NMSysVol_Range[10u] = Base_Vol,
{ ENTER_LOW_N_RANGE,
Base_Vol, EXIT_LOW_N_RANGE,
ENTER_LOW_N_RANGE, ENTER_LOW_Y_RANGE,
EXIT_LOW_N_RANGE, EXIT_LOW_Y_RANGE,
ENTER_LOW_Y_RANGE, EXIT_HIGH_Y_RANGE,
EXIT_LOW_Y_RANGE, ENTER_HIGH_Y_RANGE,
EXIT_HIGH_Y_RANGE, EXIT_HIGH_N_RANGE,
ENTER_HIGH_Y_RANGE, ENTER_HIGH_N_RANGE,
EXIT_HIGH_N_RANGE, Top_Vol,
ENTER_HIGH_N_RANGE, };
Top_Vol,
}; monitorlib_uint16_t NMSysVol_Range [ 10u ] =
{
uint8_t Read_KL30_ConvertFinish(void) Base_Vol,
{ ENTER_LOW_N_RANGE,
return SysWakeUpMode; EXIT_LOW_N_RANGE,
} ENTER_LOW_Y_RANGE,
EXIT_LOW_Y_RANGE,
static uint8_t System_Calc_FunRange(uint16_t u16Vol) EXIT_HIGH_Y_RANGE,
{ ENTER_HIGH_Y_RANGE,
uint8_t i; EXIT_HIGH_N_RANGE,
for (i = 0u; i < (sizeof(FUNSysVol_Range) / sizeof(FUNSysVol_Range[0])); i++) ENTER_HIGH_N_RANGE,
{ Top_Vol,
if (u16Vol < FUNSysVol_Range[i]) };
{
break; monitorlib_uint16_t t_FUN_KL30_Debounce;
} monitorlib_uint16_t t_FUN_KL15_Debounce;
} monitorlib_uint16_t t_NM_KL30_Debounce;
return i; monitorlib_uint16_t t_NM_KL15_Debounce;
} monitorlib_uint16_t t_NM_KL30_Debounce_Cancel;
monitorlib_uint16_t t_NM_KL15_Debounce_Cancel;
static uint8_t System_Calc_NMRange(uint16_t u16Vol) monitorlib_uint16_t t_FUN_KL30_Debounce_Cancel;
{ monitorlib_uint16_t t_FUN_KL15_Debounce_Cancel;
uint8_t i;
for (i = 0u; i < (sizeof(NMSysVol_Range) / sizeof(NMSysVol_Range[0])); i++) monitorlib_uint16_t t_NM_KL30_timer;
{ monitorlib_uint16_t t_FUN_KL30_timer;
if (u16Vol < NMSysVol_Range[i])
{ monitorlib_uint8_t Read_KL30_ConvertFinish(void)
break; {
} return SysWakeUpMode;
} }
return i;
} static monitorlib_uint8_t System_Calc_FunRange(monitorlib_uint16_t u16Vol)
{
void Sys_Set_VolRange(const uint16_t FUN_Vol[], const uint16_t NM_Vol[]) monitorlib_uint8_t i;
{ for ( i = 0u; i < (sizeof(FUNSysVol_Range) / sizeof(FUNSysVol_Range [ 0 ])); i++ )
FUNSysVol_Range[0] = FUN_Vol[0]; {
FUNSysVol_Range[1] = FUN_Vol[1]; if ( u16Vol < FUNSysVol_Range [ i ] )
FUNSysVol_Range[2] = FUN_Vol[2]; {
FUNSysVol_Range[3] = FUN_Vol[3]; break;
FUNSysVol_Range[4] = FUN_Vol[4]; }
FUNSysVol_Range[5] = FUN_Vol[5]; }
FUNSysVol_Range[6] = FUN_Vol[6]; return i;
FUNSysVol_Range[7] = FUN_Vol[7]; }
FUNSysVol_Range[8] = FUN_Vol[8];
FUNSysVol_Range[9] = FUN_Vol[9]; static monitorlib_uint8_t System_Calc_NMRange(monitorlib_uint16_t u16Vol)
{
NMSysVol_Range[0] = NM_Vol[0]; monitorlib_uint8_t i;
NMSysVol_Range[1] = NM_Vol[1]; for ( i = 0u; i < (sizeof(NMSysVol_Range) / sizeof(NMSysVol_Range [ 0 ])); i++ )
NMSysVol_Range[2] = NM_Vol[2]; {
NMSysVol_Range[3] = NM_Vol[3]; if ( u16Vol < NMSysVol_Range [ i ] )
NMSysVol_Range[4] = NM_Vol[4]; {
NMSysVol_Range[5] = NM_Vol[5]; break;
NMSysVol_Range[6] = NM_Vol[6]; }
NMSysVol_Range[7] = NM_Vol[7]; }
NMSysVol_Range[8] = NM_Vol[8]; return i;
NMSysVol_Range[9] = NM_Vol[9]; }
SetVolFlag = 0x55u;
} void Sys_Set_Pata(const monitorlib_uint16_t FUN_Vol [], MonitorExt_st *pfunc)
{
void Sys_Set_DebounceTimer(uint16_t u16NMKL30, uint16_t u16NMKL15, uint16_t u16FUNKL30, uint16_t u16FUNKL15) FUNSysVol_Range [ 0 ] = FUN_Vol [ 0 ];
{ FUNSysVol_Range [ 1 ] = FUN_Vol [ 1 ];
t_NM_KL30_Debounce = u16NMKL30; FUNSysVol_Range [ 2 ] = FUN_Vol [ 2 ];
t_NM_KL15_Debounce = u16NMKL15; FUNSysVol_Range [ 3 ] = FUN_Vol [ 3 ];
t_FUN_KL30_Debounce = u16FUNKL30; FUNSysVol_Range [ 4 ] = FUN_Vol [ 4 ];
t_FUN_KL15_Debounce = u16FUNKL15; FUNSysVol_Range [ 5 ] = FUN_Vol [ 5 ];
} FUNSysVol_Range [ 6 ] = FUN_Vol [ 6 ];
FUNSysVol_Range [ 7 ] = FUN_Vol [ 7 ];
void System_Monitor_KL30Init(void) FUNSysVol_Range [ 8 ] = FUN_Vol [ 8 ];
{ FUNSysVol_Range [ 9 ] = FUN_Vol [ 9 ];
SysWakeUpMode = 0u;
SysFun_KL30Monitor.SumCnt = 0u; t_FUN_KL30_Debounce = FUN_Vol [ 10 ];
SysFun_KL30Monitor.DebounceTimer = 0u; t_FUN_KL15_Debounce = FUN_Vol [ 11 ];
SysFun_KL30Monitor.ActVoltage = 0u;
SysFun_KL30Monitor.FinalSts = 0u; NMSysVol_Range [ 0 ] = FUN_Vol [ 12 ];
SysFun_KL30Monitor.ActSts = 0u; NMSysVol_Range [ 1 ] = FUN_Vol [ 13 ];
NMSysVol_Range [ 2 ] = FUN_Vol [ 14 ];
SysFun_KL15Monitor.SumCnt = 0u; NMSysVol_Range [ 3 ] = FUN_Vol [ 15 ];
SysFun_KL15Monitor.DebounceTimer = 0u; NMSysVol_Range [ 4 ] = FUN_Vol [ 16 ];
SysFun_KL15Monitor.ActVoltage = 0u; NMSysVol_Range [ 5 ] = FUN_Vol [ 17 ];
SysFun_KL15Monitor.FinalSts = 0u; NMSysVol_Range [ 6 ] = FUN_Vol [ 18 ];
SysFun_KL15Monitor.ActSts = 0u; NMSysVol_Range [ 7 ] = FUN_Vol [ 19 ];
NMSysVol_Range [ 8 ] = FUN_Vol [ 20 ];
SysNM_KL30Monitor.SumCnt = 0u; NMSysVol_Range [ 9 ] = FUN_Vol [ 21 ];
SysNM_KL30Monitor.DebounceTimer = 0u;
SysNM_KL30Monitor.ActVoltage = 0u; t_NM_KL30_Debounce = FUN_Vol [ 22 ];
SysNM_KL30Monitor.FinalSts = 0u; t_NM_KL15_Debounce = FUN_Vol [ 23 ];
SysNM_KL30Monitor.ActSts = 0u;
t_NM_KL30_Debounce_Cancel = FUN_Vol [ 24 ];
SysNM_KL15Monitor.SumCnt = 0u; t_FUN_KL30_Debounce_Cancel = FUN_Vol [ 25 ];
SysNM_KL15Monitor.DebounceTimer = 0u;
SysNM_KL15Monitor.ActVoltage = 0u; pfunction.SysGet_KL30_Valid = pfunc->SysGet_KL30_Valid;
SysNM_KL15Monitor.FinalSts = 0u; pfunction.SysGet_KL15_Valid = pfunc->SysGet_KL15_Valid;
SysNM_KL15Monitor.ActSts = 0u; pfunction.SysGet_KL30_value_Force = pfunc->SysGet_KL30_value_Force;
pfunction.SysGet_KL15_value_Force = pfunc->SysGet_KL15_value_Force;
if (t_NM_KL30_Debounce == 0U) pfunction.SysGet_KL30_value = pfunc->SysGet_KL30_value;
{ pfunction.SysGet_KL15_value = pfunc->SysGet_KL15_value;
t_NM_KL30_Debounce = 1000u; pfunction.SysGet_KL15Line = pfunc->SysGet_KL15Line;
} pfunction.COM_Delay = pfunc->COM_Delay;
if (t_NM_KL15_Debounce == 0U) pfunction.SysMonitorLogic = pfunc->SysMonitorLogic;
{
t_NM_KL15_Debounce = 2u; SetVolFlag = 0x55u;
} }
if (t_FUN_KL30_Debounce == 0U)
{ void System_Monitor_KL30Init(void)
t_FUN_KL30_Debounce = 1000u; {
} SysWakeUpMode = 0u;
if (t_FUN_KL15_Debounce == 0U) SysFun_KL30Monitor.SumCnt = 0u;
{ SysFun_KL30Monitor.DebounceTimer = 0u;
t_FUN_KL15_Debounce = 2u; SysFun_KL30Monitor.ActVoltage = 0u;
} SysFun_KL30Monitor.FinalSts = 0u;
SysFun_KL30Monitor.ActSts = 0u;
if (SetVolFlag != 0x55u)
{ SysFun_KL15Monitor.SumCnt = 0u;
FUNSysVol_Range[0] = Base_Vol; SysFun_KL15Monitor.DebounceTimer = 0u;
FUNSysVol_Range[1] = ENTER_LOW_N_RANGE; SysFun_KL15Monitor.ActVoltage = 0u;
FUNSysVol_Range[2] = EXIT_LOW_N_RANGE; SysFun_KL15Monitor.FinalSts = 0u;
FUNSysVol_Range[3] = ENTER_LOW_Y_RANGE; SysFun_KL15Monitor.ActSts = 0u;
FUNSysVol_Range[4] = EXIT_LOW_Y_RANGE;
FUNSysVol_Range[5] = EXIT_HIGH_Y_RANGE; SysNM_KL30Monitor.SumCnt = 0u;
FUNSysVol_Range[6] = ENTER_HIGH_Y_RANGE; SysNM_KL30Monitor.DebounceTimer = 0u;
FUNSysVol_Range[7] = EXIT_HIGH_N_RANGE; SysNM_KL30Monitor.ActVoltage = 0u;
FUNSysVol_Range[8] = ENTER_HIGH_N_RANGE; SysNM_KL30Monitor.FinalSts = 0u;
FUNSysVol_Range[9] = Top_Vol; SysNM_KL30Monitor.ActSts = 0u;
NMSysVol_Range[0] = Base_Vol; SysNM_KL15Monitor.SumCnt = 0u;
NMSysVol_Range[1] = ENTER_LOW_N_RANGE; SysNM_KL15Monitor.DebounceTimer = 0u;
NMSysVol_Range[2] = EXIT_LOW_N_RANGE; SysNM_KL15Monitor.ActVoltage = 0u;
NMSysVol_Range[3] = ENTER_LOW_Y_RANGE; SysNM_KL15Monitor.FinalSts = 0u;
NMSysVol_Range[4] = EXIT_LOW_Y_RANGE; SysNM_KL15Monitor.ActSts = 0u;
NMSysVol_Range[5] = EXIT_HIGH_Y_RANGE;
NMSysVol_Range[6] = ENTER_HIGH_Y_RANGE; if ( SetVolFlag != 0x55u )
NMSysVol_Range[7] = EXIT_HIGH_N_RANGE; {
NMSysVol_Range[8] = ENTER_HIGH_N_RANGE; t_NM_KL30_Debounce = 1000u;
NMSysVol_Range[9] = Top_Vol; t_NM_KL15_Debounce = 2u;
SetVolFlag = 0x55u; t_FUN_KL30_Debounce = 1000u;
} t_FUN_KL15_Debounce = 2u;
}
t_NM_KL30_Debounce_Cancel = 1000U;
void System_Monitor_WakeupInit(void) t_NM_KL15_Debounce_Cancel = 2U;
{ t_FUN_KL30_Debounce_Cancel = 1000U;
SysWakeUpMode = 0u; t_FUN_KL15_Debounce_Cancel = 2U;
SysFun_KL30Monitor.SumCnt = 0u;
SysFun_KL30Monitor.DebounceTimer = 0u; FUNSysVol_Range [ 0 ] = Base_Vol;
SysFun_KL30Monitor.ActVoltage = 0u; FUNSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
SysFun_KL30Monitor.FinalSts = 0u; FUNSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
SysFun_KL30Monitor.ActSts = 0u; FUNSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
FUNSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
SysFun_KL15Monitor.SumCnt = 0u; FUNSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
SysFun_KL15Monitor.DebounceTimer = 0u; FUNSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
SysFun_KL15Monitor.ActVoltage = 0u; FUNSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
SysFun_KL15Monitor.FinalSts = 0u; FUNSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
SysFun_KL15Monitor.ActSts = 0u; FUNSysVol_Range [ 9 ] = Top_Vol;
SysNM_KL30Monitor.SumCnt = 0u; NMSysVol_Range [ 0 ] = Base_Vol;
SysNM_KL30Monitor.DebounceTimer = 0u; NMSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
SysNM_KL30Monitor.ActVoltage = 0u; NMSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
SysNM_KL30Monitor.FinalSts = 0u; NMSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
SysNM_KL30Monitor.ActSts = 0u; NMSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
NMSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
SysNM_KL15Monitor.SumCnt = 0u; NMSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
SysNM_KL15Monitor.DebounceTimer = 0u; NMSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
SysNM_KL15Monitor.ActVoltage = 0u; NMSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
SysNM_KL15Monitor.FinalSts = 0u; NMSysVol_Range [ 9 ] = Top_Vol;
SysNM_KL15Monitor.ActSts = 0u; SetVolFlag = 0x55u;
}
if (t_NM_KL30_Debounce == 0U) if ( pfunction.COM_Delay != (( void * )0) )
{ {
t_NM_KL30_Debounce = 1000u; pfunction.COM_Delay(260U);
} }
if (t_NM_KL15_Debounce == 0U) System_Fast_WakeUp( );
{ }
t_NM_KL15_Debounce = 2u;
} void System_Monitor_WakeupInit(void)
if (t_FUN_KL30_Debounce == 0U) {
{ SysWakeUpMode = 0u;
t_FUN_KL30_Debounce = 1000u; SysFun_KL30Monitor.SumCnt = 0u;
} SysFun_KL30Monitor.DebounceTimer = 0u;
if (t_FUN_KL15_Debounce == 0U) SysFun_KL30Monitor.ActVoltage = 0u;
{ SysFun_KL30Monitor.FinalSts = 0u;
t_FUN_KL15_Debounce = 2u; SysFun_KL30Monitor.ActSts = 0u;
}
SysFun_KL15Monitor.SumCnt = 0u;
if (SetVolFlag != 0x55u) SysFun_KL15Monitor.DebounceTimer = 0u;
{ SysFun_KL15Monitor.ActVoltage = 0u;
FUNSysVol_Range[0] = Base_Vol; SysFun_KL15Monitor.FinalSts = 0u;
FUNSysVol_Range[1] = ENTER_LOW_N_RANGE; SysFun_KL15Monitor.ActSts = 0u;
FUNSysVol_Range[2] = EXIT_LOW_N_RANGE;
FUNSysVol_Range[3] = ENTER_LOW_Y_RANGE; SysNM_KL30Monitor.SumCnt = 0u;
FUNSysVol_Range[4] = EXIT_LOW_Y_RANGE; SysNM_KL30Monitor.DebounceTimer = 0u;
FUNSysVol_Range[5] = EXIT_HIGH_Y_RANGE; SysNM_KL30Monitor.ActVoltage = 0u;
FUNSysVol_Range[6] = ENTER_HIGH_Y_RANGE; SysNM_KL30Monitor.FinalSts = 0u;
FUNSysVol_Range[7] = EXIT_HIGH_N_RANGE; SysNM_KL30Monitor.ActSts = 0u;
FUNSysVol_Range[8] = ENTER_HIGH_N_RANGE;
FUNSysVol_Range[9] = Top_Vol; SysNM_KL15Monitor.SumCnt = 0u;
SysNM_KL15Monitor.DebounceTimer = 0u;
NMSysVol_Range[0] = Base_Vol; SysNM_KL15Monitor.ActVoltage = 0u;
NMSysVol_Range[1] = ENTER_LOW_N_RANGE; SysNM_KL15Monitor.FinalSts = 0u;
NMSysVol_Range[2] = EXIT_LOW_N_RANGE; SysNM_KL15Monitor.ActSts = 0u;
NMSysVol_Range[3] = ENTER_LOW_Y_RANGE;
NMSysVol_Range[4] = EXIT_LOW_Y_RANGE; if ( SetVolFlag != 0x55u )
NMSysVol_Range[5] = EXIT_HIGH_Y_RANGE; {
NMSysVol_Range[6] = ENTER_HIGH_Y_RANGE; t_NM_KL30_Debounce = 1000u;
NMSysVol_Range[7] = EXIT_HIGH_N_RANGE; t_NM_KL15_Debounce = 2u;
NMSysVol_Range[8] = ENTER_HIGH_N_RANGE; t_FUN_KL30_Debounce = 1000u;
NMSysVol_Range[9] = Top_Vol; t_FUN_KL15_Debounce = 2u;
SetVolFlag = 0x55u;
} t_NM_KL30_Debounce_Cancel = 1000U;
} t_NM_KL15_Debounce_Cancel = 2U;
t_FUN_KL30_Debounce_Cancel = 1000U;
void Sys_Status_Update_Service(void) t_FUN_KL15_Debounce_Cancel = 2U;
{ FUNSysVol_Range [ 0 ] = Base_Vol;
System_Fun_Process(); FUNSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
System_NM_Process(); FUNSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
Sys_LogicProcess(); FUNSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
} FUNSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
FUNSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
void System_Fast_WakeUp(void) FUNSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
{ FUNSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
uint16_t KL30_Voltage = 0U; FUNSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
uint16_t KL15_Voltage = 0U; FUNSysVol_Range [ 9 ] = Top_Vol;
uint8_t KL30_Valid = 0U;
uint8_t KL15_Valid = 0U; NMSysVol_Range [ 0 ] = Base_Vol;
uint16_t Voltage = 0U; NMSysVol_Range [ 1 ] = ENTER_LOW_N_RANGE;
uint8_t NormalKL30Cnt = 0U; NMSysVol_Range [ 2 ] = EXIT_LOW_N_RANGE;
uint8_t abnormalKL30Cnt = 0U; NMSysVol_Range [ 3 ] = ENTER_LOW_Y_RANGE;
uint8_t AttemptCnt = 0U; NMSysVol_Range [ 4 ] = EXIT_LOW_Y_RANGE;
NMSysVol_Range [ 5 ] = EXIT_HIGH_Y_RANGE;
AttemptCnt = 0u; NMSysVol_Range [ 6 ] = ENTER_HIGH_Y_RANGE;
KL30_Voltage = Sys_Force_Read_KL30_Voltage(); NMSysVol_Range [ 7 ] = EXIT_HIGH_N_RANGE;
KL15_Voltage = Sys_Force_Read_KL15_Voltage(); NMSysVol_Range [ 8 ] = ENTER_HIGH_N_RANGE;
while (SysNM_KL30Monitor.FinalSts == 0u) NMSysVol_Range [ 9 ] = Top_Vol;
{ SetVolFlag = 0x55u;
{ }
/*KL30 KL15电压采集*/ System_Fast_WakeUp( );
KL30_Voltage = Sys_Force_Read_KL30_Voltage(); }
KL15_Voltage = Sys_Force_Read_KL15_Voltage();
if (KL30_Voltage > KL15_Voltage) void Sys_Status_Update_Service(void)
{ {
Voltage = KL30_Voltage; System_Fun_Process( );
} System_NM_Process( );
else if ( pfunction.SysMonitorLogic != (( void * )0) )
{ {
Voltage = KL15_Voltage; pfunction.SysMonitorLogic( );
} }
}
if ((Voltage <= FUNSysVol_Range[1]) || (Voltage >= FUNSysVol_Range[8]))
{ static void System_Fast_WakeUp(void)
NormalKL30Cnt = 0U; {
abnormalKL30Cnt++; monitorlib_uint16_t KL30_Voltage;
} monitorlib_uint16_t KL15_Voltage;
else monitorlib_uint16_t Voltage;
{ monitorlib_uint8_t NormalKL30Cnt = 0U;
NormalKL30Cnt++; monitorlib_uint8_t abnormalKL30Cnt = 0U;
abnormalKL30Cnt = 0U; monitorlib_uint8_t AttemptCnt = 0U;
}
AttemptCnt = 0u;
/*消抖次数设置*/ while ( SysNM_KL30Monitor.FinalSts == 0u )
if (NormalKL30Cnt >= 5U) {
{ if ( pfunction.COM_Delay != (( void * )0) )
SysNM_KL30Monitor.FinalSts = 5u; {
} pfunction.COM_Delay(2U);
if (abnormalKL30Cnt >= 5U) }
{ /*KL30 KL15 voltage */
/*设置成HALT模式*/ if ( pfunction.SysGet_KL30_value_Force != ( void * )0 )
SysNM_KL30Monitor.FinalSts = 9u; {
} KL30_Voltage = pfunction.SysGet_KL30_value_Force( );
} }
Sys_BlockDelay(20U); /*1*50us*/ else
AttemptCnt++; {
if (AttemptCnt >= 100u) KL30_Voltage = 0u;
{ }
break; if ( pfunction.SysGet_KL15_value_Force != ( void * )0 )
} {
} KL15_Voltage = pfunction.SysGet_KL15_value_Force( );
}
/*KL15 KL30采集结束,切换模式*/ else
if ((SysNM_KL30Monitor.FinalSts != 0u)) {
{ KL15_Voltage = 0u;
/*切换模式*/ }
SysWakeUpMode = 0x55U; if ( KL30_Voltage > KL15_Voltage )
SysNM_KL15Monitor.FinalSts = System_LINE_KL15(); {
SysNM_KL15Monitor.ActSts = System_LINE_KL15(); Voltage = KL30_Voltage;
SysFun_KL30Monitor.FinalSts = SysNM_KL30Monitor.FinalSts; }
SysFun_KL15Monitor.FinalSts = SysNM_KL15Monitor.ActSts; else
/*发送唤醒状态*/ {
Sys_LogicProcess(); Voltage = KL15_Voltage;
} }
}
if ( (Voltage <= NMSysVol_Range [ 2 ]) || (Voltage >= NMSysVol_Range [ 7 ]) )
static void System_NM_Process(void) {
{ NormalKL30Cnt = 0U;
uint8_t m8; abnormalKL30Cnt++;
static uint16_t DebpounceTimer; }
uint16_t Voltage; else
uint8_t VoltageKL30Valid; {
uint8_t VoltageKL15Valid; NormalKL30Cnt++;
uint16_t Voltage_KL15; abnormalKL30Cnt = 0U;
uint16_t Voltage_KL30; }
AttemptCnt++;
if (SysNM_KL15Monitor.ActSts != SysNM_KL15Monitor.FinalSts) if ( AttemptCnt >= 10u )
{ {
SysNM_KL15Monitor.DebounceTimer++; break;
if (SysNM_KL15Monitor.DebounceTimer >= t_NM_KL15_Debounce) }
{ if ( NormalKL30Cnt >= 5U )
SysNM_KL15Monitor.FinalSts = System_LINE_KL15(); {
SysNM_KL15Monitor.DebounceTimer = 0u; SysNM_KL30Monitor.FinalSts = 5u;
} }
} if ( abnormalKL30Cnt >= 5U )
else {
{ SysNM_KL30Monitor.FinalSts = 9u;
SysNM_KL15Monitor.DebounceTimer = 0u; }
SysNM_KL15Monitor.ActSts = System_LINE_KL15(); }
}
if ( (SysNM_KL30Monitor.FinalSts != 0u) )
VoltageKL30Valid = Sys_Read_KL30_Valid(); {
VoltageKL15Valid = Sys_Read_KL15_Valid();
SysWakeUpMode = 0x55U;
if ((VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U)) if ( pfunction.SysGet_KL15Line != (( void * )0) )
{ {
Voltage_KL15 = Sys_Read_KL15_Voltage(); SysNM_KL15Monitor.FinalSts = pfunction.SysGet_KL15Line( );
Voltage_KL30 = Sys_Read_KL30_Voltage(); SysNM_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
if (Voltage_KL30 > Voltage_KL15) }
{ else
Voltage = Voltage_KL30; {
} SysNM_KL15Monitor.FinalSts = 0u;
else SysNM_KL15Monitor.ActSts = 0u;
{ }
Voltage = Voltage_KL15;
}
if (SysNM_KL30Monitor.SumCnt < 50u) if ( pfunction.SysMonitorLogic != ( void * )0 )
{ {
SysNM_KL30Monitor.ActVoltage += Voltage; pfunction.SysMonitorLogic( );
SysNM_KL30Monitor.SumCnt += 1u; }
Voltage = (uint16_t)(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt); }
} }
else
{ static void System_NM_Process(void)
SysNM_KL30Monitor.SumCnt = 0u; {
SysNM_KL30Monitor.ActVoltage = 0u; monitorlib_uint8_t m8;
SysNM_KL30Monitor.ActVoltage += Voltage; static monitorlib_uint16_t DebpounceTimer;
SysNM_KL30Monitor.SumCnt += 1u; monitorlib_uint16_t Voltage;
Voltage = (uint16_t)(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt); monitorlib_uint8_t VoltageKL30Valid;
} monitorlib_uint8_t VoltageKL15Valid;
monitorlib_uint16_t Voltage_KL15;
m8 = System_Calc_NMRange(Voltage); monitorlib_uint16_t Voltage_KL30;
if (SysNM_KL30Monitor.ActSts == m8)
{ if ( pfunction.SysGet_KL15Line != (( void * )0) )
SysNM_KL30Monitor.DebounceTimer++; {
if ( SysNM_KL15Monitor.ActSts == pfunction.SysGet_KL15Line( ) )
/*计时累计时间1000*2ms*/ {
if (SysNM_KL30Monitor.DebounceTimer >= t_NM_KL30_Debounce) if ( SysNM_KL15Monitor.DebounceTimer < t_NM_KL15_Debounce )
{ {
SysNM_KL30Monitor.DebounceTimer = 0U; SysNM_KL15Monitor.DebounceTimer++;
DebpounceTimer = 0u; }
if (SysNM_KL30Monitor.FinalSts == 9u) /* 高压 */ else
{ {
if ((m8 == 9u) || (m8 == 8u)) SysNM_KL15Monitor.FinalSts = SysNM_KL15Monitor.ActSts;
{ }
SysNM_KL30Monitor.FinalSts = 9u; }
} else
else {
{ SysNM_KL15Monitor.DebounceTimer = 0u;
SysNM_KL30Monitor.FinalSts = m8; SysNM_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
} }
} }
if (SysNM_KL30Monitor.FinalSts == 1u) /* 低压 */ else
{ {
if ((m8 == 1u) || (m8 == 2u)) SysNM_KL15Monitor.FinalSts = 0u;
{ SysNM_KL15Monitor.ActSts = 0u;
SysNM_KL30Monitor.FinalSts = 1u; SysNM_KL15Monitor.DebounceTimer = 0u;
} }
else
{ if ( pfunction.SysGet_KL30_Valid != ( void * )0 )
SysNM_KL30Monitor.FinalSts = m8; {
} VoltageKL30Valid = pfunction.SysGet_KL30_Valid( );
} }
/*非高低压*/ else
if ((SysNM_KL30Monitor.FinalSts != 1u) && (SysNM_KL30Monitor.FinalSts != 9u)) {
{ VoltageKL30Valid = 0u;
SysNM_KL30Monitor.FinalSts = m8; }
}
} if ( pfunction.SysGet_KL15_Valid != ( void * )0 )
} {
else VoltageKL15Valid = pfunction.SysGet_KL15_Valid( );
{ }
/*计时时间清除*/ else
SysNM_KL30Monitor.DebounceTimer = 0U; {
DebpounceTimer++; VoltageKL15Valid = 0u;
if (DebpounceTimer >= 5u) }
{
DebpounceTimer = 0u; if ( (VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U) )
SysNM_KL30Monitor.ActSts = m8; {
} if ( pfunction.SysGet_KL15_value != (( void * )0) )
} {
} Voltage_KL15 = pfunction.SysGet_KL15_value( );
} }
else
static void System_Fun_Process(void) {
{ Voltage_KL15 = 0u;
uint8_t m8; }
uint8_t VoltageKL30Valid;
uint8_t VoltageKL15Valid; if ( pfunction.SysGet_KL15_value != (( void * )0) )
uint16_t Voltage; {
uint16_t Voltage_KL15; Voltage_KL30 = pfunction.SysGet_KL30_value( );
uint16_t Voltage_KL30; }
static uint16_t DebpounceTimer; else
{
if (SysFun_KL15Monitor.ActSts != SysFun_KL15Monitor.FinalSts) Voltage_KL30 = 0u;
{ }
SysFun_KL15Monitor.DebounceTimer++;
if (SysFun_KL15Monitor.DebounceTimer >= t_FUN_KL15_Debounce) if ( Voltage_KL30 > Voltage_KL15 )
{ {
SysFun_KL15Monitor.FinalSts = System_LINE_KL15(); Voltage = Voltage_KL30;
SysFun_KL15Monitor.DebounceTimer = 0u; }
} else
} {
else Voltage = Voltage_KL15;
{ }
SysFun_KL15Monitor.DebounceTimer = 0u; if ( SysNM_KL30Monitor.SumCnt < 50u )
SysFun_KL15Monitor.ActSts = System_LINE_KL15(); {
} SysNM_KL30Monitor.ActVoltage += Voltage;
SysNM_KL30Monitor.SumCnt += 1u;
VoltageKL30Valid = Sys_Read_KL30_Valid(); Voltage = ( monitorlib_uint16_t )(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt);
VoltageKL15Valid = Sys_Read_KL15_Valid(); }
else
if ((VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U)) {
{ SysNM_KL30Monitor.SumCnt = 0u;
Voltage_KL15 = Sys_Read_KL15_Voltage(); SysNM_KL30Monitor.ActVoltage = 0u;
Voltage_KL30 = Sys_Read_KL30_Voltage(); SysNM_KL30Monitor.ActVoltage += Voltage;
if (Voltage_KL30 > Voltage_KL15) SysNM_KL30Monitor.SumCnt += 1u;
{ Voltage = ( monitorlib_uint16_t )(SysNM_KL30Monitor.ActVoltage / SysNM_KL30Monitor.SumCnt);
Voltage = Voltage_KL30; }
}
else m8 = System_Calc_NMRange(Voltage);
{ if ( SysNM_KL30Monitor.ActSts == m8 )
Voltage = Voltage_KL15; {
} switch ( SysNM_KL30Monitor.FinalSts )
if (SysFun_KL30Monitor.SumCnt < 50u) {
{ case 0:
SysFun_KL30Monitor.ActVoltage += Voltage; case 1:
SysFun_KL30Monitor.SumCnt += 1u; case 9:
Voltage = (uint16_t)(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt); t_NM_KL30_timer = t_NM_KL30_Debounce_Cancel;
} break;
else
{ default:
SysFun_KL30Monitor.SumCnt = 0u; t_NM_KL30_timer = t_NM_KL30_Debounce;
SysFun_KL30Monitor.ActVoltage = 0u; break;
SysFun_KL30Monitor.ActVoltage += Voltage; }
SysFun_KL30Monitor.SumCnt += 1u; if ( SysNM_KL30Monitor.DebounceTimer < t_NM_KL30_timer ) /*40202-8*/
Voltage = (uint16_t)(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt); {
} SysNM_KL30Monitor.DebounceTimer++;
}
m8 = System_Calc_FunRange(Voltage); else
{
if (SysFun_KL30Monitor.ActSts == m8) DebpounceTimer = 0u;
{ if ( SysNM_KL30Monitor.FinalSts == 9u ) /* 高压 */
SysFun_KL30Monitor.DebounceTimer++; {
DebpounceTimer = 0u; if ( (m8 == 9u) || (m8 == 8u) )
/*计时累计时间1000*2ms*/ {
if (SysFun_KL30Monitor.DebounceTimer >= t_FUN_KL30_Debounce) /*40202-8*/ SysNM_KL30Monitor.FinalSts = 9u; /** 维持不变 **/
{ }
SysFun_KL30Monitor.DebounceTimer = 0U; else
{
if (SysFun_KL30Monitor.FinalSts >= 7u) /* 高压 */ SysNM_KL30Monitor.FinalSts = m8; /**退出*/
{ }
if ((m8 == 9u) || (m8 == 8u) || (m8 == 7u)) }
{ if ( SysNM_KL30Monitor.FinalSts == 1u ) /* 低压 */
SysFun_KL30Monitor.FinalSts = 9u; {
SysFun_KL15Monitor.FinalSts = 0u; if ( (m8 == 1u) || (m8 == 2u) )
} {
else SysNM_KL30Monitor.FinalSts = 1u; /** 维持不变 */
{ }
SysFun_KL30Monitor.FinalSts = m8; else
} {
} SysNM_KL30Monitor.FinalSts = m8; /**退出*/
if (SysFun_KL30Monitor.FinalSts == 1u) /* 低压 */ }
{ }
if ((m8 == 1u) || (m8 == 2u)) /* 非高低压 */
{ if ( (SysNM_KL30Monitor.FinalSts != 1u) && (SysNM_KL30Monitor.FinalSts != 9u) )
SysFun_KL30Monitor.FinalSts = 1u; {
SysFun_KL15Monitor.FinalSts = 0u; SysNM_KL30Monitor.FinalSts = m8; /** 进入*/
} }
else }
{ }
SysFun_KL30Monitor.FinalSts = m8; else
} {
} /* 计时时间清除 */
/*非高低压*/ SysNM_KL30Monitor.DebounceTimer = 0U;
if ((SysFun_KL30Monitor.FinalSts != 1u) && (SysFun_KL30Monitor.FinalSts < 7u)) DebpounceTimer++;
{ if ( DebpounceTimer >= 5u )
SysFun_KL30Monitor.FinalSts = m8; {
} DebpounceTimer = 0u;
} SysNM_KL30Monitor.ActSts = m8;
} }
else }
{ }
/*计时时间清除*/ }
SysFun_KL30Monitor.DebounceTimer = 0U;
DebpounceTimer++; static void System_Fun_Process(void)
if (DebpounceTimer >= 5u) {
{ monitorlib_uint8_t m8;
DebpounceTimer = 0u; monitorlib_uint8_t VoltageKL30Valid;
SysFun_KL30Monitor.ActSts = m8; monitorlib_uint8_t VoltageKL15Valid;
} monitorlib_uint16_t Voltage;
} monitorlib_uint16_t Voltage_KL15;
} monitorlib_uint16_t Voltage_KL30;
/* static monitorlib_uint16_t DebpounceTimer;
else
{ if ( pfunction.SysGet_KL15Line != (( void * )0) )
SysFun_KL30Monitor.FinalSts = 1u; {
SysFun_KL15Monitor.FinalSts = 0u; if ( SysFun_KL15Monitor.ActSts == pfunction.SysGet_KL15Line( ) )
}*/ {
} if ( SysFun_KL15Monitor.DebounceTimer < t_FUN_KL15_Debounce )
{
uint8_t System_NM_KL30_Status_Get(void) SysFun_KL15Monitor.DebounceTimer++;
{ }
return SysNM_KL30Monitor.FinalSts; else
} {
uint8_t System_NM_KL15_Status_Get(void) SysFun_KL15Monitor.FinalSts = SysFun_KL15Monitor.ActSts;
{ }
return SysNM_KL15Monitor.FinalSts; }
} else
{
uint8_t System_FUN_KL30_Status_Get(void) SysFun_KL15Monitor.DebounceTimer = 0u;
{ SysFun_KL15Monitor.ActSts = pfunction.SysGet_KL15Line( );
return SysFun_KL30Monitor.FinalSts; }
} }
uint8_t System_FUN_KL15_Status_Get(void) else
{ {
return SysFun_KL15Monitor.FinalSts; SysFun_KL15Monitor.DebounceTimer = 0u;
} SysFun_KL15Monitor.FinalSts = 0u;
SysFun_KL15Monitor.ActSts = 0u;
}
if ( pfunction.SysGet_KL30_Valid != (( void * )0) )
{
VoltageKL30Valid = pfunction.SysGet_KL30_Valid( );
}
else
{
VoltageKL30Valid = 0u;
}
if ( pfunction.SysGet_KL15_Valid != (( void * )0) )
{
VoltageKL15Valid = pfunction.SysGet_KL15_Valid( );
}
else
{
VoltageKL15Valid = 0u;
}
if ( (VoltageKL30Valid == 1U) && (VoltageKL15Valid == 1U) )
{
if ( pfunction.SysGet_KL15_value != (( void * )0) )
{
Voltage_KL15 = pfunction.SysGet_KL15_value( );
}
else
{
Voltage_KL15 = 0u;
}
if ( pfunction.SysGet_KL30_value != (( void * )0) )
{
Voltage_KL30 = pfunction.SysGet_KL30_value( );
}
else
{
Voltage_KL30 = 0u;
}
if ( Voltage_KL30 > Voltage_KL15 )
{
Voltage = Voltage_KL30;
}
else
{
Voltage = Voltage_KL15;
}
if ( SysFun_KL30Monitor.SumCnt < 50u )
{
SysFun_KL30Monitor.ActVoltage += Voltage;
SysFun_KL30Monitor.SumCnt += 1u;
Voltage = ( monitorlib_uint16_t )(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt);
}
else
{
SysFun_KL30Monitor.SumCnt = 0u;
SysFun_KL30Monitor.ActVoltage = 0u;
SysFun_KL30Monitor.ActVoltage += Voltage;
SysFun_KL30Monitor.SumCnt += 1u;
Voltage = ( monitorlib_uint16_t )(SysFun_KL30Monitor.ActVoltage / SysFun_KL30Monitor.SumCnt);
}
m8 = System_Calc_FunRange(Voltage);
if ( SysFun_KL30Monitor.ActSts == m8 )
{
DebpounceTimer = 0u;
switch ( SysFun_KL30Monitor.FinalSts )
{
case 0:
case 1:
case 3:
case 7:
case 9:
t_FUN_KL30_timer = t_FUN_KL30_Debounce_Cancel;
break;
default:
t_FUN_KL30_timer = t_FUN_KL30_Debounce;
break;
}
/* 计时累计时间1000*2ms */
if ( SysFun_KL30Monitor.DebounceTimer < t_FUN_KL30_timer ) /*40202-8*/
{
SysFun_KL30Monitor.DebounceTimer++;
}
else
{
if ( SysFun_KL30Monitor.FinalSts > 7u ) /* 高压 */
{
if ( (m8 == 9u) || (m8 == 8u) || (m8 == 7u) )
{
SysFun_KL30Monitor.FinalSts = 9u;
SysFun_KL15Monitor.FinalSts = 0u;
}
else
{
SysFun_KL30Monitor.FinalSts = m8;
}
}
if ( SysFun_KL30Monitor.FinalSts == 1u ) /* 低压 */
{
if ( (m8 == 1u) || (m8 == 2u) )
{
SysFun_KL30Monitor.FinalSts = 1u;
SysFun_KL15Monitor.FinalSts = 0u;
}
else
{
SysFun_KL30Monitor.FinalSts = m8;
}
}
/* 非高低压 */
if ( (SysFun_KL30Monitor.FinalSts != 1u) && (SysFun_KL30Monitor.FinalSts <= 7u) )
{
SysFun_KL30Monitor.FinalSts = m8;
}
}
}
else
{
/* 计时时间清除 */
SysFun_KL30Monitor.DebounceTimer = 0U;
DebpounceTimer++;
if ( DebpounceTimer >= 5u )
{
DebpounceTimer = 0u;
SysFun_KL30Monitor.ActSts = m8;
}
}
}
/*
else
{
SysFun_KL30Monitor.FinalSts = 1u;
SysFun_KL15Monitor.FinalSts = 0u;
}*/
}
monitorlib_uint8_t System_NM_KL30_Status_Get(void)
{
return SysNM_KL30Monitor.FinalSts;
}
monitorlib_uint8_t System_NM_KL15_Status_Get(void)
{
return SysNM_KL15Monitor.FinalSts;
}
monitorlib_uint8_t System_FUN_KL30_Status_Get(void)
{
return SysFun_KL30Monitor.FinalSts;
}
monitorlib_uint8_t System_FUN_KL15_Status_Get(void)
{
return SysFun_KL15Monitor.FinalSts;
}
monitorlib_uint16_t Get_Sysmonitor_Version(void)
{
return 0x0002u;
}
#ifndef SYSTEM_MONITOR_H #ifndef SYSTEM__MONITOR__H
#define SYSTEM_MONITOR_H #define SYSTEM__MONITOR__H
#include "System_Monitor.h" /* #define Platform_16Bit
#include "TYW_stdint.h" #define Platform_32Bit*/
#ifdef Platform_16Bit
typedef struct #define monitorlib_uint8_t unsigned char
{ #define monitorlib_uint16_t unsigned int
uint8_t SumCnt; #define monitorlib_uint32_t unsigned long
uint16_t DebounceTimer;
uint32_t ActVoltage; #else
uint8_t FinalSts;
uint8_t ActSts; #define monitorlib_uint8_t unsigned char
} MonitorStruct; #define monitorlib_uint16_t unsigned short
#define monitorlib_uint32_t unsigned int
#define monitorlib_uint64_t unsigned long long
/* #endif
0 ----1st-------6500 不可运行 1
6500 ----2st-------7000 回差段 2 /*
0 ----1st-------6500 不可运行 1
7000 ----3st-------9000 低压段 3 6500 ----2st-------7000 回差段 2
9000 ----4st-------9500 回差段 4
9500-----5st------16000 正常段 5 7000 ----3st-------9000 低压段 3
16000----6st------16500 回差段 6 9000 ----4st-------9500 回差段 4
9500-----5st------16000 正常段 5
16500----7st------18000 高压段 7 16000----6st------16500 回差段 6
18000----8st------18500 回差段 8
18500----9st------65535 高压段 9 16500----7st------18000 高压段 7
18000----8st------18500 回差段 8
0-----6.5 不可运行--ALL----------限制 18500----9st------65535 高压段 9
6.5-----9 除电机外均可运行--------正常
9-----16.5 均可运行---------------正常 0-----6.5 不可运行--ALL----------限制
16.5-----18.5 只有CAN可运行----------限制 6.5-----9 除电机外均可运行--------正常
18.8-----65535 不可运行--ALL----------限制 9-----16.5 均可运行---------------正常
16.5-----18.5 只有CAN可运行----------限制
6.5-18.5 CAN 可运行区间 18.8-----65535 不可运行--ALL----------限制
*/ 6.5-18.5 CAN 可运行区间
*/
typedef monitorlib_uint8_t (*Get_Voltage_Vaild)(void);
/*电源运行状态*/ typedef monitorlib_uint16_t (*Get_Voltage_Value)(void);
#define SYS_OPR_STAT_RUN ((System_FUN_KL30_Status_Get() > 1u)&&(System_FUN_KL30_Status_Get() < 7u )) typedef monitorlib_uint8_t (*Get_LineInStatus)(void);
#define SYS_OPR_STAT_HALT ((System_FUN_KL30_Status_Get() == 1u) || (System_FUN_KL30_Status_Get() >= 7u)) typedef void (*COMMON_Delay)(monitorlib_uint32_t mMs);
typedef void (*pfunLogic)(void);
#define SYS_OPR_STAT_LIM_LVP (System_FUN_KL30_Status_Get() == 1U)
#define SYS_OPR_STAT_LIM_OVP (System_FUN_KL30_Status_Get() >= 7u) typedef struct
{
/*仪表工作状态*/ Get_Voltage_Vaild SysGet_KL30_Valid;
#define SYS_OPR_STAT_IGN_ON (System_FUN_KL15_Status_Get() == 1U) Get_Voltage_Vaild SysGet_KL15_Valid;
#define SYS_OPR_STAT_IGN_OFF (System_FUN_KL15_Status_Get() == 0U) Get_Voltage_Value SysGet_KL30_value_Force;
Get_Voltage_Value SysGet_KL15_value_Force;
Get_Voltage_Value SysGet_KL30_value;
/*网络管理电源工作状态*/ Get_Voltage_Value SysGet_KL15_value;
#define SYS_OPR_STAT_IGN_ON_NM (System_NM_KL15_Status_Get() == 1U) Get_LineInStatus SysGet_KL15Line;
#define SYS_OPR_STAT_IGN_OFF_NM (System_NM_KL15_Status_Get() == 0U) COMMON_Delay COM_Delay;
pfunLogic SysMonitorLogic;
/*网络管理电源运行状态*/ } MonitorExt_st;
#define SYS_OPR_STAT_RUN_NM ((System_NM_KL30_Status_Get() > 1u) && (System_NM_KL30_Status_Get() < 9u ))
#define SYS_OPR_STAT_HALT_NM ((System_NM_KL30_Status_Get() == 9u) || (System_NM_KL30_Status_Get() == 1u)) /* SYS RUN Status */
#define SYS_OPR_STAT_RUN ((System_FUN_KL30_Status_Get( ) > 1u) && (System_FUN_KL30_Status_Get( ) < 7u))
#define SYS_OPR_STAT_HALT ((System_FUN_KL30_Status_Get( ) == 3u) || (System_FUN_KL30_Status_Get( ) > 7u))
static uint8_t System_Calc_FunRange(uint16_t u16Vol);
static uint8_t System_Calc_NMRange(uint16_t u16Vol); #define SYS_OPR_STAT_LIM_LVP (System_FUN_KL30_Status_Get( ) == 1U)
#define SYS_OPR_STAT_LIM_OVP (System_FUN_KL30_Status_Get( ) > 7u)
uint8_t Read_KL30_ConvertFinish(void);
/*fun status*/
static void System_Fun_Process(void); #define SYS_OPR_STAT_IGN_ON (System_FUN_KL15_Status_Get( ) == 1U)
static void System_NM_Process(void); #define SYS_OPR_STAT_IGN_OFF (System_FUN_KL15_Status_Get( ) == 0U)
void Sys_LogicProcess(void);
void Sys_Status_Update_Service ( void ); /*nm run status*/
#define SYS_OPR_STAT_IGN_ON_NM (System_NM_KL15_Status_Get( ) == 1U)
uint16_t Sys_Read_KL30_Voltage(void); #define SYS_OPR_STAT_IGN_OFF_NM (System_NM_KL15_Status_Get( ) == 0U)
uint16_t Sys_Read_KL15_Voltage(void);
uint8_t Sys_Read_KL30_Valid(void); /*nm status*/
uint8_t Sys_Read_KL15_Valid(void); #define SYS_OPR_STAT_RUN_NM ((System_NM_KL30_Status_Get( ) > 1u) && (System_NM_KL30_Status_Get( ) < 9u))
#define SYS_OPR_STAT_HALT_NM ((System_NM_KL30_Status_Get( ) == 9u) || (System_NM_KL30_Status_Get( ) == 1u))
uint16_t Sys_Force_Read_KL30_Voltage(void);
uint16_t Sys_Force_Read_KL15_Voltage(void); monitorlib_uint8_t Read_KL30_ConvertFinish(void);
monitorlib_uint16_t Get_Sysmonitor_Version(void);
uint8_t System_FUN_KL30_Status_Get(void);
uint8_t System_FUN_KL15_Status_Get(void); void Sys_Status_Update_Service(void);
uint8_t System_NM_KL15_Status_Get(void); void Sys_Set_Pata(const monitorlib_uint16_t FUN_Vol [], MonitorExt_st *pfunc);
uint8_t System_NM_KL30_Status_Get(void); void System_Monitor_KL30Init(void);
void System_Monitor_WakeupInit(void);
uint8_t System_LINE_KL15(void); void System_XHY_CheckWakeup(void);
void Sys_Set_DebounceTimer(uint16_t u16NMKL30, uint16_t u16NMKL15, uint16_t u16FUNKL30, uint16_t u16FUNKL15); monitorlib_uint8_t System_FUN_KL30_Status_Get(void);
/*void Sys_Set_VolRange(uint16_t FUN_Vol[], uint16_t NM_Vol[]);*/ monitorlib_uint8_t System_FUN_KL15_Status_Get(void);
void Sys_Set_VolRange(const uint16_t FUN_Vol[], const uint16_t NM_Vol[]); monitorlib_uint8_t System_NM_KL15_Status_Get(void);
void System_Monitor_KL30Init(void); monitorlib_uint8_t System_NM_KL30_Status_Get(void);
void System_Monitor_WakeupInit(void);
void System_Fast_WakeUp(void); monitorlib_uint8_t System_LINE_KL15(void);
void Sys_WakeUp_Init(void);
void Sys_KL30_Init (void); #endif
void Sys_WakeUp_Init (void);
void Sys_BlockDelay(uint32_t u32Ms);
void Sys_Rolling(void);
void Sys_RollingClear(void);
uint32_t Sys_Get_ms_Rolling_Counter(void);
#endif
#include "GenDelay.h"
#include "GPIO.h"
#include "System_Monitor.h" #include "ADC.h"
#include "RTE_ADC.h" #include "System_Monitor.h"
#include "GPIO.h" #include "Analog_Signals.h"
#include "dr7f701441.dvf.h"
#include "Watchdog.h" #define u16Base_Vol 0u // 0
#include "COM_CAN.h" #define u16ENTER_LOW_N_RANGE 6500U // 1
#define u16EXIT_LOW_N_RANGE 7000U // 2
#define u16Base_Vol 0u #define u16ENTER_LOW_Y_RANGE 19500U // 3
#define u16EXIT_LOW_Y_RANGE 20000U // 4
#define u16ENTER_LOW_N_RANGE 6500U #define u16EXIT_HIGH_Y_RANGE 32000U // 5
#define u16EXIT_LOW_N_RANGE 7000U #define u16ENTER_HIGH_Y_RANGE 32500U // 6
#define u16EXIT_HIGH_N_RANGE 33000U // 7
#define u16ENTER_LOW_Y_RANGE 9000U #define u16ENTER_HIGH_N_RANGE 33500U // 8
#define u16EXIT_LOW_Y_RANGE 9500U #define u16Top_Vol 0xffffu
#define u16EXIT_HIGH_Y_RANGE 30000U #pragma alignvar(8)
#define u16ENTER_HIGH_Y_RANGE 32000U static const monitorlib_uint16_t SysFun_Range [ 26u ] = {
u16Base_Vol,
#define u16EXIT_HIGH_N_RANGE 31000U
#define u16ENTER_HIGH_N_RANGE 33000U u16ENTER_LOW_N_RANGE,
u16EXIT_LOW_N_RANGE,
#define u16Top_Vol 0xffffu
u16ENTER_LOW_Y_RANGE,
uint32_t u32SysRollingCounter; u16EXIT_LOW_Y_RANGE,
static const uint16_t SysFun_Range[10u] = u16EXIT_HIGH_Y_RANGE,
{ u16ENTER_HIGH_Y_RANGE,
u16Base_Vol,
u16EXIT_HIGH_N_RANGE,
u16ENTER_LOW_N_RANGE, u16ENTER_HIGH_N_RANGE,
u16EXIT_LOW_N_RANGE,
u16Top_Vol,
u16ENTER_LOW_Y_RANGE, 30000u, /**进入保护的时间*/
u16EXIT_LOW_Y_RANGE, 10u,
u16Base_Vol,
u16EXIT_HIGH_Y_RANGE,
u16ENTER_HIGH_Y_RANGE, u16ENTER_LOW_N_RANGE,
u16EXIT_LOW_N_RANGE,
u16EXIT_HIGH_N_RANGE,
u16ENTER_HIGH_N_RANGE, u16ENTER_LOW_Y_RANGE,
u16EXIT_LOW_Y_RANGE,
u16Top_Vol,
}; u16EXIT_HIGH_Y_RANGE,
u16ENTER_HIGH_Y_RANGE,
static const uint16_t SysNM_Range[10u] =
{ u16EXIT_HIGH_N_RANGE,
u16Base_Vol, u16ENTER_HIGH_N_RANGE,
u16ENTER_LOW_N_RANGE, u16Top_Vol,
u16EXIT_LOW_N_RANGE, 10000u,
10u,
u16ENTER_LOW_Y_RANGE, 10u, /**退出保护的时间*/
u16EXIT_LOW_Y_RANGE, 10u, /**退出保护的时间*/
};
u16EXIT_HIGH_Y_RANGE,
u16ENTER_HIGH_Y_RANGE, monitorlib_uint16_t Sys_Read_KL30_Voltage_F(void)
{
u16EXIT_HIGH_N_RANGE, monitorlib_uint16_t u16Voltage;
u16ENTER_HIGH_N_RANGE, u16Voltage = ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
return u16Voltage;
u16Top_Vol, }
};
monitorlib_uint16_t Sys_Read_KL15_Voltage_F(void)
uint16_t Sys_Force_Read_KL30_Voltage(void) {
{ monitorlib_uint16_t u16Voltage;
uint16_t u16Voltage; u16Voltage = ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
u16Voltage = (uint16_t)RTE_ForceRead_KL30_Voltage(); return u16Voltage;
return u16Voltage; }
}
monitorlib_uint16_t Sys_Read_KL30_Voltage(void)
uint16_t Sys_Force_Read_KL15_Voltage(void) {
{ monitorlib_uint16_t u16Voltage;
uint16_t u16Voltage; u16Voltage = ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
u16Voltage = (uint16_t)RTE_ForceRead_KL15_Voltage(); return u16Voltage;
return u16Voltage; }
}
monitorlib_uint16_t Sys_Read_KL15_Voltage(void)
uint16_t Sys_Read_KL30_Voltage(void) {
{ monitorlib_uint16_t u16Voltage;
uint16_t u16Voltage; u16Voltage = ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
u16Voltage = (uint16_t)RTE_Read_KL30_Voltage(); return u16Voltage;
return u16Voltage; }
}
monitorlib_uint8_t Sys_Read_KL30_Valid(void)
uint16_t Sys_Read_KL15_Voltage(void) {
{ monitorlib_uint8_t u8Valid;
uint16_t u16Voltage; u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
u16Voltage = (uint16_t)RTE_Read_KL15_Voltage(); return u8Valid;
return u16Voltage; }
}
monitorlib_uint8_t Sys_Read_KL15_Valid(void)
{
uint8_t Sys_Read_KL30_Valid(void) monitorlib_uint8_t u8Valid;
{ u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
uint8_t u8Valid; return u8Valid;
u8Valid = RTE_Read_KL30_Valid(); }
return u8Valid;
} monitorlib_uint8_t System_LINE_KL15(void)
{
uint8_t Sys_Read_KL15_Valid(void) monitorlib_uint8_t u8KL15;
{
uint8_t u8Valid; if ( ADC_KL15_IN == 1u )
u8Valid = RTE_Read_KL15_Valid(); {
return u8Valid; u8KL15 = 1u;
} }
else
uint8_t System_LINE_KL15(void) {
{ u8KL15 = 0u;
uint8_t u8KL15; }
u8KL15 = ADC_KL15_IN; //15��Ӳ��
return u8KL15; return u8KL15;
} }
void Common_BlockDelay(monitorlib_uint32_t u32Ms)
void Sys_KL30_Init ( void) {
{ Gen_TimeDelay(u32Ms * 1000u, 50u);
Sys_Set_DebounceTimer(1000u, 2u, 1000u, 80u); }
Sys_Set_VolRange(SysFun_Range, SysNM_Range); void Sys_LogicProcess(void)
System_Monitor_KL30Init(); {
System_Fast_WakeUp(); }
}
void Sys_KL30_Init(void)
void Sys_WakeUp_Init ( void) {
{ MonitorExt_st m_st;
Sys_Set_DebounceTimer(1000u, 2u, 1000u, 80u); m_st.COM_Delay = Common_BlockDelay;
Sys_Set_VolRange(SysFun_Range, SysNM_Range); m_st.SysGet_KL15Line = System_LINE_KL15;
System_Monitor_WakeupInit(); m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
System_Fast_WakeUp(); m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
} m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
/*����������ִ�������*/ m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
void Sys_LogicProcess(void) m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
{ m_st.SysMonitorLogic = Sys_LogicProcess;
COM_NM_ACT(); Sys_Set_Pata(SysFun_Range, &m_st);
} System_Monitor_KL30Init( );
}
void Sys_WakeUp_Init(void)
void Sys_Rolling(void) {
{ MonitorExt_st m_st;
if (u32SysRollingCounter != 65535ul) m_st.COM_Delay = Common_BlockDelay;
{ m_st.SysGet_KL15Line = System_LINE_KL15;
u32SysRollingCounter++; m_st.SysGet_KL15_Valid = Sys_Read_KL15_Valid;
} m_st.SysGet_KL30_Valid = Sys_Read_KL30_Valid;
else m_st.SysGet_KL15_value = Sys_Read_KL15_Voltage;
{ m_st.SysGet_KL30_value = Sys_Read_KL30_Voltage;
u32SysRollingCounter = 0; m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
} m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
} m_st.SysMonitorLogic = Sys_LogicProcess;
Sys_Set_Pata(SysFun_Range, &m_st);
void Sys_RollingClear(void) System_Monitor_WakeupInit( );
{ }
u32SysRollingCounter = 0;
}
uint32_t Sys_Get_ms_Rolling_Counter(void)
{
return u32SysRollingCounter;
}
void Sys_BlockDelay(uint32_t u32Ms)
{
uint32_t RocBackup, Counter;
Sys_RollingClear();
RocBackup = Sys_Get_ms_Rolling_Counter();
do
{
WDT_Clear();
Counter = Sys_Get_ms_Rolling_Counter();
if ( Counter >= RocBackup )
{
Counter -= RocBackup;
}
else
{
Counter = 65535U - RocBackup + Counter + 1U;
}
}
while ( Counter < u32Ms );
}
\ No newline at end of file
...@@ -673,31 +673,31 @@ uint16_t Common_ReadRollingCounter(void) ...@@ -673,31 +673,31 @@ uint16_t Common_ReadRollingCounter(void)
return SysRollingCounter; return SysRollingCounter;
} }
void Common_BlockDelay(uint16_t m_MS) //void Common_BlockDelay(uint16_t m_MS)
{ //{
uint16_t RocBackup; // uint16_t RocBackup;
uint16_t Counter; // uint16_t Counter;
uint16_t DIMCounter; // uint16_t DIMCounter;
//
DIMCounter = m_MS * 20u; // DIMCounter = m_MS * 20u;
Common_RollingCounterClear(); // Common_RollingCounterClear();
RocBackup = Common_ReadRollingCounter(); // RocBackup = Common_ReadRollingCounter();
do // do
{ // {
Counter = Common_ReadRollingCounter(); // Counter = Common_ReadRollingCounter();
//
if (Counter >= RocBackup) // if (Counter >= RocBackup)
{ // {
Counter -= RocBackup; // Counter -= RocBackup;
} // }
else // else
{ // {
Counter = 65535u - RocBackup + Counter + 1u; // Counter = 65535u - RocBackup + Counter + 1u;
} // }
//
} // }
while (Counter < DIMCounter); // while (Counter < DIMCounter);
} //}
uint32_t Common_GetIgnOnTime(void) uint32_t Common_GetIgnOnTime(void)
{ {
......
...@@ -30,7 +30,7 @@ uint32_t Common_GetIgnOffTime(void); /*ms*/ ...@@ -30,7 +30,7 @@ uint32_t Common_GetIgnOffTime(void); /*ms*/
void Common_RollingCounterAdd(void); void Common_RollingCounterAdd(void);
void Common_RollingCounterClear(void); void Common_RollingCounterClear(void);
void Common_BlockDelay(uint16_t m_MS); //void Common_BlockDelay(uint16_t m_MS);
uint16_t Common_ReadRollingCounter(void); uint16_t Common_ReadRollingCounter(void);
void Set_Can18FF5510_FirstRecv_Event(void); void Set_Can18FF5510_FirstRecv_Event(void);
......
...@@ -15,26 +15,26 @@ ...@@ -15,26 +15,26 @@
#define RSCAN0_BASE_ADDRESS 0xFFD00000UL #define RSCAN0_BASE_ADDRESS 0xFFD00000UL
/*--------------500K-----------------------------*/ /*--------------500K-----------------------------*/
#define RSCAN0_500K_BAUD_RATE 500U //波特率,单位kbps #define RSCAN0_500K_BAUD_RATE 500U // 波特率,单位kbps
#define RSCAN0_500K_T_SEG1 12U //时间段1的Tq数 #define RSCAN0_500K_T_SEG1 12U // 时间段1的Tq数
#define RSCAN0_500K_T_SEG2 3U //时间段2的Tq数 #define RSCAN0_500K_T_SEG2 3U // 时间段2的Tq数
#define RSCAN0_500K_SJW 3U //同步跳转宽度 #define RSCAN0_500K_SJW 3U // 同步跳转宽度
#define RSCAN_500K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_500K_BAUD_RATE) / (RSCAN0_500K_T_SEG1 + RSCAN0_500K_T_SEG2 + 1UL) / 1000UL) #define RSCAN_500K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_500K_BAUD_RATE) / (RSCAN0_500K_T_SEG1 + RSCAN0_500K_T_SEG2 + 1UL) / 1000UL)
/*-----------------250K---------------------------------*/ /*-----------------250K---------------------------------*/
#define RSCAN0_250K_BAUD_RATE 250U //波特率,单位kbps #define RSCAN0_250K_BAUD_RATE 250U // 波特率,单位kbps
#define RSCAN0_250K_T_SEG1 13U //11 //时间段1的Tq数 #define RSCAN0_250K_T_SEG1 13U // 11 //时间段1的Tq数
#define RSCAN0_250K_T_SEG2 2U //4 //时间段2的Tq数 #define RSCAN0_250K_T_SEG2 2U // 4 //时间段2的Tq数
#define RSCAN0_250K_SJW 1U //2 //3 #define RSCAN0_250K_SJW 1U // 2 //3
#define RSCAN_250K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_250K_BAUD_RATE) / (RSCAN0_250K_T_SEG1 + RSCAN0_250K_T_SEG2 + 1UL) / 1000UL) #define RSCAN_250K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_250K_BAUD_RATE) / (RSCAN0_250K_T_SEG1 + RSCAN0_250K_T_SEG2 + 1UL) / 1000UL)
/*-----------------125K---------------------------------*/ /*-----------------125K---------------------------------*/
#define RSCAN0_125K_BAUD_RATE 125U //波特率,单位kbps #define RSCAN0_125K_BAUD_RATE 125U // 波特率,单位kbps
#define RSCAN0_125K_T_SEG1 13U //11 //时间段1的Tq数 #define RSCAN0_125K_T_SEG1 13U // 11 //时间段1的Tq数
#define RSCAN0_125K_T_SEG2 2U //4 //时间段2的Tq数 #define RSCAN0_125K_T_SEG2 2U // 4 //时间段2的Tq数
#define RSCAN0_125K_SJW 1U //2 //3 #define RSCAN0_125K_SJW 1U // 2 //3
#define RSCAN_125K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_125K_BAUD_RATE) / (RSCAN0_125K_T_SEG1 + RSCAN0_125K_T_SEG2 + 1UL) / 1000UL) #define RSCAN_125K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_125K_BAUD_RATE) / (RSCAN0_125K_T_SEG1 + RSCAN0_125K_T_SEG2 + 1UL) / 1000UL)
/*------------------------------------------------*/ /*------------------------------------------------*/
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
#endif #endif
/*---------------------------------------*/ /*---------------------------------------*/
#define RSCAN_TIME_OUT_MAX 0X0000FFFFUL
/*---------------------------------------*/ /*---------------------------------------*/
/***************************************************/ /***************************************************/
...@@ -174,6 +174,7 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config ...@@ -174,6 +174,7 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config
uint32_t u32CANFDCalBuf = 0UL; uint32_t u32CANFDCalBuf = 0UL;
uint8_t u8Status = 1U; uint8_t u8Status = 1U;
uint32_t u32RSCANChannelRuleTotal = 0UL; uint32_t u32RSCANChannelRuleTotal = 0UL;
uint32_t u32RSCANTimeCount = 0UL;
volatile RSCANFD_Filter_st_t *pstCANFDRule; volatile RSCANFD_Filter_st_t *pstCANFDRule;
...@@ -211,18 +212,28 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config ...@@ -211,18 +212,28 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config
if (u8Status == 1U) if (u8Status == 1U)
{ {
/* Waiting for CAN RAM initialization is completed */ /* Waiting for CAN RAM initialization is completed */
while (RSCAN0GSTS & 0x08UL) u32RSCANTimeCount = 0UL;
while ((RSCAN0GSTS & 0x08UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{
u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{ {
; u8Status = 0U;
} }
/* Waiting for CAN entry global reset mdoe */ /* Waiting for CAN entry global reset mdoe */
RSCAN0GCTR &= 0xfffffff9UL; RSCAN0GCTR &= 0xfffffff9UL;
RSCAN0GCTR |= 0x01UL; RSCAN0GCTR |= 0x01UL;
while ((RSCAN0GSTS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0GSTS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
/* Waiting for CAN entry channel reset mdoe */ /* Waiting for CAN entry channel reset mdoe */
...@@ -246,23 +257,40 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config ...@@ -246,23 +257,40 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config
/* waiting */ /* waiting */
if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn)
{ {
while ((RSCAN0C0STS & 0x07UL) != 0X01UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C0STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
} }
if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn)
{ {
while ((RSCAN0C1STS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0C1STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
} }
if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn)
{ {
while ((RSCAN0C2STS & 0x07UL) != 0X01UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C2STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
} }
...@@ -435,9 +463,15 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config ...@@ -435,9 +463,15 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config
/*Transition to global operating mode*/ /*Transition to global operating mode*/
RSCAN0GCTR &= 0xFFFFFFFCUL; RSCAN0GCTR &= 0xFFFFFFFCUL;
while ((RSCAN0GSTS & 0x07UL) != 0X00UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0GSTS & 0x07UL) != 0X00UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
/*Transition to channel communication mode*/ /*Transition to channel communication mode*/
...@@ -456,25 +490,45 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config ...@@ -456,25 +490,45 @@ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config
if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn)
{ {
while ((RSCAN0C0STS & 0x80UL) == 0x0UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C0STS & 0x80UL) == 0x0UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
} }
if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn)
{ {
while ((RSCAN0C1STS & 0x80UL) == 0x0UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C1STS & 0x80UL) == 0x0UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{
u8Status = 0U;
} }
} }
if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn)
{ {
while ((RSCAN0C2STS & 0x80UL) == 0x0UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0C2STS & 0x80UL) == 0x0UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{
u32RSCANTimeCount++;
}
if (u32RSCANTimeCount >= RSCAN_TIME_OUT_MAX)
{ {
u8Status = 0U;
} }
} }
/*Enable the applied receive FIFO buffer, transmit/receive /*Enable the applied receive FIFO buffer, transmit/receive
FIFO, transmit queue or transmit history buffer*/ FIFO, transmit queue or transmit history buffer*/
/*transmit/receive FIFO */ /*transmit/receive FIFO */
if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn)
...@@ -540,7 +594,7 @@ RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -540,7 +594,7 @@ RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS;
if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U)
//if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) // if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U)
{ {
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
...@@ -549,23 +603,23 @@ RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -549,23 +603,23 @@ RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf;
//RCFDC0CFDCFID3 = u32RSCANDataBuf; // RCFDC0CFDCFID3 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U);
//RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); // RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL;
//RCFDC0CFDCFPCTR3 = 0XFFUL; // RCFDC0CFDCFPCTR3 = 0XFFUL;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -595,7 +649,7 @@ RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -595,7 +649,7 @@ RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS;
if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U)
//if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) // if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U)
{ {
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
...@@ -604,23 +658,23 @@ RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -604,23 +658,23 @@ RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf;
//RCFDC0CFDCFID3 = u32RSCANDataBuf; // RCFDC0CFDCFID3 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U);
//RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); // RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL;
//RCFDC0CFDCFPCTR3 = 0XFFUL; // RCFDC0CFDCFPCTR3 = 0XFFUL;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -649,7 +703,7 @@ RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -649,7 +703,7 @@ RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS;
if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U)
//if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) // if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U)
{ {
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
...@@ -658,23 +712,23 @@ RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) ...@@ -658,23 +712,23 @@ RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame)
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf;
//RCFDC0CFDCFID3 = u32RSCANDataBuf; // RCFDC0CFDCFID3 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U);
//RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); // RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL;
//RCFDC0CFDCFPCTR3 = 0XFFUL; // RCFDC0CFDCFPCTR3 = 0XFFUL;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -705,33 +759,33 @@ RSCAN_SetState RSCAN0_CH0_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_ ...@@ -705,33 +759,33 @@ RSCAN_SetState RSCAN0_CH0_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS;
if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U)
//if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) // if ((RSCAN0TMSTS0 & 0x08U) == 0x0U)
{ {
(*((uint8_t *)u32RSCANAddress)) = 0UL; (*((uint8_t *)u32RSCANAddress)) = 0UL;
//RSCAN0TMSTS0 = 0UL; // RSCAN0TMSTS0 = 0UL;
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf = u32RSCANDataBuf << 31U;
u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANDataBuf |= pstCANFrame->u32CANID;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf;
//RCFDC0CFDTMID0 = u32RSCANDataBuf; // RCFDC0CFDTMID0 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U);
//RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); // RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X01; (*((uint8_t *)u32RSCANAddress)) |= 0X01;
//RCFDC0CFDTMC0 |= 0X01; // RCFDC0CFDTMC0 |= 0X01;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -761,33 +815,33 @@ RSCAN_SetState RSCAN0_CH1_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_ ...@@ -761,33 +815,33 @@ RSCAN_SetState RSCAN0_CH1_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS;
if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U)
//if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) // if ((RSCAN0TMSTS0 & 0x08U) == 0x0U)
{ {
(*((uint8_t *)u32RSCANAddress)) = 0UL; (*((uint8_t *)u32RSCANAddress)) = 0UL;
//RSCAN0TMSTS0 = 0UL; // RSCAN0TMSTS0 = 0UL;
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf = u32RSCANDataBuf << 31U;
u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANDataBuf |= pstCANFrame->u32CANID;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf;
//RCFDC0CFDTMID0 = u32RSCANDataBuf; // RCFDC0CFDTMID0 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U);
//RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); // RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X01; (*((uint8_t *)u32RSCANAddress)) |= 0X01;
//RCFDC0CFDTMC0 |= 0X01; // RCFDC0CFDTMC0 |= 0X01;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -817,33 +871,33 @@ RSCAN_SetState RSCAN0_CH2_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_ ...@@ -817,33 +871,33 @@ RSCAN_SetState RSCAN0_CH2_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS;
if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U)
//if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) // if ((RSCAN0TMSTS0 & 0x08U) == 0x0U)
{ {
(*((uint8_t *)u32RSCANAddress)) = 0UL; (*((uint8_t *)u32RSCANAddress)) = 0UL;
//RSCAN0TMSTS0 = 0UL; // RSCAN0TMSTS0 = 0UL;
u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE;
u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf = u32RSCANDataBuf << 31U;
u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANDataBuf |= pstCANFrame->u32CANID;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf;
//RCFDC0CFDTMID0 = u32RSCANDataBuf; // RCFDC0CFDTMID0 = u32RSCANDataBuf;
u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANDataBuf = pstCANFrame->u8CANLEN;
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U);
//RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); // RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U);
u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U];
//RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; // RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U];
u32RSCANAddress += 0X04UL; u32RSCANAddress += 0X04UL;
(*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U];
//RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; // RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U];
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X01; (*((uint8_t *)u32RSCANAddress)) |= 0X01;
//RCFDC0CFDTMC0 |= 0X01; // RCFDC0CFDTMC0 |= 0X01;
enRSCANStatus = RSCAN_SET_COMPLETE; enRSCANStatus = RSCAN_SET_COMPLETE;
} }
...@@ -932,10 +986,15 @@ void RSCAN0_CH0_Busoff_Recover(void) ...@@ -932,10 +986,15 @@ void RSCAN0_CH0_Busoff_Recover(void)
{ {
if (RSCAN0_CH0_Get_Busoff_Status()) if (RSCAN0_CH0_Get_Busoff_Status())
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C0ERFL &= 0xFFFFFFF7UL; RSCAN0C0ERFL &= 0xFFFFFFF7UL;
RSCAN0C0CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ RSCAN0C0CTR &= 0xFFFFFFF8UL; /* CommunicationMode */
while ((RSCAN0C0STS & 0x87UL) != 0x80UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C0STS & 0x87UL) != 0x80UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
u32RSCANTimeCount++;
} }
} }
} }
...@@ -943,10 +1002,14 @@ void RSCAN0_CH1_Busoff_Recover(void) ...@@ -943,10 +1002,14 @@ void RSCAN0_CH1_Busoff_Recover(void)
{ {
if (RSCAN0_CH1_Get_Busoff_Status()) if (RSCAN0_CH1_Get_Busoff_Status())
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C1ERFL &= 0xFFFFFFF7UL; RSCAN0C1ERFL &= 0xFFFFFFF7UL;
RSCAN0C1CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ RSCAN0C1CTR &= 0xFFFFFFF8UL; /* CommunicationMode */
while ((RSCAN0C1STS & 0x87UL) != 0x80UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C1STS & 0x87UL) != 0x80UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
u32RSCANTimeCount++;
} }
} }
} }
...@@ -954,10 +1017,14 @@ void RSCAN0_CH2_Busoff_Recover(void) ...@@ -954,10 +1017,14 @@ void RSCAN0_CH2_Busoff_Recover(void)
{ {
if (RSCAN0_CH2_Get_Busoff_Status()) if (RSCAN0_CH2_Get_Busoff_Status())
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C2ERFL &= 0xFFFFFFF7UL; RSCAN0C2ERFL &= 0xFFFFFFF7UL;
RSCAN0C2CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ RSCAN0C2CTR &= 0xFFFFFFF8UL; /* CommunicationMode */
while ((RSCAN0C2STS & 0x87UL) != 0x80UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C2STS & 0x87UL) != 0x80UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
u32RSCANTimeCount++;
} }
} }
} }
...@@ -977,7 +1044,7 @@ void RSCAN0_CH0_Abort(RSCAN_Channel_Buf_en_t enBufIndex) ...@@ -977,7 +1044,7 @@ void RSCAN0_CH0_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X02U; (*((uint8_t *)u32RSCANAddress)) |= 0X02U;
//RCFDC0CFDTMC0 |= 0X02; // RCFDC0CFDTMC0 |= 0X02;
} }
} }
void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex) void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
...@@ -995,7 +1062,7 @@ void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex) ...@@ -995,7 +1062,7 @@ void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X02U; (*((uint8_t *)u32RSCANAddress)) |= 0X02U;
//RCFDC0CFDTMC0 |= 0X02; // RCFDC0CFDTMC0 |= 0X02;
} }
} }
void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex) void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
...@@ -1013,7 +1080,7 @@ void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex) ...@@ -1013,7 +1080,7 @@ void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
{ {
u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS;
(*((uint8_t *)u32RSCANAddress)) |= 0X02U; (*((uint8_t *)u32RSCANAddress)) |= 0X02U;
//RCFDC0CFDTMC0 |= 0X02; // RCFDC0CFDTMC0 |= 0X02;
} }
} }
...@@ -1022,65 +1089,82 @@ void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex) ...@@ -1022,65 +1089,82 @@ void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex)
*/ */
void RSCAN0_CH0_Sleep_Init(void) void RSCAN0_CH0_Sleep_Init(void)
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C0CTR &= 0xfffffff9UL; RSCAN0C0CTR &= 0xfffffff9UL;
RSCAN0C0CTR |= 0x01UL; RSCAN0C0CTR |= 0x01UL;
while ((RSCAN0C0STS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0C0STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
RSCAN0C0CTR |= 0x04UL; RSCAN0C0CTR |= 0x04UL;
while ((RSCAN0C0STS & 0x07UL) != 0X04UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C0STS & 0x07UL) != 0X04UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
} }
void RSCAN0_CH1_Sleep_Init(void) void RSCAN0_CH1_Sleep_Init(void)
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C1CTR &= 0xfffffff9UL; RSCAN0C1CTR &= 0xfffffff9UL;
RSCAN0C1CTR |= 0x01UL; RSCAN0C1CTR |= 0x01UL;
while ((RSCAN0C1STS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0C1STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
RSCAN0C1CTR |= 0x04UL; RSCAN0C1CTR |= 0x04UL;
while ((RSCAN0C1STS & 0x07UL) != 0X04UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C1STS & 0x07UL) != 0X04UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
} }
void RSCAN0_CH2_Sleep_Init(void) void RSCAN0_CH2_Sleep_Init(void)
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0C2CTR &= 0xfffffff9UL; RSCAN0C2CTR &= 0xfffffff9UL;
RSCAN0C2CTR |= 0x01UL; RSCAN0C2CTR |= 0x01UL;
while ((RSCAN0C2STS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0C2STS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
RSCAN0C2CTR |= 0x04UL; RSCAN0C2CTR |= 0x04UL;
while ((RSCAN0C2STS & 0x07UL) != 0X04UL)
u32RSCANTimeCount = 0UL;
while (((RSCAN0C2STS & 0x07UL) != 0X04UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
} }
void RSCAN0_Sleep_Init(void) void RSCAN0_Sleep_Init(void)
{ {
uint32_t u32RSCANTimeCount = 0UL;
RSCAN0GCTR &= 0xfffffff9UL; RSCAN0GCTR &= 0xfffffff9UL;
RSCAN0GCTR |= 0x01UL; RSCAN0GCTR |= 0x01UL;
while ((RSCAN0GSTS & 0x07UL) != 0X01UL) u32RSCANTimeCount = 0UL;
while (((RSCAN0GSTS & 0x07UL) != 0X01UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
RSCAN0GCTR |= 0x04UL; RSCAN0GCTR |= 0x04UL;
// while ( (RSCAN0GSTS & 0x07UL) != 0X04UL ) u32RSCANTimeCount = 0UL;
while ((RSCAN0GSTS & 0x04UL) != 0X04UL) while (((RSCAN0GSTS & 0x04UL) != 0X04UL) && (u32RSCANTimeCount < RSCAN_TIME_OUT_MAX))
{ {
; u32RSCANTimeCount++;
} }
} }
...@@ -1130,11 +1214,15 @@ void RSCAN0_CH0_RX_ISR(void) ...@@ -1130,11 +1214,15 @@ void RSCAN0_CH0_RX_ISR(void)
{ {
if (RSCAN0CFSTS2 & 0X08UL) if (RSCAN0CFSTS2 & 0X08UL)
{ {
uint32_t u32RSCANTimeCount = 0UL;
CAN_Frame_Receive_st_t stCANFrameReceive; CAN_Frame_Receive_st_t stCANFrameReceive;
RSCAN0CFSTS2 &= 0xFFFFFFF7UL; RSCAN0CFSTS2 &= 0xFFFFFFF7UL;
while ((RSCAN0CFSTS2 & 0x01UL) == 0U) u32RSCANTimeCount = 0UL;
while (((RSCAN0CFSTS2 & 0x01UL) == 0U) && (u32RSCANTimeCount < 128U))
{ {
u32RSCANTimeCount++;
stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID2 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID2 & 0x1FFFFFFFUL);
stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR2 >> 28U); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR2 >> 28U);
stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID2 >> 31U)); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID2 >> 31U));
...@@ -1152,11 +1240,15 @@ void RSCAN0_CH1_RX_ISR(void) ...@@ -1152,11 +1240,15 @@ void RSCAN0_CH1_RX_ISR(void)
{ {
if (RSCAN0CFSTS5 & 0X08UL) if (RSCAN0CFSTS5 & 0X08UL)
{ {
uint32_t u32RSCANTimeCount = 0UL;
CAN_Frame_Receive_st_t stCANFrameReceive; CAN_Frame_Receive_st_t stCANFrameReceive;
RSCAN0CFSTS5 &= 0xFFFFFFF7UL; RSCAN0CFSTS5 &= 0xFFFFFFF7UL;
while ((RSCAN0CFSTS5 & 0x01UL) == 0U) u32RSCANTimeCount = 0UL;
while (((RSCAN0CFSTS5 & 0x01UL) == 0U) && (u32RSCANTimeCount < 128U))
{ {
u32RSCANTimeCount++;
stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID5 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID5 & 0x1FFFFFFFUL);
stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR5 >> 28U); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR5 >> 28U);
stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID5 >> 31U)); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID5 >> 31U));
...@@ -1175,11 +1267,14 @@ void RSCAN0_CH2_RX_ISR(void) ...@@ -1175,11 +1267,14 @@ void RSCAN0_CH2_RX_ISR(void)
if (RSCAN0CFSTS8 & 0X08UL) if (RSCAN0CFSTS8 & 0X08UL)
{ {
uint32_t u32RSCANTimeCount = 0UL;
CAN_Frame_Receive_st_t stCANFrameReceive; CAN_Frame_Receive_st_t stCANFrameReceive;
RSCAN0CFSTS8 &= 0xFFFFFFF7UL; RSCAN0CFSTS8 &= 0xFFFFFFF7UL;
u32RSCANTimeCount = 0UL;
while ((RSCAN0CFSTS8 & 0x01UL) == 0U) while (((RSCAN0CFSTS8 & 0x01UL) == 0U) && (u32RSCANTimeCount < 128U))
{ {
u32RSCANTimeCount++;
stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID8 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID8 & 0x1FFFFFFFUL);
stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR8 >> 28U); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR8 >> 28U);
stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID8 >> 31U)); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID8 >> 31U));
......
...@@ -222,9 +222,9 @@ void Sys_Enter_Sleep_Mode(void) ...@@ -222,9 +222,9 @@ void Sys_Enter_Sleep_Mode(void)
__DI(); __DI();
SYSWUFC0 = 0x7FFFFU; SYSWUFC0 = 0x7FFFFU;
/*---------------------------------------------*/ /*---------------------------------------------*/
GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_5, GPIO_WAKEUP_FALLING_EDGE); /*CAN唤醒*/ GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_5, GPIO_WAKEUP_FALLING_EDGE); /*CAN唤醒*/
GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_0, GPIO_WAKEUP_HIGH_LEVEL); /*15电唤醒*/ GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_0, GPIO_WAKEUP_HIGH_LEVEL); /*15电唤醒*/
GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_7, GPIO_WAKEUP_HIGH_LEVEL); /*硬线唤醒*/ GPIO_Wakeup_PIN_Set(GPIO_WAKEUP_PIN_P0_7, GPIO_WAKEUP_HIGH_LEVEL); /*硬线唤醒*/
/*----------------------------------------------*/ /*----------------------------------------------*/
SYSWUFMSK0 &= 0x7FFFEU; SYSWUFMSK0 &= 0x7FFFEU;
......
...@@ -111,7 +111,7 @@ SECTIONS ...@@ -111,7 +111,7 @@ SECTIONS
.tdata align(4) MAX_SIZE(0x0400) :>. /* initialized and zero-initialized data in TDA area */ .tdata align(4) MAX_SIZE(0x0400) :>. /* initialized and zero-initialized data in TDA area */
.ramfunc align(4) :>. /* program code in RAM area */ .ramfunc align(4) :>. /* program code in RAM area */
.stack align(4) pad(0x8000) :>. /* definition of stack size */ .stack align(4) pad(0x4000) :>. /* definition of stack size */
/* Renesas FDL data sections */ /* Renesas FDL data sections */
......
...@@ -228,8 +228,8 @@ void Sys_Sleep_Init(void) ...@@ -228,8 +228,8 @@ void Sys_Sleep_Init(void)
* \attention * \attention
* \retval None * \retval None
******************************************************************************/ ******************************************************************************/
void Sys_Wakeup_Init(void) //void Sys_Wakeup_Init(void)
{ //{
//
} //}
...@@ -28,7 +28,7 @@ extern { ...@@ -28,7 +28,7 @@ extern {
extern void Sys_Startup_Pre_Init(void); extern void Sys_Startup_Pre_Init(void);
extern void Sys_Startup_Init(void); extern void Sys_Startup_Init(void);
extern void Sys_Sleep_Init(void); extern void Sys_Sleep_Init(void);
extern void Sys_Wakeup_Init(void); //extern void Sys_Wakeup_Init(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -323,7 +323,7 @@ void Sys_Exact_50us_Tasks(void) ...@@ -323,7 +323,7 @@ void Sys_Exact_50us_Tasks(void)
{ {
static uint32_t PerCounter = 0u; static uint32_t PerCounter = 0u;
GenDelay_Tick(); GenDelay_Tick();
Sys_Rolling(); //Sys_Rolling();
COM_NM_Process(); COM_NM_Process();
COM_TX_Process(); COM_TX_Process();
DoCAN_Timer_Update(50); DoCAN_Timer_Update(50);
......
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