Just in case any body need the library here is ready to use. i do some changes:
// /*
// Improved version by sinai1 contact: ventas@sisabrain.com s_inai1@hotmail.com
// Improvements:
// Version 2 update:
// -V2 Change from 128 MsgObj_Id to 255 MsgObj_Id
// -V2 Add new type for CANFD: typedef union { uint8 bytes[64]; uint32 dword[16]; } CANFDMessagePayloadType;
// -V2 Change DLC type on all functions please use: IfxMultican_DataLengthCode dlc
// typedef enum
// {
// IfxMultican_DataLengthCode_0 = 0, //< \brief 0 data bytes
// IfxMultican_DataLengthCode_1, //**< \brief 1 data bytes
// IfxMultican_DataLengthCode_2, //**< \brief 2 data bytes
// IfxMultican_DataLengthCode_3, //**< \brief 3 data bytes
// IfxMultican_DataLengthCode_4, //**< \brief 4 data bytes
// IfxMultican_DataLengthCode_5, //**< \brief 5 data bytes
// IfxMultican_DataLengthCode_6, //**< \brief 6 data bytes
// IfxMultican_DataLengthCode_7, //**< \brief 7 data bytes
// IfxMultican_DataLengthCode_8, //**< \brief 8 data bytes
// IfxMultican_DataLengthCode_12 = 9, //**< \brief 12 data bytes
// IfxMultican_DataLengthCode_16 = 10, //**< \brief 16 data bytes
// IfxMultican_DataLengthCode_20 = 11, //**< \brief 20 data bytes
// IfxMultican_DataLengthCode_24 = 12, //**< \brief 24 data bytes
// IfxMultican_DataLengthCode_32 = 13, //**< \brief 32 data bytes
// IfxMultican_DataLengthCode_48 = 14, //**< \brief 48 data bytes
// IfxMultican_DataLengthCode_64 = 15 //**< \brief 64 data bytes
// } IfxMultican_DataLengthCode;
// /** CAN0 Functions **/
// extern void CAN0_Init(uint32 Baudrate);
// extern void CAN0_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN0_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN0_SendMessage_dword(uint32 CAN_Id, uint32 Lowdata, uint32 Highdata, uint8 dlc);
// extern int CAN0_SendMessage(uint32 CAN_Id, CANMessagePayloadType *msg1, IfxMultican_DataLengthCode dlc);
// extern IfxMultican_Status CAN0_ReceiveMessage(uint32 CAN_Id, IfxMultican_Message *msg1, IfxMultican_DataLengthCode dlc);
// /** CAN1 Functions **/
// extern void CAN1_Init(uint32 Baudrate);
// extern void CAN1A_Init(uint32 Baudrate);
// extern void CAN1_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN1_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN1_SendMessage_dword(uint32 CAN_Id, uint32 Lowdata, uint32 Highdata, uint8 dlc);
// extern int CAN1_SendMessage(uint32 CAN_Id, CANMessagePayloadType *msg1, IfxMultican_DataLengthCode dlc);
// extern IfxMultican_Status CAN1_ReceiveMessage(uint32 CAN_Id, IfxMultican_Message *msg1, IfxMultican_DataLengthCode dlc);
// /** CAN3 Functions **/
// extern void CAN3_Init(uint32 Baudrate);
// extern void CAN3A_Init(uint32 Baudrate);
// extern void CAN3_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN3_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id);
// extern void CAN3_SendMessage_dword(uint32 CAN_Id, uint32 Lowdata, uint32 Highdata, uint8 dlc);
// extern int CAN3_SendMessage(uint32 CAN_Id, CANMessagePayloadType *msg1, IfxMultican_DataLengthCode dlc);
// extern IfxMultican_Status CAN3_ReceiveMessage(uint32 CAN_Id, IfxMultican_Message *msg1, IfxMultican_DataLengthCode dlc);
// -V2 Added CANFD support for Init, TxInit, RxInit, Send and Receive:
// /** CAN0FD Functions **/
// extern void CAN0FD_Init(uint32 nominalBaudrate, uint32 fastBaudrate);
// extern void CAN0FD_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// extern void CAN0FD_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// /** CAN1FD Functions **/
// extern void CAN1FD_Init(uint32 nominalBaudrate, uint32 fastBaudrate);
// extern void CAN1AFD_Init(uint32 nominalBaudrate, uint32 fastBaudrate);
// extern void CAN1FD_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// extern void CAN1FD_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// /** CAN3 FD Functions **/
// extern void CAN3FD_Init(uint32 nominalBaudrate, uint32 fastBaudrate);
// extern void CAN3AFD_Init(uint32 nominalBaudrate, uint32 fastBaudrate);
// extern void CAN3FD_RxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// extern void CAN3FD_TxInit(uint32 CAN_Id, uint32 AcceptanceMask, IfxMultican_DataLengthCode dlc, uint32 ExtFrame, IfxMultican_MsgObjId MsgObj_Id, IfxMultican_MsgObjId topMsgObjId, IfxMultican_MsgObjId bottomMsgObjId);
// -V2 new CAN Global Send and receive functions, with this select can channel is not necesary:
// /** CAN Global Send and Receive Functions, this auto find the can channel based on you TX and RX initialization **/
// extern void CAN_SendMessage_dword(uint32 CAN_Id, uint32 Lowdata, uint32 Highdata, uint8 dlc);
// extern int CAN_SendMessage(uint32 CAN_Id, CANMessagePayloadType *msg1, IfxMultican_DataLengthCode dlc);
// extern IfxMultican_Status CAN_ReceiveMessage(uint32 CAN_Id, IfxMultican_Message *msg1, IfxMultican_DataLengthCode dlc);
// /** CAN FD Global Send and Receive Functions, this auto find the can channel based on you TX and RX initialization **/
// extern int CANFD_SendMessage(uint32 CAN_Id, CANFDMessagePayloadType *msg1, IfxMultican_DataLengthCode dlc);
// extern IfxMultican_Status CANFD_ReceiveMessage(uint32 CAN_Id, IfxMultican_Message *msg1, IfxMultican_DataLengthCode dlc);
// -V2, IfxMultican.h edited, uint32 data[2] of IfxMultican_Message; Message changed to uint32 data[16] for FD compatibility.
// /** Long CAN message definition **/
// typedef struct
// {
// uint32 id; /**< \brief CAN message ID */
// IfxMultican_DataLengthCode lengthCode; /**< \brief CAN message data length code */
// uint32 data[16]; /**< \brief CAN message data */
// boolean fastBitRate; /**< \brief CAN FD fast bit rate enable/disable */
// } IfxMultican_Message;
if you use this please dont remove the contact info.