Wie berechnet man das Modulationsregister für MSP430 UART?

Ich verwende einen mit 1 MHz getakteten MSP430F5529 und möchte den UART mit 9600 Baud verwenden. Bisher habe ich gemacht:

void UART_init(void) {
    UCA0CTL1 |= UCSWRST; // Reset the UART's state machine
    UCA0CTL0 |= UCMSB; // MSB first, 8n1 mode
    UCA0CTL1 |= UCSSEL_2; // SMCLK

    // 1 MHz/9600 baud = 104.666.
    // Rounding down to 104 = 9615 bauds

    UCA0BR0 = 104;
    UCA0BR1 = 0;

}

Aber jetzt verstehe ich nicht, wie ich den Wert des Modulationsregisters ( UCA1MCTL) wählen soll, um so nahe wie möglich an 9600 Baud zu kommen. Das MSP430Fx5xx-Benutzerhandbuch schlägt auf Seite 908 vor, zu verwenden UCBRS_1, aber ich verstehe nicht, wie dieser Wert erreicht wird.

Zeile in der Bedienungsanleitung

Wie berechne ich dieses Register?

Antworten (1)

Es gibt eine Reihe von Rechnern, um den Vorgang zu vereinfachen, wie z. B. diesen; einfacher msp430-Baudraten-Bit-Rechner

Wenn Sie detailliertere Informationen darüber wünschen, wie dies berechnet wird, empfehle ich dieses großartige Tutorial von Gustavo Litovsky, insbesondere Abschnitt 12.3.5 auf PDF-Seite 101

Hoffe das hilft.

Außerdem ist @GustavoLitovsky Mitglied von Electronics StackExchange , wenn auch im Wesentlichen inaktiv. Vielleicht wäre er bereit, sich auch einzumischen.
@AnindoGhosh: Ich habe diesen Thread bis vor kurzem nie bemerkt. Danke schön.
In der neuesten Version des oben verlinkten Tutorials ist es Abschnitt 12.3.5 auf PDF-Seite 101.