[ZLG-MCU] 批量使用LPC922串口通讯,小部分不通怀疑RC振荡频率?

[复制链接]
3394|7
 楼主| ztb 发表于 2007-5-23 10:49 | 显示全部楼层 |阅读模式
我采用的是MPU内部的RC振荡,速率9600于PC机通讯.总有3-5%的产品通讯不通,是否由于RC振荡误差所致?异步通讯速率的最大允许误差是多少?
zlgmcu 发表于 2007-5-23 13:27 | 显示全部楼层

串口通信最大误差为5%. 但是很多情况下4%的误差就会导致异

在贴近Vcc&nbsp;pin&nbsp;的位置加个104小电容,看看效果是否好些.<br />
 楼主| ztb 发表于 2007-5-24 00:21 | 显示全部楼层

PCB上已经有104电容.

  
LPC900 发表于 2007-5-26 08:40 | 显示全部楼层

UART通信如果不想误码率太高的话,还是建议采用外部晶振为

  
徐勇 发表于 2007-5-27 01:07 | 显示全部楼层

LPC900自动波特率的误差一些粗略想法。

如果你用LPC900进行UART通讯,而且又是自动波特率的话,<br />可以这样来看<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC端(主机端)发送STX(0x02),由定时器0去捕获RXD的下降沿,<br />UART的发送是LSB在前,之前还有个起始位,我们可以用定时器测量出低电平的时间,这个时间就是2bit数据发送的时间,那么:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.波特率计算公式:Fbaud=Fosc/((BRGR1:BRGR0)+16)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BRGR1:BRGR0)&nbsp;=(Fosc/Fbaud)-16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pclk&nbsp;=&nbsp;fosc/2;<br />2.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer0&nbsp;的值&nbsp;&nbsp;x对应的时间t&nbsp;是2个bit位的时间<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t与波特率&nbsp;BPS的关系为&nbsp;&nbsp;t&nbsp;=&nbsp;2/Fbaud<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;=&nbsp;x/pclk&nbsp;=&nbsp;2x/fosc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2x/fosc&nbsp;=&nbsp;2/Fbaud;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x/fosc=&nbsp;1/Fbaud;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fbaud&nbsp;=&nbsp;fosc/x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BRGR1:BRGR0)&nbsp;=(Fosc/Fbaud)-16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BRGR1:BRGR0)&nbsp;=(Fosc/(fosc/x))-16&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BRGR1:BRGR0)&nbsp;=&nbsp;x-16;<br />也就是,把定时器0的值减去16后作为BRGR1:BRGR0即可比较准确的产生。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;误差分析:&nbsp;定时器捕获低电平的误差,粗略可以考虑有2-3个PCLK的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;误差,以内部7.3728MHz&nbsp;的频率,最高115200bps,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=&nbsp;7.3728*10^6/115200=64<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;误差后的X位61-67&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际波特率为:Fbaud=Fosc/x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5%&nbsp;&nbsp;-4.5%<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那么实际波特率低一点,误差就可以成倍的降低。<br />而且看起来,和实际晶振与标称值的误差没有关系。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以上粗略分析,请做参考,也请各位大侠指正。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
蛋蛋的老公 发表于 2007-6-1 22:35 | 显示全部楼层

LS的这个做法,有没用过量产?

批量可不可靠?
徐勇 发表于 2007-6-2 17:12 | 显示全部楼层

正准备在这批板子上测试,不过量也不大。

:-)<br />所有效果还是有待测试哈。<br />只是从理论分析,误差还是比较小的。<br />同时在T0在测量时,做一些误差调整。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

ztb

139

主题

660

帖子

9

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