Protokollverarbeitung des SJA1000

Gast #128706
Hallo zusammen!

meine Frage:

Wieviel Arbeit nimmt einem der SJA1000 bei der Kommunikation über den
CAN Bus ab?
Also ich meine: Muß man nach der Initialisierung mehr machen als den
Sendepuffer füllen und die Empfangspuffer auslesen?
Falls nein:Gibt es CAN-controller, die einem mehr Arbeit abnehmen?

Viele Grüße,
Falk S.
Gast #128709
Hallo,

eigentlich musst du nichts tun. Die Frage ist eher was du dabei tun
kannst.

Der SJA1000 kan in 2 unterschiedlichen  Modis betrieben werden.

1. PeliCAN-Modus für erweiterte (29-Bit) CAN-ID. Dort hast du die
Möglichkeit über Register die verschiedene Fehlerzustände abzufragen.

2. BasicCAN Modus als Kompatibilitäts-Modus für den das CAN Urgestein
82C200. Ausser dem globalen Error-Flag hast du dort kaum eine
Möglichkeit irgendwelche Fehler genauer nachzuvollziehen.

Interessant sind zum Beispiel solche Zustände wie ein Bus-OFF, z.B wenn
sich kein Empfänger die versendete Nachricht versteht. Man sieht dann
zwar, dass die Kommunikation nicht funktioniert, kann aber meist nicht
beurteilen an was es liegt.

Ansonsten gilt : Nach Initialisierung nur noch die RX-/TX-/Error-Flags
überprüfen (bzw. ISR), Daten reinschreiben und rauslesen.
CRC, Arbitirierung, Framing, usw. übernimmt der SJA1000



Gruss,

Peter
Gast #128711
Hallo!

Ich habe einen SJA1000 zusammen mit einem AVR ohne Interrupts am
laufen.
Interrupts muss man nicht verwenden.
Was mich jetzt nur noch Interressiert ist, wie muss ich das mit
BUS-OFF, AKTIV bzw. PASSIV realisieren? Wie muss man dies
programmieren?
Gast #128712
Herzlichen Glückwunsch ;-)

1. Einstellen der Baudrate über die Bittiming-Register.
Online-Berechnung unter :
www.port.de/deutsch/canprod/content/sv_req_form.html

1a. Eventuelles Einstellen der Akzeptanz-Register

2. Du bringst den CAN-Controller über das Control-Register in Operating
Mode

3. Zyklisches Senden und Empfangen von CAN-Daten über Status- und
Command-Register, dabei zyklisch das Error- und Bus-Status -Flag
überprüfen.
Der SJA1000 verfügt über ein internes FiFo(64 Bytes), welches mehrere
CAN-Pakete enthalten kann. Beim Lesen, insbesondere ohne ISR, sollten
wenn möglich alle Pakete abgeholt werden, bis der Receive-Buffer-Status
'empty' meldet




Gruss,

Peter

peter(punkt)mahler(ät)web(punkt)de
Gast #128713
Hallo Peter!

Danke für die Info!
Ok ich habe mal versucht die ganze Geschicht mit dem ISR zu
realisieren. Leider klappt es nicht. Kannst du mir ein Beispiel Code in
C geben? Das würde mir sehr weiterhelfen.

In der Sende und Empfansroutine verwende ich den
"Receive-Buffer-Status" nicht.

Wie muss ich dies implementieren?
Angehängte Dateien:
Gast #128717
Hallo!

Und zwar möchte ich meine Anwendung so ähnlich wie von Vector
gestalten. Die Software soll die Errorframes, Chip state sowie Std.
Data [fr/s] anzeigen.
Wie könnte ich dies realisieren?
Welche Register vom SJA1000 sind dafür zuständig?
Angehängte Dateien:
Gast #128720
@Toxic

Du hast geschrieben:
Ich habe den Interrupt vom SJA1000 auf den Externen-Interrupt vom
ATMEAG8535 gelegt. Ist dies so richtig?

Und ich habe geschrieben:
Pull-Up-Widerstand bei der Interruptleitung nicht vergessen!!

Im Klartext heißt das, daß Du eben nicht nur den Interrupt vom SJA1000
an eine externen Interruptport des AVRs anschließen mußt, sondern diese
Leitung zusätzlich mit einem Widerstand (z.B. 10k) gegen 5V schalten
mußt. Ansonsten wird das mit der Auslösung des Interrupts nicht
funktionieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.