When debugging to flexcan_ Flexcan under driver. C_ StaterSendData()--<if(state->mbs[mb_idx].state)!= FLEXCAN_ MB_ Idle >, the actual state is flexcan_ MB_ Busy, how to solve this problem?
I have solved this problem, because the sending status is modified in advance by other functions, resulting in that the information can be received and cannot be sent.
Hi,
the state flexcan_ MB_ Busy indicates the prepared message is still not successfully transmitted. Question could be why? Lets assume CAN transceiver circuitry is right and transceiver is active. Maybe some errors are detected, like ACK, bit error. If yes, it could be e.g. due to CAN bit setting. If no errors are detected, is the MB's mask interrupt bit still set? If not, I think the only option to leave this within code is to Abort the message using the respective API.
BR, Petr