LPC11U14 UART 高波特率的发送错误问题

LPC11U14配置115200的波特率,在连续大量发数据后会出现TX数据错误的问题。

使用外部OSC,内部Main PLL锁频到48M。

Div = Int(48M/16/115200) = 26

实际波特率为BaudRate = 48M/16/26 = 115384.6

精度大概为1.6%,从文档来看完全不需要用进行小数调制,但实际发送,如果连续发送就会出现错误。

发送sample code

while(1)
{
	Uart_PutByte(0, 0x30);
}

刚开始串口还是打印0,到后来就变成乱码。判断是stop位识别不准,和下一次数据的起始位混淆造成,解决方案:

   1:  void Uart_PutByte(u8 u8Port, u8 u8Data)
   2:  {
   3:      Lpc11u_Usart_TX(u8Data);
   4:      while(Lpc11u_Usart_TxVaild() == FALSE);
   5:      u8 u8i = 8;
   6:      while(u8i-->0)
   7:      {
   8:          asm volatile("mov r0, r0");
   9:      }
  10:  }

在Send完一个字节后做8个NOP延时。

具体的状况没用用示波器看,可能和USB转串口线也有关系,手上只有一条USB转串口线。

你可能感兴趣的:(LPC11U14 UART 高波特率的发送错误问题)