Hi,
My system is:
LaunchPad TM4C123G
MCP2562
a device who has can bus with message will only be sent if requested by RTR message
I do not understand well how to read a remote message can.
How should I use the following define?
MSG_OBJ_REMOTE_FRAME
MSG_OBJ_TYPE_TX_REMOTE
MSG_OBJ_TYPE_RX_REMOTE
I read page 88 of the peripherical driver library, but it's not clear to me.
Any hints?
Thanks in advance!
This is my code:
// Use ID and mask 0 to recieved messages with any CAN ID g_sCAN0RxMessage.ui32MsgID =0;//= 0x2c4; g_sCAN0RxMessage.ui32MsgIDMask =0;//= 0x7ff; g_sCAN0RxMessage.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER | MSG_OBJ_REMOTE_FRAME; g_sCAN0RxMessage.ui32MsgLen = 8; // allow up to 8 bytes // Set up msg object msgData2 = 0; g_sCAN0TxMessage.ui32MsgID = ACCELEROMETER_XYZ; g_sCAN0TxMessage.ui32MsgIDMask = 0; g_sCAN0TxMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE | MSG_OBJ_REMOTE_FRAME;// g_sCAN0TxMessage.ui32MsgLen = 0;// sizeof(msgDataPtr2); //g_sCAN0TxMessage.pui8MsgData = msgDataPtr2; // // Now load the message object into the CAN peripheral. Once loaded the // CAN will receive any message on the bus, and an interrupt will occur. // Use message object RXOBJECT for receiving messages (this is not the //same as the CAN ID which can be any value in this example). // CANMessageSet(CAN0_BASE, RXOBJECT, &g_sCAN0RxMessage, MSG_OBJ_TYPE_RX); while(1) { CANMessageSet (CAN0_BASE, TXOBJECT, &g_sCAN0TxMessage, MSG_OBJ_TYPE_TX_REMOTE); // send as msg object 1 delay(100); // wait 100ms if(g_ui32ErrFlag != 0) { // check for errors //UARTprintf("CAN Bus Error\n"); CANErrorHandler(); } //UARTprintf("Hola\n"); if(g_bRXFlag) { // rx interrupt has occured UARTprintf("Hola-------21\n"); g_sCAN0RxMessage.pui8MsgData = msgData; // set pointer to rx buffer CANMessageGet(CAN0_BASE, RXOBJECT, &g_sCAN0RxMessage, MSG_OBJ_TYPE_RX_REMOTE); // read CAN message object RXOBJECT from CAN peripheral g_bRXFlag = 0; // clear rx flag if(g_sCAN0RxMessage.ui32Flags & MSG_OBJ_DATA_LOST) { // check msg flags for any lost messages UARTprintf("CAN message loss detected\n"); } } }