<<< Previous topic - Next topic >>> |
|
Author |
Message |
thw
Joined: 17 Feb 2009 Posts: 4
|
Posted: 18.02.2009, 17:08 Post subject: CAN timing 19.2 kbit/s |
|
|
Ich versuche die Kommunikation zweier CAN-Geräte zu lesen,
per Oszilloskop konnte ich die Geschwindigkeit von 19,2 kbit/s bestimmen.
Um das CAN-Interface des 5282 zu konfigurieren benutze ich folgenden Code:
Code: |
#define CONF_TIMING 3
...
CAN_BTR_VAL1 = PROPSEG;
CAN_BTR_VAL2 = ( (RJW<<6)+(PSEG1<<3)+(PSEG2) );
...
Config_par_t cfg;
cfg.target = CONF_TIMING;
cfg.val1 = CAN_BTR_VAL1;
cfg.val2 = CAN_BTR_VAL2;
ioctl(can_fd, CAN_IOCTL_CONFIG, &cfg);
|
Leider habe ich es bisher nicht geschafft, den Wert für PRESDIV ins Register zu schreiben,
daher setze ich vor dem obigen Code die Baudrate per set_bitrate auf 20 kbit/s.
Bisher konnte ich kein Datenpaket einlesen.
Der Busstatus ändert sich beim Lesen: 0,128,256,384,400
Beim Schreiben wird das erste Paket gesendet, alle weiteren füllen den tx_buffer.
Als Parameter fürs Timing wurden bereits *alle* möglichen Werte getestet.
Danke im Vorraus! |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1496
|
Posted: 19.02.2009, 14:17 Post subject: CAN … |
|
|
Hallo THW.
„Beim Schreiben wird das erste Paket gesendet, alle weiteren füllen den tx_buffer.“ … Das könnte auch auf physikalische Probleme mit dem CAN-Bus hindeuten.
Was passiert, wenn man die can4linux Demos (canrx, cantx) von der Starterkit-CD-ROM einsetzt?
Gruß
KDW |
|
Back to top |
|
|
thw
Joined: 17 Feb 2009 Posts: 4
|
Posted: 19.02.2009, 15:21 Post subject: |
|
|
Hallo kdw,
die Ausgabe der binarys von der cd:
Code: |
./canrx
using CAN device /dev/can0
set baudrate to 20 Kbit/s
waiting for msg at 0x0xe77efe:
Received with ret=0
Received with ret=0
Received with ret=1: 943928519.528838 id=-1 len=0 msg='' flags=0x10
Received with ret=0
Received with ret=0
...
|
Das obige "Paket" wird nur einmal empfangen und zeigt wohl den Busstatus an.
Code: |
# ./cantx
using CAN device /dev/can0
set baudrate to 20 Kbit/s
sending system time: msg='02:23:59' id=0 len=8 flags=0x00
sending system time: msg='02:24:00' id=1 len=8 flags=0x00
sending system time: msg='02:24:01' id=2 len=8 flags=0x00
sending system time: msg='02:24:02' id=3 len=8 flags=0x00
|
Da die beiden anderen Nodes regen Traffic erzeugen, lässt sich das vom dnp gesendete Frame
nur schwer indentifizieren.
Der Busstatus beim Senden wechselt zwischen 564,592 und 68.
Ohne Verbindung zum Bus ist er 592.
Soweit ich es überblicke, müsste es ein Timingproblem sein.
Kann man die Funktionen der GPIO Beispiele übertragen?
Code: |
#define PRESDIV_REG (MCFBAR + 0x001C0008)
...
ssvhwa_write8(PRESDIV_REG, PRESDIV);
i = ssvhwa_read8(PRESDIV_REG);
|
Leider funktioniert es nicht wie erhofft! |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1496
|
Posted: 23.02.2009, 12:16 Post subject: Testumgebung … |
|
|
Hallo THW.
Mir ist nicht ganz klar, wie die Testumgebung aussieht, in der das Problem auftritt.
Wie viele Teilnehmer wurden hier zu einem CAN-Netzwerk zusammengeschlossen?
Um was für Systeme handelt es sich?
Welche Ausdehnung hat das gesamte CAN-Netzwerk (Kabellänge im Meter)?
Wie sieht es mit den Abschlusswiderständen aus?
Gruß
KDW |
|
Back to top |
|
|
thw
Joined: 17 Feb 2009 Posts: 4
|
Posted: 23.02.2009, 16:34 Post subject: |
|
|
Hallo kdw,
Das CAN-Netzwerk besteht aus 2 Geräten + DNP/5282.
Die beiden Geräte sind Bestandteil eines Zapfanlagensystems,
welches permanent miteinander per CAN kommuniziert.
Die Transceiver sind vom Typ Phillips PCA82C250.
Der Aufbau ist: A-B-DNP, mit Abschlusswiderständen an A und DNP.
Die Leitungslänge beträgt 4m.
Das System funktioniert und der Traffic lässt sich am Oszi beobachten.
Was leider nicht gelingt, ist das "mitlesen" per DNP-CAN.
Grusz, thw |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1496
|
Posted: 24.02.2009, 16:50 Post subject: CAN mit 19.2 … |
|
|
Hallo THW.
Danke für die Info. Leitungslänge ist dann ja auf jeden Fall unkritisch. Das die Abschlusswiderstände OK sind, setzte ich voraus.
Dann können es eigentlich nur die 19.2 Kbps sein. Das ist definitiv keine offizielle CAN-Geschwindigkeit. Der Entwickler der can4linux-Software sagt dazu: „Ich vermute diese Bitrate lässt sich mit der aktuellen CPU Frequenz (des DNP/5282) wirklich nicht mit wenigstens 1% Genauigkeit einstellen. Dann geht kein Empfang und Senden führt zu Fehlern.“
Gruß
KDW |
|
Back to top |
|
|
thw
Joined: 17 Feb 2009 Posts: 4
|
Posted: 25.02.2009, 11:36 Post subject: |
|
|
Hallo kdw,
vielen Dank für die Mühe. Schade, dass es wohl nicht funktionieren kann.
Grusz thw |
|
Back to top |
|
|
|