Guten Tag!
Meine Frage: kann man CAN-Transceiver als UART-Sender/Empfänger (in eine Richtung) benutzen? Oder gibt es Umstände, die dagegen wirken?
Ich glaube, für eine symmetrische Übertragung könnte CAN-Transceiver bestimmte Vorteile im Vergleich mit RS-422 haben...
Hier geht es bei mir um eine Einzellösung, deshalb muß ich mich an keine einheitlichen technischen Normen halten. Sowieso geht es bei mir um 9-bit-Mode von UART...
Ich möchte jede 3 mS 4 Bytes mit 250 kBod übertragen. Mehr nicht. D.h. Sender wird nur 5,5% Zeit aktiv. Aber alles sollte u.A. auch von Akku laufen, deshalb ist Verbrauch wichtig.
Meine Frage: kann man CAN-Transceiver als UART-Sender/Empfänger (in eine
Richtung) benutzen? Oder gibt es Umstände, die dagegen wirken?
CAN-Transceiver haben ein Timeout für dominante Zustände und damit eine Mindestbitrate, damit kein Teilnehmer den Bus blockieren kann. Das könnte für einen UART doof werden.
CAN-Transceiver haben ein Timeout für dominante Zustände und damit eine
Mindestbitrate, damit kein Teilnehmer den Bus blockieren kann. Das
könnte für einen UART doof werden.
Laut Datasheet für MCP2561/2FD ist zulässige Bit Time zwischen 0.2 und 69.44 μs. Bei 250 kbps ist Dominanz-Zeit auch bei 9 "0" und Startbit 40 μs, d.h. in Grenzen. Notfalls wäre 500 kbps auch denkbar.
Ich möchte je 4 Bytes über 2 Meter übertragen, so einfach wie es nur geht. Aber auch in Feldeinsatz. Deshalb auch 9-bit-Modus: wenn Bit 9=1, werden zuletzt empfangene 4 Bytes in Hauptpuffer kopiert und bearbeitet. Ich glaube, 2 Meter sind für schnelle asymmetrische Übertragung über Kabel schon etwas zu viel...
Diese Bausteine haben keine Timeouts oder sonstige Logikfunktionen drin,
sondern übertragen einfach nur, was am Eingang reinkommt.
Danke für Tipps!
Aber so wie ich verstehe, während MCP2561 in dem passiven Zustand die Linie frei läßt und somit 120 Ohm-Widerstand ohne Strom bleibt, bleibt bei LVDS die Linie immer unter Last, auch wenn "1" übertragen wird?
Wenn wirklich so, dann ist klassische RS422 Transceiver wie DS89C21 etwa LVDS gleich?
Für 250kbps sind diese Bausteine doch alle viel zu schnell. Es gibt RS-422 (oder RS-485) Transceiver, die für maximal 250kbps (oder 115k oder 500k) optimiert sind. Der Sender begrenzt die Flankensteilheit, deshalb kann man für kurze Verbindungen auf Abschlusswiderstände verzichten. Die Chips selbst brauchen auch weniger Strom (ISL3170/1/2: weniger als 1mA; sendend, nicht standby).
Aber so wie ich verstehe, während MCP2561 in dem passiven Zustand die
Linie frei läßt und somit 120 Ohm-Widerstand ohne Strom bleibt, bleibt
bei LVDS die Linie immer unter Last, auch wenn "1" übertragen wird?
Wenn wirklich so, dann ist klassische RS422 Transceiver wie DS89C21 etwa
LVDS gleich?
Achte auf das LV von LVDS. Das steht für Low Voltage, d.h. nur einige 100mV Spannungsdifferenz zwischen + und - (hier nominal 350mV). Dadurch wird im Terminierungswiderstand deutlich weniger Leistung verbraten als bei RS422 mit >=2V oder bei CAN mit nominal 2V zwischen CAN_H und CAN_L und 60 Ohm Terminierung (120R an jedem Ende). Rechne selber nach.
Wenn Du CAN als physical layer wählst, nimm einen langsamen Transceiver und keinen, der für CAN-FD gedacht ist.
Plus: CAN ist ein 5V-Standard. Wenn Du Leistung sparen willst, gehtst Du besser mit der Betriebsspannung runter, am Besten auf 1.8V Die Spannung geht immerhin quadratisch in die Verlustleistung ein, und zwischen 5V und 1.8V liegt ein Faktor 8 in der Leistung.
Plus: CAN ist ein 5V-Standard. Wenn Du Leistung sparen willst, gehtst Du
besser mit der Betriebsspannung runter, am Besten auf 1.8V Die Spannung
geht immerhin quadratisch in die Verlustleistung ein, und zwischen 5V
und 1.8V liegt ein Faktor 8 in der Leistung.
Danke für Tipps!
5 Volt ist für mich übrigens bequemer, da andere Schaltung auch 5 Volt braucht... Aber hier gibt es noch was zu überlegen... Idee mit DS90LV gefällt mir im Prinzip...
CAN-Transceiver haben ein Timeout für dominante Zustände und damit eine
Mindestbitrate, damit kein Teilnehmer den Bus blockieren kann. Das
könnte für einen UART doof werden.
Ich habe nun Datasheet für SN65HVD230/1/2 angeckuckt. Habe ich richtig verstanden, daß dieser Transceiver, zum Unterschied von MCP2561/2, kein Timeout und somit keine Mindestbitrate hat?
CAN-Transceiver bleibt immer noch in meinen Gedanken als mögliche Lösung für UART, da rezessiv kaum Strom auf den 120 Ohm-Widerstand verbraucht wird.
Ich habe nun Datasheet für SN65HVD230/1/2 angeckuckt. Habe ich richtig
verstanden, daß dieser Transceiver, zum Unterschied von MCP2561/2, kein
Timeout und somit keine Mindestbitrate hat?
ja, die uralten Gesellen hatten das noch nicht. Der alte PCA82C251 auch nicht.
CAN-Transceiver bleibt immer noch in meinen Gedanken als mögliche Lösung
für UART, da rezessiv kaum Strom auf den 120 Ohm-Widerstand verbraucht wird.