打印
[ZLG-ARM]

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

[复制链接]
3678|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
思行合一|  楼主 | 2010-8-17 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
无语凝咽| | 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中,你的程序由于没有及时读取,导致接收溢出。

使用特权

评论回复
5
S3C2440| | 2010-8-22 13:21 | 只看该作者
路过,学习了

使用特权

评论回复
6
bit6019| | 2010-9-18 17:46 | 只看该作者
不知道楼主解决了没

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

1391

帖子

2

粉丝