0

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

4

1 回答 1

0

参考资料中描述的“又快又脏”的方法是:

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

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

从同一个参考:

现在,如前所示。2 – 为了在 60Mhz PCLK 下获得 9600(实际上是 9605)波特,我们必须使用以下设置来生成波特:

U0DLL = 110 ; U0DLM = 1;多值 = 15 ; DIVADDVAL = 0 (您可以将这些值转换为十六进制 = 或 = 直接以十进制形式使用它)现在,让我们创建一个名为“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!

 }
于 2017-07-05T18:09:13.870 回答