Forum: Mikrocontroller und Digitale Elektronik MSP430 Problem mit Baudrate


von Georg (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier ein Evaluation Board von InvenSense(MPU-9250CA-SDK). Mit 
diesem möchte ich Beschleunigungen messen und per Bluetooth am PC 
auslesen. Verbaut ist ein MSP430F5528.
Ich habe ein Problem mit der Baudrate. Standardmäßig ist diese auf 
115200 Baud eingestellt. Diese möchte ich gerne verdoppeln. Dazu wähle 
ich folgende Einstellungen beim initialisieren des UARTS (bei 20 MHz).
1
int msp430_uart_init(void)
2
{
3
    /* Set P3.3 (TX) and P3.4 (RX) to UART mode. */
4
    P3DIR &= ~(1<<4);
5
    P3DIR |= (1<<3);
6
    P3SEL |= 0x18;
7
8
    /* Enable reset. */
9
    UCA0CTL1 |= UCSWRST;
10
11
    /* Use SMCLK clock  */
12
    UCA0CTL1 |= UCSSEL_2;
13
14
    /* Set baud rate to 230400 @ 20 Mhz
15
    UCA0BR0 = 0x05;
16
    UCA0BR1 = 0x00;
17
    UCA0MCTL |= (UCBRF_7 | UCBRS_0 | UCOS16);*/
18
19
    /* Clear reset bit. */
20
    UCA0CTL1 &= ~UCSWRST;
21
22
    return 0;
23
}


Leider empfange ich mit diesen Einstellungen nur „FF“ Werte am PC. 
Komischerweise betrifft dies alle Baudraten, auch langsamere. Es klappt 
nur mit 115200 Baud:
1
int msp430_uart_init(void)
2
{
3
    /* Set P3.3 (TX) and P3.4 (RX) to UART mode. */
4
    P3DIR &= ~(1<<4);
5
    P3DIR |= (1<<3);
6
    P3SEL |= 0x18;
7
8
    /* Enable reset. */
9
    UCA0CTL1 |= UCSWRST;
10
11
    /* Use SMCLK clock  */
12
    UCA0CTL1 |= UCSSEL_2;
13
14
    /* Set baud rate to 115200 @ 20 Mhz
15
    UCA0BR0 = 0x0A;
16
    UCA0BR1 = 0x00;
17
    UCA0MCTL |= (UCBRF_14 | UCBRS_0 | UCOS16);*/
18
19
    /* Clear reset bit. */
20
    UCA0CTL1 &= ~UCSWRST;
21
22
    return 0;
23
}

Ich habe versuchsweise die Taktfrequenz auf 12 MHz geändert und die 
Parameter angepasst. Auch in dem Fall klappen nur 115200 Baud. Könnte es 
evtl am Bluetoothmodul liegen (BlueRadios BR-LE4.0-D2A)? Laut Datenblatt 
unterstützt es bis zu 460800 Baud.
Bin für alle Anregungen dankbar, da mich das Problem nun schon die 
letzten Wochen beschäftigt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bei der Initialisierung von Registern mit |= ist der darin bereits 
stehende POR-Wert zu beachten, das kann andere Ergebnisse haben als Du 
erwartest.

> Könnte es evtl am Bluetoothmodul liegen (BlueRadios BR-LE4.0-D2A)?

Hast Du dem denn die höhere Baudrate mitgeteilt? Automatisch erkennen 
wird es die nicht.

von Clemens L. (c_l)


Lesenswert?

Georg schrieb:
> /* Set baud rate to 230400 @ 20 Mhz
>     UCA0BR0 = 0x05;
>     UCA0BR1 = 0x00;
>     UCA0MCTL |= (UCBRF_7 | UCBRS_0 | UCOS16);*/

Das ist alles ein Kommentar. Wenn das wirklich dein Programm ist, dann 
läuft es immer noch mit den Standard-Einstellungen.

von Georg (Gast)


Lesenswert?

Clemens L. schrieb:
> Georg schrieb:
>> /* Set baud rate to 230400 @ 20 Mhz
>>     UCA0BR0 = 0x05;
>>     UCA0BR1 = 0x00;
>>     UCA0MCTL |= (UCBRF_7 | UCBRS_0 | UCOS16);*/
>
> Das ist alles ein Kommentar. Wenn das wirklich dein Programm ist, dann
> läuft es immer noch mit den Standard-Einstellungen.

Sorry, das war ein Kopierfehler, im richtigen Programm war es natürlich 
nicht mehr ausgeklammert.

Rufus Τ. F. schrieb:
> Hast Du dem denn die höhere Baudrate mitgeteilt? Automatisch erkennen
> wird es die nicht.

Danke! Ich hatte mich so auf den µC eingeschossen, dass ich das BT Modul 
ganz ignoriert habe. Hier wird der Fehler liegen.
Kennt sich jemand mit dem AT Befehlset der BlueRadios Bluetooth Module 
aus?
Ich hab ein Befehlset gefunden, allerdings bekomme ich die Änderung der 
Baudrate nicht hin. Da das BT Modul fest verlötet ist, schicke ich die 
Kommandos über den UART des Mikrocontrollers. Mit dem Befehl
"ATSN,neuerName\r"
kann ich erfolgreich den Namen ändern. Laut Beschreibung sollte sich mit 
dem Befehl
"ATSW20,944,0,0,1\r"
Die Baudrate auf 230400 einstellen. Leider gelingt dies nicht.
Hat jemand eine Idee?

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.