void UART0_init(void) {
unsigned short int fdiv;
PINSEL0 |= 0x00000005; // 设置I/O连接到UART0
U0LCR = 0x83; // DLAB = 1,串口参数设置
U0DLM = 0x00; //115200 PCLK=30Mhz 串口波特率计算
U0DLL = 0x0F;
U0FDR = 0xC1;
U0LCR = 0x03; // DLAB=0,禁止设置波特率
}
1,U0LCR寄存器,串口控制寄存器
0x83对应二进制0b10000011,即8位数据长度,Enable access to Divisor Latches。
2,波特率设置
U0DLM, U0DLL如下:
U0FCR 如下:
波特率计算公式
波特率计算举例,PCLK以30MHz:
U0DLM = 0x00; //
U0DLL = 0x0F;
U0FDR = 0xC1; // 0b11000001 ;DIVADDVAL = 1;MULVAL = 0x0C;
UART0baudrate = (30000000 / 16 / ( 256 * 0 + 15) ) * 12 / (12 + 1) = 115384;