Die Buffer Register des MCP2515 CAN Controllers
In der Abbildung sind alle Register des MCP2515 dargestellt. Grün sind die Register die für einen optionalen Eingangsfilter verwendet werden (es werden dann nur CAN Botschaften gespeichert die den Filterkriterien entsprechen). Gelb sind die 3 Registerbereiche der CAN Botschaften die gesendet werden sollen und blau sind zwei Registerbereiche welche die empfangenen CAN Frames bis zur Abholung des Mikrocontrollers zwischenspeichern.
Die Registerbereiche die eine CAN Botschaft speichern werden Buffer genannt. Der MCP2515 hat drei Transmit-Buffer (TXB0, TXB1, TXB2) und zwei Receive-Buffer (RXB0, RXB1). Alle Buffer zum speichern einer CAN Botschaft, egal ob TX oder RX, haben den gleichen Aufbau: (Bsp. TXB0SIDH oder RXB1SIDH)
SIDH (Standard Identifier Register HIGH) [SID10|SID9|SID8|SID7|SID6|SID5|SID4|SID3]
Enthält die höherwertigen Bits der 11'stelligen SID.
SIDL (Standard Identifier Register LOW) [SID2|SID1|SID0|_|EXIDE|_|EID17|EID16]
Enthält die letzten 3 bits der 11'stelligen SID. Bei Nachrichten die mit einem Extended Identifier
übertragen werden ist das EXIDE bit zur Kennzeichnung auf 1 gesetzt (statt 0 wie bei SID Botschaften).
Da EID Adressen 29 bit lang sind enthält EID17 und EID16 zwei weitere Adressbits (SID10 - SID0 enthalten bei
gesetztem EXIDE bit die ersten 11 Stellen der EID).
EID8 (Extended Identifier Register) [EID15|EID14|EID13|EID12|EID11|EID10|EID9|EID8]
Enthält von der 29'stelligen die Botschaftskennzeichnung die Stellen 15-8. Registerinhalt nur bei EID Nachrichten relevant.
EID0 (Extended Identifier Register) [EID7|EID6|EID5|EID4|EID3|EID2|EID1|EID0]
Enthält von der 29'stelligen die Botschaftskennzeichnung die Stellen 7-0. Registerinhalt nur bei EID Nachrichten relevant.
DLC (Data Length Control Register) [_|RTR|_|_|DLC3|DLC2|DLC1|DLC0]
Sowohl SID als auch EID Can Frames können bis zu 8 Datenbyte an Nutzdaten übertragen (=Payload). Die Anzahl der
Datenbytes die übertragen werden sollen wird als Binärwert mit DLC0 - DLC3 angegeben. (Bsp. 0|0|0|1 = 1 Datenbyte,
0|1|0|1 = 5 Datenbyte.
Ist das RTR Bit gesetzt handelt es sich um ein Remote Transmission Request. Ein Can
Frame mit dem fehlende Botschaften gezielt angefordert werden können.
D0-D7 (Datenbyte 1 - Datenbyte 8) [B7|B6|B5|B4|B3|B2|B1|B0]
Hier sind die eigentlichen Nutzdaten in der Größe von Bytes gespeichert (mit B7=MSB und B0=LSB).