<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>ColdFire/68K Microcontrollers and Processors中的主题 Re: CAN Bus Message ID filtering</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/CAN-Bus-Message-ID-filtering/m-p/168697#M6063</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; I send message from transmitter device to receiver device . In transmitter&lt;/P&gt;&lt;P&gt;&amp;gt; device I receive the message that have send to receiver device.&lt;/P&gt;&lt;P&gt;&amp;gt; But I must not &amp;nbsp;receive the messages that I have sent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You could filter these out in software. You know what you're sending so just ignore them.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The rules from the Reference Manual are:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;30.3.14 Matching Process&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The matching process is an algorithm that scans the entire MB memory looking for Rx MBs programmed&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;with the same ID as the one received from the CAN bus. Only MBs programmed to receive participate in&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;the matching process for received frames.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You must have MBs with IDs matching the transmit frame, or you have the masking registers set to ignore ID bits.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However the following may matter, and it doesn't make any sense to me:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;30.3.13.1 Self-Received Frames&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;Self-received frames are frames that are sent by the FlexCAN and received by itself. The FlexCAN sends&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;a frame externally through the physical layer onto the CAN bus. If the ID of the frame matches the ID of&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;the FlexCAN MB, the frame is received by the FlexCAN. Such a frame is a self-received frame. FlexCAN﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;does not receive frames transmitted by itself if another device on the CAN bus has an ID that matches the&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;FlexCAN Rx MB ID.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So how does the transmitter know a receiver had an ID matching one of its receive MB IDs? I was under the impression that all receivers ACK a valid message, and not only the one(s) that actively received it. The Bosch specs aren't clear on this. I have found clarification in the Microchip AN713 which says:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The Acknowledge Field is utilized to indicate if the message&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;was received correctly. Any node that has correctly&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;received the message, regardless of whether the&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;node processes or discards the data, puts a dominant&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;bit on the bus in the ACK Slot bit time﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So there's no way a transmistter knows if a receiver actually processed a message.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="times new roman,times"&gt;&amp;gt; How can &amp;nbsp;I filtering message ID in a device&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Read the Reference Manual. There are register that control this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="times new roman,times"&gt;&amp;gt; and How can I determine an ID interval for receiver device&lt;/FONT&gt;﻿&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do you mean "ID interval"? All MESSAGES have to have unique IDs. The IDs aren't "Transmitter IDs" or "Receiver IDs" like the MAC address to an Ethernet chip. You need a list of all unique messages in your system. Only one device is allowed to ever transmit a particular message ID. You can then program the receivers with filters (filter masks and IDs in the Message Buffers) to decide which messages you want particular receivers to receive. But it is usually easier to "receive everything" and then throw away the ones you don't care about in software.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://en.wikipedia.org/wiki/CAN_bus" rel="nofollow" target="_blank"&gt;http://en.wikipedia.org/wiki/CAN_bus&lt;/A&gt;﻿&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;SPAN&gt;Id. allocation&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff"&gt;﻿Message id's must be unique on a single CAN bus, otherwise two nodes would continue transmission beyond the end of the arbitration field (id.) causing an error.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; example: only got ID : 0x00A&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;gt; example for interval : only got &amp;nbsp; (0x005- 0x0FF) - receive messages ID &amp;nbsp;between &amp;nbsp;0x005 and 0x0FF﻿.&lt;/P&gt;&lt;P&gt;﻿&lt;/P&gt;&lt;P&gt;Could you provide more details of what you're doing? There's not enough there to understand what you're doing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think that using an IDs of "A" and "5" (00000000101) might not meet the spec as the CAN bus spec states:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;IDENTIFIER&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The IDENTIFIER’s length is 11 bits. These bits are transmitted in the order from ID-10&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;to ID-0. The least significant bit is ID-0. The 7 most significant bits (ID-10 - ID-4) must&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;not be all ’recessive’.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 Sep 2011 10:55:12 GMT</pubDate>
    <dc:creator>TomE</dc:creator>
    <dc:date>2011-09-23T10:55:12Z</dc:date>
    <item>
      <title>CAN Bus Message ID filtering</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/CAN-Bus-Message-ID-filtering/m-p/168696#M6062</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hı,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using MCF52235 can bus protocol for communication&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I send message from transmitter device to receiver device . In transmitter device I receive the message that have send to receiver device. But I must not &amp;nbsp;receive the messages that I have sent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can &amp;nbsp;I filtering message ID in a device and How can I determine an ID interval for receiver device&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;example: only got ID : 0x00A&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;example for interval : only got &amp;nbsp; (0x005- 0x0FF) - receive messages ID &amp;nbsp;between &amp;nbsp;0x005 and 0x0FF.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;can you help me?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Sep 2011 14:22:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/CAN-Bus-Message-ID-filtering/m-p/168696#M6062</guid>
      <dc:creator>Besir</dc:creator>
      <dc:date>2011-09-22T14:22:59Z</dc:date>
    </item>
    <item>
      <title>Re: CAN Bus Message ID filtering</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/CAN-Bus-Message-ID-filtering/m-p/168697#M6063</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; I send message from transmitter device to receiver device . In transmitter&lt;/P&gt;&lt;P&gt;&amp;gt; device I receive the message that have send to receiver device.&lt;/P&gt;&lt;P&gt;&amp;gt; But I must not &amp;nbsp;receive the messages that I have sent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You could filter these out in software. You know what you're sending so just ignore them.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The rules from the Reference Manual are:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;30.3.14 Matching Process&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The matching process is an algorithm that scans the entire MB memory looking for Rx MBs programmed&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;with the same ID as the one received from the CAN bus. Only MBs programmed to receive participate in&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;the matching process for received frames.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You must have MBs with IDs matching the transmit frame, or you have the masking registers set to ignore ID bits.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However the following may matter, and it doesn't make any sense to me:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;30.3.13.1 Self-Received Frames&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;Self-received frames are frames that are sent by the FlexCAN and received by itself. The FlexCAN sends&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;a frame externally through the physical layer onto the CAN bus. If the ID of the frame matches the ID of&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;the FlexCAN MB, the frame is received by the FlexCAN. Such a frame is a self-received frame. FlexCAN﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;does not receive frames transmitted by itself if another device on the CAN bus has an ID that matches the&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;FlexCAN Rx MB ID.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So how does the transmitter know a receiver had an ID matching one of its receive MB IDs? I was under the impression that all receivers ACK a valid message, and not only the one(s) that actively received it. The Bosch specs aren't clear on this. I have found clarification in the Microchip AN713 which says:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The Acknowledge Field is utilized to indicate if the message&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;was received correctly. Any node that has correctly&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;received the message, regardless of whether the&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;node processes or discards the data, puts a dominant&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;bit on the bus in the ACK Slot bit time﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So there's no way a transmistter knows if a receiver actually processed a message.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="times new roman,times"&gt;&amp;gt; How can &amp;nbsp;I filtering message ID in a device&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Read the Reference Manual. There are register that control this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="times new roman,times"&gt;&amp;gt; and How can I determine an ID interval for receiver device&lt;/FONT&gt;﻿&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do you mean "ID interval"? All MESSAGES have to have unique IDs. The IDs aren't "Transmitter IDs" or "Receiver IDs" like the MAC address to an Ethernet chip. You need a list of all unique messages in your system. Only one device is allowed to ever transmit a particular message ID. You can then program the receivers with filters (filter masks and IDs in the Message Buffers) to decide which messages you want particular receivers to receive. But it is usually easier to "receive everything" and then throw away the ones you don't care about in software.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://en.wikipedia.org/wiki/CAN_bus" rel="nofollow" target="_blank"&gt;http://en.wikipedia.org/wiki/CAN_bus&lt;/A&gt;﻿&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;SPAN&gt;Id. allocation&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff"&gt;﻿Message id's must be unique on a single CAN bus, otherwise two nodes would continue transmission beyond the end of the arbitration field (id.) causing an error.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; example: only got ID : 0x00A&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;gt; example for interval : only got &amp;nbsp; (0x005- 0x0FF) - receive messages ID &amp;nbsp;between &amp;nbsp;0x005 and 0x0FF﻿.&lt;/P&gt;&lt;P&gt;﻿&lt;/P&gt;&lt;P&gt;Could you provide more details of what you're doing? There's not enough there to understand what you're doing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think that using an IDs of "A" and "5" (00000000101) might not meet the spec as the CAN bus spec states:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;IDENTIFIER&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;The IDENTIFIER’s length is 11 bits. These bits are transmitted in the order from ID-10&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;to ID-0. The least significant bit is ID-0. The 7 most significant bits (ID-10 - ID-4) must&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000ff" face="times new roman,times"&gt;not be all ’recessive’.﻿&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Sep 2011 10:55:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/CAN-Bus-Message-ID-filtering/m-p/168697#M6063</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2011-09-23T10:55:12Z</dc:date>
    </item>
  </channel>
</rss>

