Hallo, hat schonmal jemand einen Lin-Slave mit dem MSP430F5348 gemacht? Das Teil kann ja angeblich LIN mit den UCSI_A, aber so richtig was dazu gefunden an Application Note oder Codebeispielen habe ich nicht. Unter anderem hänge ich an der Initialisierung der UCSI, insbesondere wie das mit der breakdetection funktioniert. Da soll ja eigentlich ein Interrupt ausgelöst werden, aber wie heisst die ISR dazu? Hat vielleicht jemand ein Beispiel? Vielen Dank und viele Grüße, mui PS: Irgendwann soll auch ein Master implementiert werden, aber das kommt dann später...
Hannes H. schrieb: > Hallo, > > hat schonmal jemand einen Lin-Slave mit dem MSP430F5348 gemacht? Nö, bloß mal angedacht... > das Teil kann ja angeblich LIN mit den UCSI_A, aber so richtig was dazu > gefunden an Application Note oder Codebeispielen habe ich nicht. Naja... die USCI hat das "automatic baud rate" feature, mit break detection und Synchronisierung. Das ist aber alles in Hardware gegossen und man kümmert sich eigentlich nur noch um die "normale" UART dahinter. > Unter anderem hänge ich an der Initialisierung der UCSI, insbesondere > wie das mit der breakdetection funktioniert. Da soll ja eigentlich ein > Interrupt ausgelöst werden, aber wie heisst die ISR dazu? Wüsste jetzt nicht, wozu man diesen IRQ bräuchte? > > PS: Irgendwann soll auch ein Master implementiert werden, aber das kommt > dann später... Sollte mit der Einstellung "automatic baud rate" ebenfalls automatisch funktionieren...
Stefan schrieb: >> das Teil kann ja angeblich LIN mit den UCSI_A, aber so richtig was dazu >> gefunden an Application Note oder Codebeispielen habe ich nicht. > Naja... die USCI hat das "automatic baud rate" feature, mit break > detection und Synchronisierung. Das ist aber alles in Hardware gegossen > und man kümmert sich eigentlich nur noch um die "normale" UART dahinter. > Genau, das mit der automatik baudrate detection habe ich auch schon gefunden und eingestellt. Bedeutet das dann, dass das ID-Feld vom Master das Erste ist, was im RX-Buffer landet? Und muss ich dann nur noch einen TX mit der Uart machen mit den Datenfeldern um dem Master die Daten zukommen zu lassen? Muss ich Checksumme und Parity dann manuell berechnen und verschicken, oder passiert das auch automatisch? >> Unter anderem hänge ich an der Initialisierung der UCSI, insbesondere >> wie das mit der breakdetection funktioniert. Da soll ja eigentlich ein >> Interrupt ausgelöst werden, aber wie heisst die ISR dazu? > Wüsste jetzt nicht, wozu man diesen IRQ bräuchte? Naja, ich dachte halt, dass der break erfasst werden muss um dann das autobaud feature zu nutzen, bzw. um dann Daten zu senden?! aber wenn das alles automatisch gemacht wird, bräuchte ich da gar nicht drauf achten... Hier ist nochmal der Code, mit dem ich die UCSI initialisiere - viellecht kann da ma jemand ein Auge drauf werfen, ob das halbwegs passt: Viele Grüße, mui
1 | void main(void) |
2 | {
|
3 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT |
4 | InitLinSlave(); |
5 | while(1); |
6 | }
|
7 | |
8 | void InitLinSlave(void) |
9 | {
|
10 | P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD |
11 | UCA0CTL1 |= UCSWRST; // **Put state machine in reset** |
12 | UCA0CTL1 |= UCSSEL_2; // SMCLK |
13 | UCA0ABCTL |= UCABDEN; // LIN-Control -> autobaud |
14 | UCA0CTL0 |= UCMODE0|UCMODE1; // LIN-Mode |
15 | UCA0CTL1 |= UCBRKIE; //enable break interrupt |
16 | UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** |
17 | UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt |
18 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.