Добавлена диагностика BusOff
This commit is contained in:
parent
7858719e99
commit
8703f948b0
|
|
@ -85,15 +85,6 @@ int main(void) {
|
||||||
|
|
||||||
Bsp_CLOCK_Init();
|
Bsp_CLOCK_Init();
|
||||||
|
|
||||||
uint32_t a = 10;
|
|
||||||
|
|
||||||
++a;
|
|
||||||
|
|
||||||
uint32_t v = 0;
|
|
||||||
for (int i=0; i<11; ++i) {
|
|
||||||
v++;
|
|
||||||
}
|
|
||||||
|
|
||||||
NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4);
|
NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4);
|
||||||
|
|
||||||
osKernelInitialize();
|
osKernelInitialize();
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,14 @@ static void DMA_TransferCompleteCallbackCan1(void) {
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
volatile bool isCan0BusOff = false;
|
||||||
|
volatile uint32_t timeCan0BusOff = 0;
|
||||||
|
|
||||||
static void CAN0_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
static void CAN0_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||||
|
|
||||||
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
||||||
|
timeCan0BusOff = SystemGetMs() + 3000;
|
||||||
|
isCan0BusOff = true;
|
||||||
FLEXCAN_Stop(u8CanIndex);
|
FLEXCAN_Stop(u8CanIndex);
|
||||||
vCanPort_InitCan0();
|
vCanPort_InitCan0();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -354,12 +354,23 @@ setErrorDTC_CAN_VIN(uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern volatile bool isCan0BusOff;
|
||||||
|
extern volatile uint32_t timeCan0BusOff;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE) {
|
setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE) {
|
||||||
|
|
||||||
uint32_t timeCanSpamReceiver = getCanTimeReceived(env->canSpamReceiver) + 3000;
|
uint32_t timeCanSpamReceiver = getCanTimeReceived(env->canSpamReceiver) + 3000;
|
||||||
uint32_t time = SystemGetMs();
|
uint32_t time = SystemGetMs();
|
||||||
|
|
||||||
|
if (isCan0BusOff) {
|
||||||
|
if (time < timeCan0BusOff) {
|
||||||
|
dtc_state_error_model[DTC_BODY_CAN_BUS_OFF] = DTC_TEST_FAILED_CONFIRMED;
|
||||||
|
} else {
|
||||||
|
dtc_state_error_model[DTC_BODY_CAN_BUS_OFF] = dtc_state_error[DTC_BODY_CAN_BUS_OFF] & (~(DTC_TEST_FAILED));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((CAN_ERROR_MISSLE->EMS_Veh) || (time > timeCanSpamReceiver)) {
|
if ((CAN_ERROR_MISSLE->EMS_Veh) || (time > timeCanSpamReceiver)) {
|
||||||
dtc_state_error_model[DTC_LOST_COMM_ECM_PCM] = DTC_TEST_FAILED_CONFIRMED;
|
dtc_state_error_model[DTC_LOST_COMM_ECM_PCM] = DTC_TEST_FAILED_CONFIRMED;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -469,7 +480,8 @@ setErrorDTC_LIN(uint8_t *dtc_state_error_model, uint8_t *LIN1_ERROR_MISSING, uin
|
||||||
if ((LIN5_ERROR_MISSING[2]) || (LIN5_ERROR_MISSING[3]) || (LIN5_ERROR_MISSING[6]) || (LIN5_ERROR_MISSING[7])) {
|
if ((LIN5_ERROR_MISSING[2]) || (LIN5_ERROR_MISSING[3]) || (LIN5_ERROR_MISSING[6]) || (LIN5_ERROR_MISSING[7])) {
|
||||||
dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] = DTC_TEST_FAILED_CONFIRMED;
|
dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] = DTC_TEST_FAILED_CONFIRMED;
|
||||||
} else {
|
} else {
|
||||||
dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] = dtc_state_error[DTC_LOST_COMM_DRS_FRONT] & (~(DTC_TEST_FAILED));
|
dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] =
|
||||||
|
dtc_state_error[DTC_LOST_COMM_DRS_FRONT] & (~(DTC_TEST_FAILED));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((LIN5_ERROR_MISSING[0]) || (LIN5_ERROR_MISSING[1]) || (LIN5_ERROR_MISSING[4]) || (LIN5_ERROR_MISSING[5])) {
|
if ((LIN5_ERROR_MISSING[0]) || (LIN5_ERROR_MISSING[1]) || (LIN5_ERROR_MISSING[4]) || (LIN5_ERROR_MISSING[5])) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue