J'ai quelques problèmes avec la façon de changer la vitesse de transmission de l'uart sur mon lpc1768.La modification de la vitesse de transmission UARTx pour le LPC 1768 ne fonctionne pas
Pour init et configurer mes UART, j'utilise le code suivant et qui fonctionne très bien avec 9600 bauds ou 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 */
Mais pour changer la vitesse de transmission 9600-38400, j'essaie de changer juste la DLM/Les registres DLL et FDR ont la valeur appropriée (comme dans le code ci-dessus). Mais ça ne marche pas ... (le débit en bauds n'est pas défini).
Mon PCLK est 18MHz
en ne changeant que ces trois registres ne suffit pas? Ai-je tort ?