W77E58串口2问题

昨天调程序发现W77E58的串口2波特率9600bps,8位数据,1位停止,1位起始,晶体为22.1184M,T1作为波特率发生器,居然经常会出现数据错误。
开始怀疑程序,但在KEIL中仿真没有任何问题;
后来怀疑MAX232可能有问题,换了一片,结果完全相同;
又怀疑MAX232电容有点儿,因为手册上是1u,而我一直用0.1u的一直没出过问题,还是并联了又并联了一个0.1u的电容,没有任何变化 ,但我量了一下输出,-8V,接上电脑之后为-6.8V,应该没有问题,-3V就应该不出错了;
又怀疑晶振不准,这种可能性太小了,但还是试着换了一个,没有任何变化;

后又仔细分析数据,发现接收到的数据规律性不太强,但还是有一定规律的,即收发一定时间后就会出错。出错的多少也不一样或一字节,或2字节,多则四五个字节。怀疑可能是由于波特率发生器不准造成的误差,于是将波特率降至4800bps,果然没有任何问题。可以确定是波特率发生器不准。

77E58的定时器时钟可以选择晶振的1/4,也可以选择晶振的1/12,于是便想提高波特率发生器的时钟来提高精度,把CKCON的T1M位置1,然后相应修改TH1的值,重新运行程序,OK!

但造成该问题的原因还是不解,为什么为产生这么大的误差,是哪儿的配置有问题?换了芯片结果一样。以前就是这样用的,没有任何问题,原困还需要进一步研究!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值