Forum: Mikrocontroller und Digitale Elektronik CAN: 82C250 an SJA1000


von Jan (Gast)


Lesenswert?

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

von Bernd Schmidt (Gast)


Lesenswert?

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

von Uwe Bleile (Gast)


Angehängte Dateien:

Lesenswert?

Wieso brauchst du Pullup Widerstände für RX u. TX ?
Schau dir mal den Anhang an.

MfG  Uwe

von Markus (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

ok im BasicCAN Mode kann ich dir nicht groß helfen, aber hast du den
Controller richtig konfiguriert? Baud Rate Prescaler, etc.

von Tommy (Gast)


Lesenswert?

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

von Max Müller (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.