读书人

LPC2378 晶振11.0592波特率115200失

发布时间: 2013-06-25 23:45:41 作者: rapoo

LPC2378 晶振11.0592,波特率115200出错,57600对的。
1.如题

2.串口0 初始化


void Uart0_Init(unsigned int baudrate )
{
INT32 Fdiv;
//设置引脚链接模块
PINSEL0 = (PINSEL0 & 0xFFFFFF0F ) | 0x050; /* RxD0 and TxD0 */
//设置 波特率
//禁止小数分频
U0LCR = 0x83; //数据位8 无校验 1位停止位
Fdiv = ( Fpclk / 16 ) / baudrate ;//设置 波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
//U0FDR &= ~0x0f; //FDR 禁止小数分频
//U0FDR |= ~0x10;
//设置通信帧 格式
U0LCR = 0x03;// DLAB = 0
/* 位功能 描述
1:0 字长度选择 00 5位字符长度
01 6
10 7
11 8个字符长度
2 停止位 0 1个停止位
1 2个停止位
3 奇偶使能 0 禁止奇偶产生和校验
1 使能
5:4 奇偶选择 00 奇数
01 偶数
10 强制为1
11 强制为0
6间隔控制 0 禁止间隔发送
1 使能间隔发送
7 除数锁存访问位 0 禁止
1 使能
*/
U0FCR |= 0x01; // 8个字符出发中断 FIFO使能
/*
位0 FIFO使能
位1 Rx FIFO复位
位2 Tx FIFO复位
位5:3 保留
位7:6Rx 出发选择 00:触发点0(1个字符)
01:触发点0(4个字符)
10:触发点0(8个字符)
11:触发点0(14个字符)
*/
install_irq( UART0_INT, (void *)UART0Handler, HIGHEST_PRIORITY );
U0IER=1; //打开接收中断
/*
位0 RBR中断使能 0:禁止RDA使能
1:使能RDA中断
UxIER.0使能Uart接收数据可用中断,还控制字符接收超时中断
位1 THRE中断使能 0:禁止THRE中断
1:使能THRE中断
UxIER.1使能Uart THRE中断。该中断的状态可从U0LSR.5读出
位2 Rx线状态中断使能 0:禁止Rx线状态中断


1:使能
UxIER.2使能Uart Rx线状态中断。该中断的状态可从UxLSR[4:1]读出
位7:3 保留
*/



}


[解决办法]
用示波器看一下晶振的实际频率呢,是不是差太多了
[解决办法]
配置完串口后往外发0xaa, 然后用示波器量发引脚,看有没有信号,有信号的话,看数据的电平间隔是否是1/115200s左右
[解决办法]
1. 有无配错;
2. 晶阵精度是否足够高;
3. 波特率为115200时候,测量下具体波形,看波特率实际为多少
4. 在57600上,可继续往上调,看最高能调试到多少
[解决办法]
http://blog.csdn.net/yfz000/article/details/8516621

看了一下这个贴子


[解决办法]
这么高的波特率需要硬件支持
[解决办法]
波特率不正确,115200波特率大约是8.68us一个比特,你测量出来的信号下面显示时299.517K,所以应该是Fpclk不对,与实际你倍频上去的时钟不同,因此应该首先修改这个,因为11059200可以被16*115200整除,所以按说倍频后的时钟也可以被整除,应该是没有误差的。
[解决办法]
看看你的 Fpclk 是否设置成 13MHz 了。

[解决办法]
很可能是硬件不支持
[解决办法]
引用:
这么高的波特率需要硬件支持


之前查的资料

理论上这货支持的速率到5M去~~~
[解决办法]
引用:
Quote: 引用:

这么高的波特率需要硬件支持


之前查的资料

理论上这货支持的速率到5M去~~~

反正感觉不太可靠,误码率太高了、、、
[解决办法]
你这倍频参数怎么也算不成50MHz吧,回去看看datasheet吧

读书人网 >单片机

热点推荐