Willkommen in unserer Community

Werde Teil unserer Community und registriere dich jetzt kostenlos ...

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

CAN Baudrate berechnen?

Dieses Thema im Forum "Hardware" wurde erstellt von Janiiix3, 3. Oktober 2017.

  1. Janiiix3

    Janiiix3 Mitglied

    Registriert seit:
    28. September 2013
    Beiträge:
    976
    Zustimmungen:
    4
    Ort:
    Hannover
    Sprachen:
    C#
    Map
    Nabend.

    Es gibt hier doch sicherlich CAN erfahrene User oder?
    Mich würde mal genau interessieren, wie es mit der Berechnung aussieht. Es ist wohl mit irgendwelchen Zeit Quanten? Verbunden?

    Wie genau berechne ich diese?
     
  2. TommyB

    TommyB Premium Benutzer

    Registriert seit:
    17. Mai 2010
    Beiträge:
    1.599
    Zustimmungen:
    42
    Ort:
    127.0.0.1 ;)
    Sprachen:
    C#, Assembler, LunaAVR, VB.Net, Python
    Och mensch Jan,
    "wie berechne ich die Länge von Obst?"

    Was willst du machen? Was ist die Ausgangssituation? Welchen Chip / welches System willst du ansteuern?
    CAN ist nur eine serielles Schnittstelle wie I²C, SPI, RS-232, RS-485, ... auch. Das sagt überhaupt nichts aus, schon gar nicht über das Timing. Über das Protokoll was verwendet wird erst recht nicht.

    Ich habe ein SPI Display schon mit 4MHz Clock befeuert und es ging, es würde aber auch mit 1Hz gehen, dauert halt nur etwas länger. Ist halt vom Gegenüber abhängig. Afaik ist nur USB extrem strikt (auf beiden Seiten) was das Timing angeht.
     
  3. Janiiix3

    Janiiix3 Mitglied

    Registriert seit:
    28. September 2013
    Beiträge:
    976
    Zustimmungen:
    4
    Ort:
    Hannover
    Sprachen:
    C#
    Map
    Die Ausgangssituation ist doch relativ. Mich interessiert einfach nur wie man das Bit Timing berechnet.
    Es wird wohl 1 Bit in mehrere Zeit Quartalen betrachtet. Um dieses zum Sync. und zur Fehlerkorrektur zu benutzen.

    Mich würde jetzt Interessieren, wie ich das ganze Timing berechne. Unabhänging vom welchem System oder geschweige denn einer Anwendung.
     
  4. TommyB

    TommyB Premium Benutzer

    Registriert seit:
    17. Mai 2010
    Beiträge:
    1.599
    Zustimmungen:
    42
    Ort:
    127.0.0.1 ;)
    Sprachen:
    C#, Assembler, LunaAVR, VB.Net, Python
    Das handelt jeder IC anders. Die meisten AVRs machen meine ich 8 Samples pro Bit, bei gedoppelter Bitrate nur 4. Davon ist aber eher abzuraten weil sich da das ein oder andere fehlerhafte Bit einschleusen könnte. Bei UART zumindest. Bei seriellen Verbindungen mit Clock Signal (wie SPI) ist das natürlich nicht notwendig.

    Ein Timing wird da nicht berechnet. 8 Samples pro Bit, also Baud*8, in diesem Fall. Gibt garantiert auch Chips die nehmen mehr oder weniger.
     
  5. Hemi

    Hemi Premium Benutzer

    Registriert seit:
    30. November 2008
    Beiträge:
    956
    Zustimmungen:
    4
    Ort:
    Korntal-Münchingen, Germany
    Sprachen:
    C#, C++, PHP, Java
    Map
    @Thomas: Ganz so einfach wie bei UART ist es bei CAN nicht. Die Botschaft, die auf dem Bus landet, ist viel größer als nur Nutzdaten... Da wäre arbitration field (mit sof), control field, data field, crc field, ack field, end of frame, ims..

    @Janiiix3: Was willst Du genau berechnen? Von welchem CAN reden wir? LowSpeed? HighSpeed? CAN-FD? Wie lang ist der Identifier? Willst Du Netto- (nur Nutzdaten oder alles, also mit CAN-ID und DLC) oder Brutto berechnen? So lässt es sich nicht berechnen. CAN ist ein ereignisgesteuertes Protokol... Du stellst die Geschwindigkeit ein (sagen wir mal 500kbit/s) und dann hast Du eben die Buslast. Deswegen verstehe ich nicht, was Du genau willst.
     
  6. TommyB

    TommyB Premium Benutzer

    Registriert seit:
    17. Mai 2010
    Beiträge:
    1.599
    Zustimmungen:
    42
    Ort:
    127.0.0.1 ;)
    Sprachen:
    C#, Assembler, LunaAVR, VB.Net, Python
    @Hemi Das stimmt garantiert. Aber es ging ja so wie ich es verstanden habe um die Berechnung der Geschwindigkeit/Baudrate und nicht um das CAN Protokoll selbst ;)
    Ist ja wie Eisfischen. Ohne Loch.
     
  7. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.668
    Zustimmungen:
    37
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Eben.
    Du kannst auch beim UART irgendein Protokoll drüberstricken (zB mit dem Multi Prozessor Communication Mode) - die Frage zielte aber nur auf die Baudrate, die Zeit eines Bits ab.
    Und die wird eben festgelegt.
    Beim CAN gibt es aber Bedingungen, zB daß der Anstieg und Abfall der Signale nur einen gewissen Teil der gesamt-Bitzeit haben darf. Diese Zeiten sind abhängig von der "Länge" des Busses (inklusive Verzweigungen (Stichleitungen)), und der Anzahl der Teilnehmer. Diese Zeiten beschränken also die Maximale Baudrate.
    UART arbeitet (üblicherweise) mit Push-Pull-Ausgängen - die Flanken sind also recht steil.
    Bein CAN sind die beiden Leitungen über Terminatoren (?) an den Busenden quasi kurzgeschlossen, haben im Ruhezustand bzw einem Null-Bit denselben Pegel. Eine "1" zwingt die beiden CAN-Leitungen (dominant) auseinander, die Rückkehr zur "0" erfolgt rezessiv über die Terminatoren. Die Flanken hängen also von der Gesamtkapazität des Busses (inklusive Teilnehmer) ab.

    Nachtrag:
    AVR-UART...
    nicht ganz...
    es werden in beiden Fällen drei Samples genommen, und davon die Majorität (Mehrheit) gebildet (demokratisch abgestimmt ;) )
    Im normalen Modus läuft das Sampling mit dem sechzehnfachen der Baudrate, verwendet werden die Samples 8, 9 und 10.
    Bei doppelter Bitrate läuft das Sampling mit dem achtfachen der Baudrate, verwendet werden die Samples 4, 5 und 6.
     
    #7 LotadaC, 14. Oktober 2017
    Zuletzt bearbeitet: 14. Oktober 2017
  8. Hemi

    Hemi Premium Benutzer

    Registriert seit:
    30. November 2008
    Beiträge:
    956
    Zustimmungen:
    4
    Ort:
    Korntal-Münchingen, Germany
    Sprachen:
    C#, C++, PHP, Java
    Map
    Ja, aber Du kannst CAN nicht mit UART vergleichen. Bits ist das Eine, aber Du hast noch den CAN-Controller der auf den Pins sitzt...

    Ausserdem man gibt doch die Geschwindigkeit vor? Was will man da berechnen?

    Es kommt drauf an, wie es terminiert ist. Bei HighSpeed sind beide Enden mit 120Ohm terminiert, bei LowSeed wird jeder Node terminiert.
     
  9. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.668
    Zustimmungen:
    37
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Ich weiß nicht, was Jan da konkret hat. Möglicherweise ist es auch ein AT90CAN... , also mit integriertem CAN-Controller, und da muß dann natürlich auch unter anderem ein Baudrateprescaler an die festgelegte Baudrate/CAN Frequenz angepaßt werden.
    Beim AVR-UART wird die Baudrate vorgegeben, man muß einen Teiler (Baudrateregister - UBRR) ausrechnen um diese mit dem Systemtakt zu treffen.
    Beim CAN wird auch eine Baudrate vorgegeben, vielleicht(!) zielt Jans Frage hier auf das entsprechende Äquivalent (CAN Bit Timing Register - CANBT3..1) ab...

    Du kannst sicher (masochistisch veranlagt) auch alles in Software in einen AVR stricken...
     

Diese Seite empfehlen

  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)