Good morning,
can someone explain me how to send a RTR message with the CAN protocol?
I'm using the Hercules Development Kit TMS570 MCU.
Thanks.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Good morning,
can someone explain me how to send a RTR message with the CAN protocol?
I'm using the Hercules Development Kit TMS570 MCU.
Thanks.
Hello Luigi,
in the Technical Reference Manual of the TMS570LS31x/21x (SPNU499B) you can find in Section 24.8.10 "Requesting New Data for a Receive Object" a description how a remote frame can be sent requesting new data for an RX message object.
Best regards
Andreas
If a post answers your question, please mark it with the "verify answer" button.
Hi,
you just have to leave the bit Dir in register IFxARB cleared (0 = Remote Frame, 1 = Data Frame). Moreover, in register IFxMCTL: the bit TxRqst has to be set and the DLC field cleared (as the Remote Frame contains no data).
Jan
Good morning,
I've got one more question about the CAN RTR. I understand how to send one RTR but I don't understand how to do this more than one time. Infact, by setting the bit TxRqst in register IFxMCTL, the CAN tranceiver send me one RTR but only one!!
How can I send more than one RTR? Do I need to reset that bit after sending the RTR and set it again?
Thanks.
Hi Luigi,
once you used the IFxMCTL register to set the TxRqst of a certain RX message object, then TxRqst will be cleared inside the message object when the remote frame has been sent out. In order to send another remote frame you need to set again the TxRqst in the message object by using IFx registers.
Best regards
Andreas
If a post answers your question, please mark it with the "verify answer" button.
Hi,
I read the IF1MCTL after the RTR is sent but the TxRqst bit is not cleared automatically, infact it mantains the same initial value that is:
canREG1->IF1MCTL = 0x00001080U | (uint32)0x00000100U | (uint32)8U;
Maybe have I to clear that bit??
Hi Luigi,
I would expect that you can observe the clearing of the TxRqst bit in the Transmission Request xx register, can you check this? Those reflect the status of the TxRqst bits in the message objects, while the IF1MCTL is only the interface to read from or write to the message objects.
Best regards
Andreas
If a post answers your question, please mark it with the "verify answer" button.
Thanks,
have I to check the Trasmission Request X Register (TXRQ X) or the Trasmission Request Register (TXRQ12 to TXRQ78)??
Hi Luigi,
TXRQ12 to TXRQ78 show the TxRqst bits for each message object.
Best regards
Andreas
Thanks Andreas,
you are right. The TXRQ12 register is set to one before the trasmission of the RTR for the messagge 1 and it is cleared to zero after the trasmission.
Now I want to reset the TxRqst bit to have another RTR trasmission. How can I do this?
Have to use the IF1MCTL register again?
yes, you can set the TxRqst again as you have done before.
Best regards
Andreas
If a post answers your question, please mark it with the "verify answer" button.