急救:让我疯掉的RS232通信

[复制链接]
10189|41
kylezhou 发表于 2009-11-4 11:30 | 显示全部楼层
遇到过AVR单片机使用内部晶体不能通讯的问题,归根结底还是频率不准,导致波特率不准。
holle 发表于 2009-11-4 12:46 | 显示全部楼层
检查共地问题,最好用示波器看一下波形
chunyang 发表于 2009-11-4 15:42 | 显示全部楼层
前面已经由好几个网友指出了真相,自己去检查波特率误差和连线吧。
LYXQ 发表于 2009-11-4 16:13 | 显示全部楼层
也许你少了个结束符0x0d;串口调试助手发字符串的时候,如果你敲了回车键,这东西就自动加到字符串之后
杜专 发表于 2009-11-4 18:40 | 显示全部楼层
我到现在还没有把PIC 的串口调通   不知道原因:lol
tudou2048 发表于 2009-11-4 19:14 | 显示全部楼层
楼上好多位网友已经从广义上解释了你的问题,我来说个具体的:设备和你单片机的串口都有光电隔离且光耦的速度有限,而计算机这端的串口没有光电隔离。当设备和单片机分别与计算机连时,由光耦引起的误差不足以导致出问题,或问题不明显。但当设备和单片机连接时问题就来了,相当于光耦引起的误差乘二了。解决方法:1、采用高速光耦或仔细调整光耦周边相关器件使用参数。2、降低波特率。
LLLLWWWW 发表于 2009-11-5 10:37 | 显示全部楼层
同意8楼和15楼的意见,很显然你的波特率有问题,只是PC机对此问题不敏感,有容错能力,所以看不出来问题,但是你的采集仪条件就不同了,建议你重新计算波特率,要把误差降低到最小,甚至没有,可能就好了,刚刚用了UART调试一个东西,和你碰到的问题一样~后来把波特率调整到位,就行了~
xulong431 发表于 2009-11-5 10:53 | 显示全部楼层
排除连线以及波特率错误等问题后
用示波器查看下串口助手和单片机通讯差别
 楼主| voidzz 发表于 2009-11-5 12:23 | 显示全部楼层
非常感谢各位DDMMGGJJ的回帖,有点汗颜啊,搞了十余年,小串口把我难住了,狠狠,我一定要搞定它,下面我先按照楼上各位建议做一遍,稍后回应;我心中的经验是:越是蹊跷的问题,往往是最弱智的错误导致。但愿这次不是。
warden 发表于 2009-11-5 12:40 | 显示全部楼层
你的BAUD多大?晶振多大?先检测两端的BAUD吧,发送方发出的时候用示波器测试一下看其脉宽。
 楼主| voidzz 发表于 2009-11-5 13:14 | 显示全部楼层
呵呵,原来果然是线的问题,我原来是2和3不交叉的,换成2合3交叉后就可以通信了。
但采集仪和计算机通信数据正常,和我单片机通信时数据会错码。难道是各位说的波特率误差?
哈哈,我把买来的这个采集仪拆开来一看,MyGod,用的是ATMEGA64LA8U,8MHZ晶振,SP232芯片;
而我的单片机是AT89S52,11.0592MHz晶振,max232;
这个波特率当然互相有误差了,受不了做9600的串口通信,还用8M的晶振,波特率能准确吗?
 楼主| voidzz 发表于 2009-11-5 13:28 | 显示全部楼层
原以为我换成12MHz的晶振就可以了,结果换上后数据都通不上来了。
大家说这个波特率怎么办?不知道ATMEGA64这个芯片用8M晶振,9600的波特率能做到精确吗?
 楼主| voidzz 发表于 2009-11-5 14:00 | 显示全部楼层
刚下载了一个ATMEGA64资料看了下,好像8M晶振时,波特率有0.2%误差,是这样吗?
现在问题编程了怎么样让我单片机的波特率和这个8M的ATMEGA64一致,用9600的波特率
xwj 发表于 2009-11-5 14:13 | 显示全部楼层
波特率有0.2%误差根本就不会有影响

评分

参与人数 1威望 +1 收起 理由
voidzz + 1 多谢啊

查看全部评分

救火车 发表于 2009-11-5 15:33 | 显示全部楼层
8M晶振可以用。你检查波特率设置吧。
tudou2048 发表于 2009-11-5 17:46 | 显示全部楼层
刚下载了一个ATMEGA64资料看了下,好像8M晶振时,波特率有0.2%误差,是这样吗?
现在问题编程了怎么样让我单片机的波特率和这个8M的ATMEGA64一致,用9600的波特率 ...
voidzz 发表于 2009-11-5 14:00

一般情况下,差个百分之三百分之五什么的没有有什么问题。
 楼主| voidzz 发表于 2009-11-6 08:51 | 显示全部楼层
问题解决了,谢谢各位,多谢!最终查出来的原因如下:
1、单片机之间2和3线应该交叉;
2、采集仪发送来的是10个字节数据,我只接收了前面5个字节,导致数据看似错码。波特率正确的。
  最后总结出来这次问题的原因,还是验证了我的那句经验:最诡异的问题往往是最弱智的错误导致。哈哈哈,^_^,多谢各位!
yewuyi 发表于 2009-11-6 10:36 | 显示全部楼层
呵呵,原来果然是线的问题,我原来是2和3不交叉的,换成2合3交叉后就可以通信了。
但采集仪和计算机通信数据正常,和我单片机通信时数据会错码。难道是各位说的波特率误差?
哈哈,我把买来的这个采集仪拆开来一看, ...
voidzz 发表于 2009-11-5 13:14


嘿嘿,受不了你,都工作10年的人,还能说出这么白菜的话,谁告诉你8M就不可以了?!
OneMillion 发表于 2009-11-11 13:07 | 显示全部楼层
楼主真是牛人。说到底,是没正真理解串口通讯。
OneMillion 发表于 2009-11-11 13:08 | 显示全部楼层
楼主真是牛人。说到底,是没正真理解串口通讯。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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