Hallo,
ich möchte gern wissen, wie man die Baudrate für den CAN-Bus berechnen
kann.
Die clock-Frequenz ist 5MHz und die Geschwindigkeit F_Bit= 125Kbs.
Wie kann ich die Werte BRP.PHS SJW etc berechnen und in dem
entsprechenden CAN-Register setzten. Der Controller ist der AT90CAN von
ATMEL.
Danke
das ist relativ gut im Datenblatt vom SJA1000 erklärt - is aber ein
mords scheiß zum rechnen scnr :D
ich rechne immer zuerst die Tscl aus, dabei beginne ich mit einem
prescaler von "0". Mit dem errechneten Werte rechne ich dann Tseg1 aus,
bin ich hier dann über "16", rechne ich Tscl nochmals aus, dieses mal
aber mit einem prescaler von 2, dann 4 .... bis ich bei Tseg1 unter 16
komme!
Tscl = 2 * Tclk *(Prescaller*1)
Tscl = 2 * 1/5MHz
tscl = 0,4µs
Tseg1 = 8µs (=125KBaud) - 0,4µs * 0,72(=72%) = 5,472µs
Tseg1 = 0,4µs (5,472µs + 1)
Tseg1 = 13 (12,68)
und dann rechnest Du Tseg2 einfach mit den beiden oberen Werten aus
Tseg2 = 8µs (=125Kbaud) - 0,4µs - (( 13+1)x0,4)
Tseg2 = 2
Tseg2 = 0,4µs (Tseg2 + 1)
Tseg2 = 0,4µs (2+1) ==> 2 / 0,4µs - 1
Tseg2 = 4
Ich hoffe es ist ein wenig verständlich.
Wichtig ist, dass Du mit entsprechenden Nachkomastellen rechnest, besser
gleich als Bruch - Hier hat man sehr schnell Rundungsfehler drin!!!
Hallo,
ist es so richtig?
Tq=BRP/Fsys
Tq=Time Quantum, Fsys=System-Takt des CAN-Controllers =Fckl/2
soll ich BRP freiwillig wählen?
Tbit=Tsyns + Tprs+ Tphs1 + Tphs2
mit Tsyns=Tsys
danke
ja, BRP ist der Bit-Prescaler, den benötigst Du wenn Dein Takt zu hoch
ist, bei 5MHz kann der auf 1 bleiben. Ich habe oben versehentlich "0"
geschrieben, meinte aber 1 (geteilt durch Null geht nicht, es soll
heißen geteilt durch 1.
Den brauchst Du, wenn Dein Proz mal schneller läuft, aber 5MHz ist ja
keine Geschwindigkeit!
BPR = 1
Das Tq ist in meiner Formel das Tscl - vergieß beim TQ nicht dass es mal
2 heißt, also nicht BPR/Fsys sondern 2*BPR/Fsys
Bei 125Kbaud sind es also 0,4 µs nicht 0,2µs was bei Deiner Rechnung
heraus kämme!
Die Rechnung oben von mir müsste eignetlich stimmen! - warum beim link
von esacademy al Tseg2 nur die Hälfte steht weiß ich nicht, bin mir aber
recht sicher dass es mit meiner Rechnung passt - der rest stimmt ja eh
mit esacademy überein!
Hallo !
Sorry to bother, aber ich schein zu B blöd dafür zu sein:
Ich habe einen 14.7456 MHz Oszillator
und möchte mit 500 KBit kommunizieren.
Ich versuche das schon wirklich lange,
kann mir bitte jemand auf die Sprünge helfen??
Vielen, vielen Dank
bitbo
bitbo schrieb:> Ich versuche das schon wirklich lange,> kann mir bitte jemand auf die Sprünge helfen??
Wenn Du schon einen steinalten Thread kaperst, dann zeig' doch mal einen
Deiner Rechenansätze.