Hallo, weiß jemand welche Baudratenanbweichung beim CAN Bus zulässig sind. Ich möchte einen Prozessor von Silabs ehemals Cygnal einsetzen. Der hat einen internen Oszzilator mit einer Abweichung von 2%. Die Frage ist nun ist das OK, oder muß ich doch einen Quarz anschließen ???
2% iss nich, auf gut deutsch. Soweit ich weiss muessen es 1.5% sein oder noch weniger bei hohen Taktraten. Quarz oder PLL sind aber doch nicht so teuer.
Diesmal geht es allein um Größe. Der Quarz ist dann schon fast so groß wie der Microcontroller. Und die wirklich kleinen SMD Quarze sind dann wirklich zu teuer, oder nur in Rollen a 10.000 zu erhalten. Aber wenns nicht geht, dann geht es nicht......
Ich kenne Deinen uC nicht. Aber viele wie etwa der MSP430 laufen mit einem winzig kleinen Uhrenquartz und der Hauptoszillator ist dann in einer Regelschleife daran gekoppelt. Geht so etwas mit Deinem Controller?
Auch andere Quarze bekommt man in einem Gehaeuse, dass zwar so breit und lang ist wie ein Mini Quartz, jedoch nur etwa 3mm hoch. Am besten mal bei einem Hersteller fragen. Bei Euch in Deutschland vielleicht Dr.Steeg & Reuter? In der Eifel gibt es noch einen Hersteller, aber ich habe den Namen vergessen.
Es gibt ein Papier zum CAN-Bittiming anbei der Link:
formatting link
Auf S.6 unten ist die Toleranz ausgeführt. Wichtig: die Baudrate! Die erwähnst Du nicht.
2% auf was? Hast Du ein Datenblatt vom Oszillator? Wenn die Abweichung worst-case ist, d.h. Alterung und Temperatur dann solltest Du einmal Regelabweichung anschauen. Der von Dir favorisierte µC besitzt sicher einen Resonator, und bei der Anpassung der CAN-Spec von V1.1 auf V1.2 wollte man eben auch den Einsatz von Resonatoren ermöglichen.
Nö, Du benötigst nicht unbedingt einen Quarz, deswegen mein Dissenz zu den anderen Postings. 2% ist normalerweise eine worst-case Abweichung, wenn Du eine Baudrate von 100 kBaud nutzen kannst (man bedenke, ein CAN-Frame benötigt dann ~ 1,3 ms alleine zur physikalischen Übertragung über den Bus) dann funktioniert der Bus auch mit 2%. Ist Dein Netzwerk single-source mit diesem µC bestückt, wie sieht die Toleranz der anderen CAN-Knoten aus? Du schreibst leider zu wenig über die verknüpfte Anwendung (bspw. Labormeßplatz 2 CAN-Knoten, 2 m Leitungslänge etc.). Beim entsprechendem Setup der Bittimingregister solltest Du einen Bus mit 100 kBaud zum Laufen bekommen. Da Theorie und Praxis beim CAN oft auseinandergehen kannst Du natürlich auch Tests mit 250 kBaud oder 500 kBaud machen, denn 2% sind sicher ein Datenblattwert, oder?
Bitte mehr Details über Deine Anwendung, dann kann man auch präzisere Empfehlungen abgeben.
Es gibt OEM mit schärferen Vorgaben, für bestimmte Anwendungen (Labormeßplätze etc.) kann man aber sicher auch mal mit 2% experimentieren, wenn man keine anderen µC zur Auswahl hat.
Ich kenne Deinen Prozessor nicht. Daraus, dass er aber mit 2% Abweichung kommt, schliesse ich aber dass er keinen integrierten CAN Bus Controller hat und Du das Protokoll stattdessen in Software programmierst. In diesem Fall solltest Du einfach ein variables Timing realisieren. Orientiere Dich an den Daten, die Dir geschickt werden (andere Busteilnehmer bzw ACK/NAK Slots falls es keine anderen aktiven Teilnehmer gibt). Fuehre eine Messung durch, und passe daraufhin Deine Sende-Rate an. Die Messung sollte regelmaessig durchgefuehrt werden (am besten kontinuierlich bei jedem empfangenen Paket), da Temperaturschwankungen Deinen internen Oszillator beinflussen.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.