У меня есть некоторые проблемы с моим способом изменить скорость передачи uart на моем lpc1768.Изменение скорости передачи данных UARTx для LPC 1768 не работает
Для инициализации и настройки моих УАПП, я использую следующий код, и отлично работает с 9600 бод или 38400.
/* RxD0 is P0.3 and TxD0 is P0.2 */
LPC_PINCON->PINSEL0 &= ~(0x03<<4); // Reset P0.2 = GPIO
LPC_PINCON->PINSEL0 |= (0x01<<4); // Config P0.2 = TxD0
LPC_PINCON->PINSEL0 &= ~(0x03<<6); // Reset P0.3 = GPIO
LPC_PINCON->PINSEL0 |= (0x01<<6); // Config P0.3 = RxD0
LPC_UART0->LCR = 0x87; //8bits, no parity, 2 stop bits
switch (baudrate)
{
default :
case 9600 :
LPC_UART0->DLM = 0x00; //calculated with datasheet
LPC_UART0->DLL = 0x4E;
LPC_UART0->FDR = 0x21;
break;
case 38400 :
LPC_UART0->DLM = 0x00; //calculated with datasheet
LPC_UART0->DLL = 0x14;
LPC_UART0->FDR = 0xF7;
}
LPC_UART0->LCR = 0x07;//0x03; /* DLAB = 0 */
LPC_UART0->FCR = 0x07; /* Enable and reset TX and RX FIFO. */
NVIC_EnableIRQ(UART0_IRQn);
LPC_UART0->IER = IER_RBR | IER_THRE | IER_RLS; /* Enable UART0 interrupt */
Но менять скорость передачи данных от 9600 до 38400, я стараюсь просто изменить DLM/DLL и FDR записываются в соответствующее значение (то же, что и в коде выше). Но это не работает ... (скорость не определена).
Мой PCLK является 18MHz
Изменение только те три регистра не достаточно? Я ошибаюсь ?