#define TJA1153_START_ID (uint32_t)(0x555u)
#define TJA1153_CONFIG_ID (uint32_t)(0x18DA00F1u)
/* Configure TJA1153 transmission format */
static const Flexcan_Ip_DataInfoType CAN_TJA1153_MB_Config_1 = {
.data_length = 0u,
.msg_id_type = FLEXCAN_MSG_ID_STD,
.is_polling = true
};
/* Configure TJA1153 sproofing protection, 0x10 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_SpoofingProtect_Config_Form = {
.data_length = 6u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
/* Configure TJA1153 flooding and tamper protection, 0x40 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_FloodTamperProt_Config_Form = {
.data_length = 2u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
/* Configure bit time, secure mode timeout, blacklist, etc. 0x50 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_BitTimeLength_Config_Form = {
.data_length = 3u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
/* Configure TJA1153 command message id, 0x60 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_CommandMessageID_Config_Form = {
.data_length = 5u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
/* Configure TJA1153 leaving configuration mode message format, 0x71, 0x72, 0x74 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_LeaveConfigMode_Config_Form = {
.data_length = 8u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
/* Configure TJA1153 verification of configure message, 0xF0 command byte */
static const Flexcan_Ip_DataInfoType TJA1153_ConfigVerify_Config_Form = {
.data_length = 3u,
.msg_id_type = FLEXCAN_MSG_ID_EXT,
.is_polling = true
};
void TJA1153_Configure(uint8 instance, uint8 mb_idx)
{
uint8 tja1153ConfigData[8];
/* Send a classical frame with ID 0x555 */
tja1153ConfigData[0] = 0x00;
tja1153ConfigData[1] = 0x00;
tja1153ConfigData[2] = 0x00;
tja1153ConfigData[3] = 0x00;
tja1153ConfigData[4] = 0x00;
tja1153ConfigData[5] = 0x00;
tja1153ConfigData[6] = 0x00;
tja1153ConfigData[7] = 0x00;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&CAN_TJA1153_MB_Config_1, TJA1153_START_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Configure the sproofing protection*/
tja1153ConfigData[0] = 0x10;
tja1153ConfigData[1] = 0x01; /* White list element 1*/
tja1153ConfigData[2] = 0x51;
tja1153ConfigData[3] = 0x00; /* ID + mask, 0x100 + 0x000, any standard frame can be sent*/
tja1153ConfigData[4] = 0x07;
tja1153ConfigData[5] = 0xFF;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_SpoofingProtect_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
tja1153ConfigData[0] = 0x10 + 0x80;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_SpoofingProtect_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Configure the flood tamper protection */
tja1153ConfigData[0] = 0x40;
tja1153ConfigData[1] = 0x00;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_FloodTamperProt_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Validate the configuration */
tja1153ConfigData[0] = 0xC0;
tja1153ConfigData[1] = 0x00;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_FloodTamperProt_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Configure bit time and blacklist, etc */
tja1153ConfigData[0] = 0x50;
tja1153ConfigData[1] = 0x38;
tja1153ConfigData[2] = 0xAB;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_BitTimeLength_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Validate the configuration */
tja1153ConfigData[0] = 0xD0;
tja1153ConfigData[1] = 0x38;
tja1153ConfigData[2] = 0xAB;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_BitTimeLength_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Configure the device ID */
tja1153ConfigData[0] = 0x60;
tja1153ConfigData[1] = 0x98;
tja1153ConfigData[2] = 0xDA;
tja1153ConfigData[3] = 0x00;
tja1153ConfigData[4] = 0xF1;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_CommandMessageID_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Validate the configuration */
tja1153ConfigData[0] = 0xE0;
tja1153ConfigData[1] = 0x98;
tja1153ConfigData[2] = 0xDA;
tja1153ConfigData[3] = 0x00;
tja1153ConfigData[4] = 0xF1;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_CommandMessageID_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Validate */
tja1153ConfigData[0] = 0xF0;
tja1153ConfigData[1] = 0x00;
tja1153ConfigData[2] = 0x00;
tja1153ConfigData[3] = 0x00;
tja1153ConfigData[4] = 0x00;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_ConfigVerify_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
/* Leave the configuration mode and do not save it to NVM, after next power up, need to initialize again */
tja1153ConfigData[0] = 0x71;
tja1153ConfigData[1] = 0x02;
tja1153ConfigData[2] = 0x03;
tja1153ConfigData[3] = 0x04;
tja1153ConfigData[4] = 0x05;
tja1153ConfigData[5] = 0x06;
tja1153ConfigData[6] = 0x07;
tja1153ConfigData[7] = 0x08;
FlexCAN_Ip_SendBlocking(instance, mb_idx, \
&TJA1153_LeaveConfigMode_Config_Form, TJA1153_CONFIG_ID, (uint8 *)&tja1153ConfigData, 0xFFFFFFFF);
}