|
Sync |
Prop-Seg |
Phase-Seg-1 |
Phase-Seg-2 |
|
Bedeutung |
Synchronisation |
Senden |
||
Länge in
TQ |
1 - 4 |
1 - 8 |
1 - 8 |
1 - 8 |
Jedes
CAN-Gerät
empfängt
erst
einmal
jeden
Datenframe vom Bus, und schiebt ihn in einen
Pufferspeicher (MAB). Anschließend wird der Identifier des
Dataframe ausgewertet. Dazu besitzt ein CAN-Gerät einen oder
mehrere Acceptance Filter. In
denen stehen alle Identifier, die für das Gerät interessant
sind. Stimmt der Identifier des gerade empfangenen Dataframe nicht mit dem Muster im Acceptace Filter überein, dann wird dieser Dataframe ignoriert und der nächste Dataframe aus dem CAN-Bus wird in den Puffer gelesen. Stimmt aber der Identifier des gerade empfangenen Dataframe mit dem Muster im Acceptace Filter überein, dann wird dieser Dataframe in das Empfangsregister (RXB) des Gerätes kopiert. Somit ist garantiert, dass ein Gerät nur die Dataframes empfängt, die es auch benötigt. Nach der oben beschriebenen Methode würde ein Gerät nur Dataframes mit einem bestimmten Identifier akzeptieren. In der Realität lässt sich aber noch zusätzlich einstellen, welche Bits des Acceptance-Filters überhaupt für den Vergleichstest benutzt werden sollen. Das erfolgt mit Hilfe der Acceptance Mask. Diese enthält für jedes Bit des Identifier ein Bit bereit. Ist dieses "0", dann wird so getan, als ob Identifier und Acceptance Filter in diesem Bit identisch wären. Ist das Bit der Maske aber "1", dann werden Identifier und Acceptance Filter hier verglichen, und bei Ungleichheit der Dataframe ignoriert. Falls die Maske also nur Nullen enthält, dann wird jeder Dataframe mit jedem Identifier vom Gerät empfangen, egal was im Acceptance Filter steht. |
In
PIC-Microcontrollern
gibt
es
zwei
unterschiedliche Varianten des
CAN-Moduls
CAN-Modul Im CAN-Modul eines PIC gibt es zwei Empfangsregister: RXB0 und RXB1. Das RXB0 hat zwei Acceptance Filter (RXF0, RXF1) während RXB1 über 4 Acceptance Filter verfügt (RXF2, RXF3, RXF4, RXF5). Jedes Empfangsregister verfügt über eine eigene Acceptance Mask (RXM0, RXM1). Die nebenstehende Zeichnung stellt das CAN-Modul dar. ECAN-Modul Das ECAN-Modul ist zum CAN-Modul abwärtskompatibel. Es kann aber in einen erweiterten Mode geschaltet werden, in dem es über 16 Acceptance Filter und 6 Sendepuffer/Empfangsregister verfügt. Die Beschreibung des ECAN-Moduls erstreckt sich im Handbuch immerhin über 70 Seiten. |
Um
einen
Dataframe
auf
den
CAN-Bus zu
senden, schreibt man ihn in den Sendepuffer des CAN-Moduls, um den Rest
kümmert sich dann das CAN-Modul selbst. Das CAN-Modul eines PIC verfügt über drei Sendepuffer (TXB0, TXB1, TXB2). Da immer nur ein Datafram gesendet werden kann, muss das CAN-Modul die Reihenfolge festlegen, in der die Dataframes gesendet werden sollten, wenn mehrere Sendepuffer beschrieben wurden. Dafür besitzt jeder Sendepuffer einen 2-bitigen Prioritätswert. Der Sendepuffer mit dem höchsten Prioritätswert wird zuerst gesendet. Sind die Prioritäten gleich, dann wird der Puffer mit der höchsten Nummer vorgezogen. Das nebenstehende Bild zeigt den Sendeteil eines CAN-Moduls, das ECAN-Modul besitzt Modes mit bis zu 6 Sendepuffern. Ein Gerät kann ein anderes Gerät auffordern, etwas zu senden. Dafür sendet es ein Transmit Request auf den Bus. Das ist ein Dataframe ohne Daten, dessen Identifier einer bestimmten Gerätenummer entspricht. Man bezeichnet ihn deshalb auch als Remote-Frame. |
Autor: sprut
erstellt: 15.01.2008
letzte Änderung: 20.01.2008