Hallo Forum,
ich habe eine selbstgestrickte CAN-Platine (im Anhang, siehe
Beitrag "Platinenkritik Hausbus/CAN Eingang" , RXD und TXD sind
hervorgehoben), Prototyp 0.1, und bekomme den CAN nicht zum laufen.
Loopback-Modus geht, mein Logicanalyzer sagt: auf TXD am MAX3051 kommt
noch ein Signal an, aber CANH und CANL bleiben auf ~2.5V und RXD bewegt
sich nicht. RXD müsste aber doch zu mindestens TXD spiegeln.
Um auszuschließen dass ich das Datenblatt im Hinblick auf die Pins RS
(Slope Control) und SHDN (Offline/Stromsparmodus) falsch lese, habe ich
ein Programm geladen, dass alle 8 möglichen Muster an den Eingangspins
TXD/RS/SHDN anlegt und je 2s wartet. RXD ist dabei am Mikrocontroller
als Eingang ohne PullUp oder PullDown konfiguriert (PullNone in
mbed-Speak).
RXD bleibt dabei konstant auf 3.3V.
Der Bus ist in diesem Test bis auf den 120 Ohm Widerstand und die
TVS-Diode nicht verbunden.
Das Phänomen beobachte ich mit beiden meiner Testplatinen.
Also entweder ich verstehe Tabelle 1 im Datenblatt und was ein
CAN-Transreceiver macht falsch, oder beide Chips sind defekt (oder
gefälscht, waren von Aliexpress?).
Kann ich die gebraten haben indem ich mit dem STM32 gegen RXD getrieben
habe? (Wobei das Datenblatt sagt RXD to GND -0.3 bis +6 V).
VCC und GND scheinen korrekt anzuliegen, TXD, RS und SHDN wechseln auch
schön wie es der MC vorgibt.
Hat jemand noch einen Debugvorschlag für mich?
Gruss
FloF
Tja, auch ein frisches PCB mit frischem MAX3051 zeigt das gleiche
Verhalten.
Ich hab auch noch mal 47k an RS gehängt, gibt dann ca 1.7 V an RS (was
zu einer Slew Rate von ca 6V/us führen sollte).
Narf :(
Nicht laut Datenblatt.
CANL auf GND ziehen (ueber 3.3kOhm) zieht CANL auf .2 V, CANH auf 1.6,
RXD reagiert nicht.
Ich messe auch keinen 75k PullDown an SHDN.
Verdächtig.
Kann es sein dass der MAX3051 einen Art Bus-Schutz hat und Low signale
ab einer gewissen Länge wieder ignoriert? Habe gelesen dass andere
CAN-Transreceiver sowas haben, kann aber im Datenblatt nix dazu finden.
Hallo Florian,
ich hab noch nie Probleme mit dem Teil gehabt.
Ich mess 72k von pin 2 nach pin 5.
Vieleicht falsch herum eingebaut ?
Kann ja mal vorkommen...
Ludger
Was ist denn das für ein Suchbild mit dem GND und der Vcc?
Wie auch immer: die LED1 wird mit an Sicherheit grenzender
Wahrscheinlichkeit niemals leuchten...
FloF schrieb:> Um auszuschließen dass ich das Datenblatt im Hinblick auf die Pins RS> (Slope Control) und SHDN (Offline/Stromsparmodus) falsch lese
Die gehören zur sicherhaiet beide auf GND. Später kannst du noch mit dem
Slope-Widerstand herumspielen...
Ludger schrieb:> Vieleicht falsch herum eingebaut ?
Ein Foto wäre in der Tat interessant...
Wenn's denn sein muss, anbei ein Schnellschuss mit der Handykamera.
Das LED1 im Schaltplan falsch herum ist ist bekannt.
Aber es nutzt ja wenig, wenn ich den neuesten Schaltplan statt den der
zu dieser Platine passt poste.
RS und SHDN liegen auf Pins des MC, und werden auch auf GND gezogen.
Tach,
korrekt RS und SHDN auf Masse. RX und TX sind hardwaretechnisch korrekt
angeschlossen. Jetzt muss nur noch die GPIO config im STM stimmen. RX
verhält sich korrekt, wenn es Hi bleibt. Es spiegelt nämlich nicht TX
sondern den BUS. Wenn der nichts macht dann ist RX = Hi OK. Der MAX3051
hat soweit ich weiß keinen watchdog um hängende master vom Bus zu
trennen. Allerdings macht der CAN controler im STM das.
Diese chips sind zu simpel als das man die nicht zum laufen bekommt.
Dein Problem liegt vorher. Meine Vermutung ist, dass du Probleme mit
deinem CAN controler hast. Der loopback mode ist keine ausreichende
Bestätigung, dass der controler sachgemäß arbeitet.
Ich würde empfehlen TX manuell mit der angepeilten bitrate zu toggeln
und mal nachschauen was der transceiver macht.
Thor
Hallo Thor, danke fuer Deine Analyse.
Genau das hab ich zuletzt gemacht, TX mit 10kHZ (und auch einmal mit
1Hz) getoggelt, weder der Bus noch RX machen irgendwas.
Das kann laut Datenblatt nicht sein, wenn der Bus abgekoppelt ist, muss
nach Tabelle 1 RX TX widerspiegeln.
Auch das der interne Pulldown zwischen GND und SHDN fehlt deutet
vermutlich darauf hin, dass ich hier Tand mit MAX3051 Beschriftung
gekauft habe.
Ich warte jetzt mal die Mouserlieferung ab, in der sind ja dann
hoffentlich funktionierende MAX3051, und wenn die immer noch nicht
wollen, der noch simplerer SN65HVD232 - der hat ja dann 0 Extras.
Gruss
FloF
Mhh, OK. Was auch immer und wo auch immer du da gekauft hast...
Kann es vielleicht sein, dass das ein MAX13051 ist? Funktional fast das
selbe chip aber für 5V.
Thor
So, die Mouser MAX3051 sind da, und funktionieren!
Anbei ein paar der Bilder, die Chips sehen auch sehr unterschiedlich
aus:
(die Bilder sind mit dem gleichen Licht etc gemacht - der Chinachip
lässt sich wirklich so bescheiden lesen. Ich hab auch den Eindruck dass
Isopropanol zum Flussmittel-entfernen die Beschriftung noch schlechter
macht).
-Original: Lasergravur. China: Schlechter Siebdruck
-Original: Einkerbung am Pin 1, Pin 1-Punkt Lasergraviertes Kreuz.
China: Keine Einkerbung, Pin1-Punkt als Vertiefung im Gehäuse.
-Original: Rückseite Lasergraviert, M Phili-ppines BF. China:
Eingeprägt, THAILAND OII, mit einem J in der Mitte
Da sieht man wieder mal... Wer billig kauft, kauft zweimal. Aber schön,
dass Deine Schaltung jetzt funktioniert.
Vielleicht funktionieren die China-Teile ja doch und die haben die Pin 1
Markierung nur falschrum draufgemacht?
@Bad Urban: Dann käme aber kein rezessiver CAN Pegel aus den erwarteten
Pins. Und der erwartete Pulldown ist anders herum auch nicht da.
Und billig: Nein. Die Dinger haben 1.593 USD / Chip inkl. Versand
gekostet.
Bei Mouser hab ich jetzt 1.470 EUR / Chip bezahlt - musste aber deutlich
mehr Kram abnehmen um keinen Versand zu zahlen.
(beide Zahlen ohne Einfuhrumsatzsteuer).
Das ist jetzt kein Preisunterschied wo man direkt erwarten muss
Fälschungen zu erhalten.
Ah, OK.
Ich dachte wegen dem Preis. Den Max kenn ich jetzt nicht, aber
CAN-Transceiver in SO8 bekommt man ja überall als Einzelstück.
Hab grad gesehen, dass es ein 3,3V Transceiver ist. Die sind wohl etwas
seltener.
@Bad Urban: Prinzipiell ja, aber 3.3V sind schon schwieriger.
Reichelt hat mittlerweile den SN65HVD230D und SN65HVD231D im Programm.
Nur da muss man aufpassen, der 0D kann Standby (Listen Only), der 1D
kann Sleep (=tiefschlaf) und der 2D kann weder noch und und verbrät
10mA. Der Max3051 kann das halt alles in einem und verbraucht typisch 2
statt 10 mA (recessive, 5 vs 17 mA max).
Beim Senden hingegen braucht der Max typisch 35, max 70 mA, der ST nur
10-17. Da stimmt irgendwas im Datenblatt aber auch nicht, 1 Volt
unterschied gegen 60 Ohm gibt nach URI nur 16.6 mA. Vielleicht kann der
Max gegen widrigere Umstände antreiben.
Und hier ist was Maxim dazu sagt:
"The company ShenZhen McNair Nordson Electronics is NOT an authorized
reseller of Maxim parts. The pictured parts from them are counterfeit.
None of the markings on the parts match any lots we manufactured."
Da hast Du dir ja schon eine gute Übersicht angelesen.
Leistungsmessungen stehen bei mir auch noch aus. Aber erstmal müssen ein
paar andere Sachen fertig werden.