是否有任何寄存器来设置UART的时钟频率?

时间:2017-07-05 10:30:27

标签: microcontroller nxp-microcontroller

我在LPC2148微控制器中使用UART。我无法找到任何寄存器来设置UART的时钟频率。是否有任何寄存器来设置时钟频率?

1 个答案:

答案 0 :(得分:0)

参考文献中描述的“快速而肮脏”的方法是:

U0DLL =以赫兹为单位的PCLK /(16 * desired_baud_rate)

这是一个简化的等式;其他人可以通过调整各种寄存器来微调串行波特率来进行调整。

来自同一参考:

现在,如前所述。 2 - 为了在60Mhz PCLK下获得9600(实际为9605)波特,我们必须使用以下设置进行波特率生成:

U0DLL = 110; U0DLM = 1; MULVAL = 15; DIVADDVAL = 0 (您可以将这些值转换为Hex =或= direclty以十进制形式使用它) 现在,让我们创建一个名为“InitUART0()”的函数,它将根据需要配置和初始化UART0:

void InitUART0(void)
{
  PINSEL0 = 0x5;  /* Select TxD for P0.0 and RxD for P0.1 */ 
  U0LCR = 3 | (1<<7) ; /* 8 bits, no Parity, 1 Stop bit | DLAB set to 1  */
  U0DLL = 110;
  U0DLM = 1;    
  U0FDR = (MULVAL<<4) | DIVADDVAL; /* MULVAL=15(bits - 7:4) , DIVADDVAL=0(bits - 3:0)  */
  U0LCR &= 0x0F; // Set DLAB=0 to lock MULVAL and DIVADDVAL
  //BaudRate is now ~9600 and we are ready for UART communication!

 }