今天,发现LPC2148还有自动设置波特率的功能,但开始的时候没有能成功应用。主要原因忘记了设置数据长度,停止位数,奇偶校验位。实际应用代码如何下。
PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x00000005;//设置p0.1,p0.2为UART的对应管脚
U0ACR = 0x03;//开启自动波特率的功能
while((U0ACR&0x01)!=0);//等待设置波特率结束
U0LCR = 0x83;//设定数据长度位8,停止位位1位,无奇偶校验
以下可以,通过串口向上位机发送数据。
在使用中发现,LPC2148 用户手册中发现以下问题。文档中描述波特率计算公式:
UART baud= Pclk / (16 * (16* UDLM + UDLL) )
但个人觉的应该是下面的:
UART baud= Pclk / (16 * (256* UDLM + UDLL))
在实际的应用中使用如下代码时间,设定波特率。
PINSEL0 = (PINSEL0&0xFFFFFFF0)|0x00000005;
U0LCR = 0x80;
bak = (Fpclk>>4)/baud;
U0DLM = bak>>8;
U0DLL = bak&0xff;
也就印证上面的公式。