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.
Wie berechne ich dieses Register?
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.
Anindo Ghosh
Gustavo Litowski
Steve Melnikoff