CAN: 82C250 an SJA1000

Gast #116933
Hallo,
ich möchte mit dem SJA1000 und 82C250 einen CAN-Bus Knoten aufbauen.
Wenn ich dem SJA1000 per 8515 ein Senderequest schicke, setzt der
SJA1000 das Statusregister auf 0x00 (-> SJA1000 beschäftigt). Und der
SJA1000 nimmt das 0x00 nicht mehr zurück, d.h. ist nach dem ersten
Senden von zwei Bytes dauernd beschäftigt .

Hier der Codingausschnitt, um den den SJA1000 zu initialisieren:

   while (!CAN_CTRL & RESREQ)   // sja in reset-mode setzen
        CAN_CTRL = RESREQ;
   CAN_AC      = OWN_ID;  // eigene ID (=0x00) setzen, höchste Prio
    CAN_AM      = ACCEPTMASK;  // (0xFF) jede Nachricht akzeptieren
    CAN_TMG_0   = 0x03;
    CAN_TMG_1   = 0x1c;
    CAN_OCR     = 0xde;
    CAN_CLKDIV  = 0x07;
    CAN_CTRL    = 0x5e;
    CAN_CMD     = 0x0c;

Folgendes Codinig soll den SJA1000 zum Absetzen von zwei Bytes auf den
Bus bewegen:

    id  = 0x500;  //
    len = 2;    //  Nachrichtenlänge
    CAN_TX_ID = id >> 3;  // CAN_TX_ID Bit 10 bis 3 des Identifiers
    CAN_TX_LEN = ((id & 0x07) << 5) | len;
// in CAN_TX_LEN (Bit7 bis 5) steht Bit2-0 des Identifiers
    CAN_TX_BUF0 = 'J';
    CAN_TX_BUF1 = 'R';
    CAN_CMD     = TXREQ;

Kann es an der Hardware liegen? Mir ist noch so ganz klar, wieso der
SJA zwei Sende- und zwei Empfangspins hat (TX0, TX1 und RX0, RX1). Habe
einfach das TX0 (SJA) mit dem TxD (82C250) verbunden einschließlich
R=470 gegen +5V. TX1 (SJA) offen gelassen, RX0 (SJA) an  RxD (82C250),
wieder mit R=470 gegen +5V. RX1 (SJA) über R=6,2k gegen +5V und R=über
3,3k gegen GND gelegt.

Gibt es irgendwo Infos wie der 82C250 an den SJA1000 angeschlossen
werden kann und wozu die TX1 und RX1 des SJA1000 da sind? Die
Datenblätter beider IC's geben da nicht soviel her.

Vielen Dank.

Gruß,
  Jan
Gast
Hast du 2 Controller am Bus ?
Falls nicht wartet der SJA das die Daten ma Bus quittiert werden. Wenn
nicht wird irgend ein Fehlerbit gesetzt.

Bernd
Gast
wenn du nur einen Kontroller hast solltest du den SJA1000 erstmal in den
self test mode schicken. DAnn kannste nämlich auch Messages verschicken
ohne das der Controller dafür von einem einandern auf dem Bus nen Ack
erwartet. So und dann wäre es warscheinlich noch gut die nachricht mit
dem self reception request zu verschicken, dann kannste die nämlich
gleich aus dem Empfangspuffer holen und ansehen ob das angekommen ist
was du auch verschickt hast.
Desweiteren wäre es interessant ob du das Ding im Basic CAN oder
PeliCAN Modus betreiben willst.
Gast
Danke erstmal für die Antworten und den Schaltplan. Guter Tip mit dem
self test mode, werd ich gleich mal ausprobieren. Das ganze soll im
Basic-CAN Modus laufen.
Gruß,
  Jan
Gast
hm kann mir vielleicht einer sagen wie man auf die initalisierung und
eine read/write routine kommt? ich schlag mich auch mit einem sja1000 +
82c250 herum. die beiden sind mit einem stk500 verbunden auf dem ein
8515er mikrocontroller dranhängt.

ausserdem frag ich mich auch ob ich mit dem 82c250er im BasicCan modus
laufen kann, da es ja heißt dieser sei 82c200 kompatibel. is da jetzt
ein prob für den 250er und muss ich deswegen den "erweiterten"
PeliCan modus verwenden?

thx bye Tom
Gast
Soweit ich weis, kannst du die TX0 TX1 und RX0 RX1 konfigurieren.
Das heisst, die Ausgnge können als Opendrain benützt weren, was dann
die Pullups braucht. Es geht natürlich auch push-Pull, dann braucht man
keine WIderstände beim Treiber (TX).
Ebenfalls kann man TX1 im gleichtakt oder gegentakt zu zum TX2
betreiben.

Und natürlich brauchst du mindestens 2 Teilnehmer am Bus, da sonst bei
einem gesendeten Identifier kein Acknowledge vom Bus kommt.

Ach ja und vergiß die 2 Terminatoren von a 120Ohm nicht, das sonst der
Rezesive Pegel vom Bus nicht angenommen werden kann.

Gruß

Max

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.