STM32 - CAN - Fix RTR position bit in TX mailbox register #5610
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The RTR bit that defines the type of CAN message (Data or Remote) was written as bit0 in CAN_TIxR (the CAN TX mailbox).
According to Reference Manual p. 1606 of STM32L476RG, also verified for STM32F103, STM32F302 (seems to be the same for all STM32 offering CAN:
Bit 0 TXRQ: Transmit mailbox request
Set by software to request the transmission for the corresponding mailbox.
Cleared by hardware when the mailbox becomes emp
Bit 1 RTR: Remote transmission request
0: Data frame
1: Remote frame
The RTR bit has been shifted by 1 to the left in order to put it in the right place.
Consequences
Bad behavior observed : Only Data message were sent, even if CAN::write(CANMessage msg) was called with a Remote-type message as argument.
After fix : Remote messages are correctly sent.