Hello,
I've been trying to configure the the FlexCAN to be able to receive CAN Frames with extended and standard IDs.
I used the CAN Example for the S32K358 as it is.
So I set the CAN ID Message Type of the Receive CanHardwareObject to MIXED.
After generating the source code and compiling I noticed, that I don't get an RX Indication for CAN Frames with Standard ID but it works for Extended IDs.
After some investigation, I noticed that the Hardware Filter has a value
/**
* @brief Hardware Filter of CanHardwareObject_0
*/
static const Can_43_FLEXCAN_HwFilterType Can_aHwFilter_Object0=
{
(uint32)0x0U,
(uint32)0xc0000000U
};
So I played a little bit around and noticed, that when I set the value to 0x80000000, I can receive Messages for both ID types.
I was unable to figure out, where exactly this value is used or whether it's written directly into a register.
I somebody able to explain to me what is happening?
Hi,
value 0xC0000000U is written into respective mask acceptance register. The
two most significant bits affect the fields RTR and IDE, which are located in the Control and Status word of the MB.
If CTRL2[EACEN]=1 then both bits is compared. That's why you can only receive extended ID, as MBs configured as MIXED and RECEIVE type will be treated as EXTENDED.
BR, Petr
But this is not the desired behavior right?
It's unclear to me why there is the option MIXED if it behaves the same way as EXTENDED.
Hi,
some feedback is given at https://community.nxp.com/t5/S32K/AUTOSAR-Can-module-can-not-receive-standard-signal/td-p/1217947
BR, Petr