[ZLG-ARM] [求助]LPC2214的串口波特率设置为921600时的接收问题

[复制链接]
4918|5
 楼主| 思行合一 发表于 2010-8-17 22:30 | 显示全部楼层 |阅读模式
各位大侠,我在使用串口通信时,波特率设置为921600时,外部串口发送到LPC2214的串口数据量一次只能发几十个字节,才不会丢失数据,波特率降低到230400就没有问题了,是不是921600的波特率下串口不太稳定啊
无语凝咽 发表于 2010-8-17 22:38 | 显示全部楼层
如果在高波特率使用的情况下,APB时钟经过16分频以及波特率频时可能出现误差,因为在分频时,小数部分会被忽略掉,你可以是着对DLL,DLM写,然后再把DLL,DLM的值读出来,算出实际的波特率,如果误差较大,则不稳定。
 楼主| 思行合一 发表于 2010-8-19 22:41 | 显示全部楼层
我的频率设置如下:  



#define Fosc            11059200                           
#define Fcclk           (Fosc * 4)                           
#define Fcco            (Fcclk * 4)                        
#define Fpclk           (Fcclk / 4) * 4   



串口部分设置参考示例程序的设置如下

U0LCR = 0x80;             // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / UART_BPS;        // 设置波特率
U0DLM = Fdiv / 256;      
U0DLL = Fdiv % 256;

U0LCR = 0x03;



当UART_BPS=115200时,Fdiv=(11059200*4/16)/115200=24

U0DLM = 24/256 = 0;

U0DLL = 24%256=24;

当UART_BPS=921600时,Fdiv=3,U0DLM,U0DLL的值与115200的一样,小数都被忽略了,为什么115200就可以稳定的传输呢
bit6019 发表于 2010-8-19 22:59 | 显示全部楼层
有可能是921600速率太高,LPC2214接收不过来,即使是数据收到存放在FIFO中,你的程序由于没有及时读取,导致接收溢出。
S3C2440 发表于 2010-8-22 13:21 | 显示全部楼层
路过,学习了
bit6019 发表于 2010-9-18 17:46 | 显示全部楼层
不知道楼主解决了没
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

1391

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部