Page 1 of 1

About remote frame sending in CAN (ISO 15785-2)

Posted: Fri May 17, 2019 8:00 am
by gigabps@hotmail.com
Hi~!
I am programming to make OBD2 using CAN in ESP32-WiFi+BT module.
In fact, ESP32-IDF examples are very helpful to use.
Communication using CAN has been successful.
However, I need to send a 'remote frame' to read more than 8 bytes of continuous data, but I do not know what to do.

Can anyone give me an example of this?
Note: sending CAN TX with the RTR setting does not work.

Re: About remote frame sending in CAN (ISO 15785-2)

Posted: Fri May 17, 2019 1:58 pm
by ESP_Dazz
gigabps@hotmail.com wrote: Note: sending CAN TX with the RTR setting does not work.
  • Could you elaborate more on the specifics of the issue you're facing
    • Is there any activity on the bus when attempting to send an RTR frame?
    • Is the receiving node acknowledging the RTR Frame but does not transmit a Data Frame in response?
  • Is your transmit code similar to the following?

Code: Select all

//Configure RTR message
can_message_t rtr_msg;
rtr_msg.identifier = 0x7FF;
rtr_msg.data_length_code = 8;
rtr_msg.flags = CAN_MSG_FLAG_RTR;
//Load RTR message into transmit queue
can_transmit(&rtr_msg, portMAX_DELAY);

...	//Assuming the corresponding message responds with a data frame

can_message_t rx_msg;
can_receive(&rx_msg, portMAX_DELAY);
gigabps@hotmail.com wrote: However, I need to send a 'remote frame' to read more than 8 bytes of continuous data, but I do not know what to do.
You'll need to split that into two or more RTR Frames , and have the transmitting node respond with two or more Data Frames. CAN2.0 requires that the DLC of an RTR or Data Frame be <= 8. A CAN2.0 compliant node that receives a frame (RTR/DATA) with a DLC > 8 will just treat it as DLC=8 (see addendum No.1 of CAN2.0B specification).