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.

TMS570LS1114: CAN communication issue

Part Number: TMS570LS1114

Hi team,

Here's an issue from the customer may need your help:

CAN communication, CAN ID can be set to 11bit or 29Bit. Communication is good when using the 11-bit CAN ID. However, once a 29-Bit CAN ID is used, there is a false reception when the data is received.

Information from the same CAN ID at the end of 11bit is received into a CANID by mistake. For example: the last 11 bits of both ID(0x0CF094A7) and ID(0x0CFB74A7) are 4A7. So the data for 0x0CF094A7 can be misinterpreted as the data read 0x0CFB74A7. The customer also tested that whenever the end of ID 11bit is 4A7, it's interpreted as 0x0CFB74A7 Remove the ID (0x0CFB74A7) and the data from the ID (0x0CF094A7) is received correctly.

The customer would like to know what's the possible reason for that and how to resolve it. Could you help check this case? Thanks.

Best Regards,

Cherry

  • Hi Cherry,

    The messages with 11-bit ID and 29-bit ID can co-exist in the CAN bus. The 11-bit identifier has a higher priority than the 29-bit identifier (same first 11-bit).

    If you transmit 2 messages with ID=0x0CF094A7 and ID=0x0CFB74A7 at the same time, and both message use extended ID (IDE=1), the ID=0x0CF094A7 should win the arbitration. If the message with ID=0x0CFB74A7 uses standard ID (IDE=0), this message will win the arbitration.

    Please check the IDE values for those two messages

  • Hi Wang,

    Thanks for your help. Please let me clarify:

    Messages with both 11-bit ID and 29-bit ID are not present; messages with ID=0x0CF094A7 and ID=0x0CFB74A7 are not sent at the same time.

    The situation is like this: When a 0x0CF094A7 message is sent, but a 0x0CFB74A7 message is not posted, the 0x0CF094A7 message is interpreted as a 0x0CFB74A7 message.

    Thanks and regards,

    Cherry

  • Hi Cherry,

    Assume there are two nodes in the CAN network: node A and node B. Node A transmits a message whose ID is 0x0CF094A7. Node B receives CAN messages, two mailboxes are configured to receive messages: one mailbox (let say mailbox 1) for message with 0x0x0CFB74A7, and one mailbox (mailbox 2) for message with ID=0x0CF094A7. But Node B stores the received message with ID=0x0CF094A7 to mailbox 1 rather than mailbox 2. Is my understanding correct?

    When the arbitration and control bits (Identifier + IDE + RTR + DLC) of an incoming message is completely shifted into the shift register of the CAN Core, the Message Handler starts to scan of the Message RAM for a matching valid message object (mailbox1 first, then mailbox2):

    1. The Acceptance Filtering unit is loaded with the arbitration bits from the CAN Core shift register: 0x0CF094A7
    2. Then the arbitration and mask bits of Message MailBox 1 (  ID=0x0CFB74A7, MASK=?) are loaded into the Acceptance Filtering unit and are compared with the arbitration bits in #1  

            3. If MASK=0x7FF, only the first 11-bit are used for acceptance filtering, so the match occurs, the message is copied to mailbox 1. The scanning is stopped.

            4. If MASK=0x1FFFFFFF, all 29-bit are used for acceptance filtering, 0x0CF094A7 doesn't match the ID of mailbox1 (0x0CFB74A7). The mailbox2 will be scanned.

            5. same as #3

      What is the configurations for mailbox1 and mailbox2 of Node B (ID and Mask)?