Forum: Mikrocontroller und Digitale Elektronik PIC: RS232 und CAN gleichzeitig?


von Astroboy (Gast)


Lesenswert?

Habe einen PIC18F4580 und möchte die ECAN Peripherie nutzen. Da ich auch 
den internen UART nutze möchte ich einen Baudratenquarz einsetzen... nun 
ist mir aber aufgefallen, dass sich mit einem Baudratenquarz unmöglich 
die CAN Baudraten erzeugen lassen... Mit dem internen RC Oszi konnte ich 
eine CAN Verbindung aufbauen (125 kBaud).

Muss ich mich nun entscheiden ob ich CAN oder RS232 nutzen will? Was 
verzeiht mir eher einen Baudratenfehler? Ich würde nach jetzigen 
Erkenntnisstand einen 10 MHz Quarz einsetzen und die x4 PLL nutzen 
(40MHz).

Bis auf was für eine Baudrate könnte ich damit noch (sicher!) hoch 
gehen?

Ist es so, dass schon bei geringsten Baudratenfehler es irgendwann zu 
einem Übertragungsfehler kommt (der sampling point müsste sich ja ganz 
langsam verschieben) oder synchronisiert sich der Empfänger (mein PC) 
immer wieder neu mit dem RS232 Datentakt?

von Andreas K. (a-k)


Lesenswert?

Bei hohen CAN Raten ist CAN sensibler spezifiziert als UART. Nimm also 
einen für CAN passenden Quarz, der die UART Baudraten mit einem Fehler 
von max 1-2% erzeugen kann. Ich weiss grad nicht ob's dem PIC so passt, 
aber 15MHz (ist dicht genug am Baudratenquarz 14,7xxxMHz) und 16MHz sind 
gute Frequenzen dafür.

von Severino R. (severino)


Lesenswert?

Astroboy wrote:

> Ist es so, dass schon bei geringsten Baudratenfehler es irgendwann zu
> einem Übertragungsfehler kommt (der sampling point müsste sich ja ganz
> langsam verschieben) oder synchronisiert sich der Empfänger (mein PC)
> immer wieder neu mit dem RS232 Datentakt?

Leider hast Du nicht geschrieben, wie Du über RS232 kommunizieren 
willst. RS232 definiert Pegel und Stecker, aber nicht Datenformate etc.

Die meisten meinen jedoch mit RS232 die asynchron-serielle 
Schnittstelle, wie sie auch im PC anzutreffen ist (oder schon war?).

Bei dieser Schnittstelle werden ein Startbit, typischerweise 7 oder 8 
Datenbits sowie ein oder zwei Stopbits übertragen. Der Empfänger 
synchronisiert sich auf das Startbit und wartet anschliessend zuerst mal 
ca. 1,5 x Bitzeit, bevor er das erste Datenbit liest. Somit liest der 
Empfänger ziemlich genau in der Mitte des Datenbytes.
Eine Abweichung von 10% der Bitzeit führt somit nach fünf Bits dazu, 
dass der Empfänger an der "Grenze" zwischen zwei Bits liest, was 
definitiv schief geht. Das heisst aber auch, dass eine Abweichung von 1% 
erst nach 50 Bits wirklich definitiv schief geht, in der Praxis 
jedenfalls erst nach mehr als 10 Bits, und dann ist das Byte ja fertig 
übertragen.

Alles klar?

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.