Forum: Mikrocontroller und Digitale Elektronik MCP2561FD für UART?


von Maxim B. (max182)


Lesenswert?

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...

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

Maxim B. schrieb:
> Ich glaube, für eine symmetrische Übertragung könnte CAN-Transceiver
> bestimmte Vorteile im Vergleich mit RS-422 haben...

Und welche?

von Maxim B. (max182)


Lesenswert?

Sebastian R. schrieb:
> Und welche?

In Ruhe wird Stromverbrauch ohne Tricks geringer.

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.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Maxim B. schrieb:

> 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.

Du könntest auf LVDS gehen:

Transmitter: https://www.ti.com/product/de-de/DS90LV011A
Receiver: https://www.ti.com/product/de-de/DS90LT012A

Diese Bausteine haben keine Timeouts oder sonstige Logikfunktionen drin, 
sondern übertragen einfach nur, was am Eingang reinkommt.

Für einen Multidrop-Bus brauchst Du den DS90LV012A. Der hat im Gegensatz 
zum LT keinen 100R Abschlusswiderstand drin.

fchk

von Maxim B. (max182)


Lesenswert?

Frank K. schrieb:

> 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...

> Du könntest auf LVDS gehen:
>
> Transmitter: https://www.ti.com/product/de-de/DS90LV011A
> Receiver: https://www.ti.com/product/de-de/DS90LT012A
>
> 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?

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

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).

von Maxim B. (max182)


Lesenswert?

Bauform B. schrieb:
> Die Chips selbst brauchen auch weniger Strom (ISL3170/1/2:
> weniger als 1mA; sendend, nicht standby).

Aber Widerstand 120 Ohm braucht schon einiges von Strom. Und wenn nur 5% 
der Zeit das wirklich notwendig ist...

Wenn sonst nichts gegen CAN-Transceiver spricht, scheint mir das als 
geeignet zu sein? Bei CAN wird Linie nur für dominanten Zustand 
belastet.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Maxim B. schrieb:

> 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.

So geht dann Energiesparen richtig.

fchk

von Maxim B. (max182)


Lesenswert?

Frank K. schrieb:
> 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...

: Bearbeitet durch User
von Maxim B. (max182)


Lesenswert?

Frank K. schrieb:
> 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.

: Bearbeitet durch User
von Thomas F. (igel)


Lesenswert?

Maxim B. schrieb:
> 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.

Es gibt auch Single-Wire CAN...

https://www.nxp.com/products/interfaces/can-transceivers/legacy-can/single-wire-can-transceiver:MC33897

von Maxim B. (max182)


Lesenswert?

Thomas F. schrieb:
> Es gibt auch Single-Wire CAN...
>
> 
https://www.nxp.com/products/interfaces/can-transceivers/legacy-can/single-wire-can-transceiver:MC33897

Danke, ich habe schon angekuckt. Auch möglich. Aber ziemlich langsam.

> ja, die uralten Gesellen hatten das noch nicht.

> MARCH 2001–REVISED APRIL 2018
> NOVEMBER 2002–REVISED OCTOBER 2015
Hauptsache, alles funktioniert. Logische IC 74HC und 4000 sind auch 
uralt, und man nimmt sie immer noch...

: Bearbeitet durch User
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.