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
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
Wieso brauchst du Pullup Widerstände für RX u. TX ? Schau dir mal den Anhang an. MfG Uwe
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.
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
ok im BasicCAN Mode kann ich dir nicht groß helfen, aber hast du den Controller richtig konfiguriert? Baud Rate Prescaler, etc.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.