打印

急救:让我疯掉的RS232通信

[复制链接]
楼主: voidzz
手机看帖
扫描二维码
随时随地手机跟帖
21
kylezhou| | 2009-11-4 11:30 | 只看该作者 回帖奖励 |倒序浏览
遇到过AVR单片机使用内部晶体不能通讯的问题,归根结底还是频率不准,导致波特率不准。

使用特权

评论回复
22
holle| | 2009-11-4 12:46 | 只看该作者
检查共地问题,最好用示波器看一下波形

使用特权

评论回复
23
chunyang| | 2009-11-4 15:42 | 只看该作者
前面已经由好几个网友指出了真相,自己去检查波特率误差和连线吧。

使用特权

评论回复
24
LYXQ| | 2009-11-4 16:13 | 只看该作者
也许你少了个结束符0x0d;串口调试助手发字符串的时候,如果你敲了回车键,这东西就自动加到字符串之后

使用特权

评论回复
25
杜专| | 2009-11-4 18:40 | 只看该作者
我到现在还没有把PIC 的串口调通   不知道原因:lol

使用特权

评论回复
26
tudou2048| | 2009-11-4 19:14 | 只看该作者
楼上好多位网友已经从广义上解释了你的问题,我来说个具体的:设备和你单片机的串口都有光电隔离且光耦的速度有限,而计算机这端的串口没有光电隔离。当设备和单片机分别与计算机连时,由光耦引起的误差不足以导致出问题,或问题不明显。但当设备和单片机连接时问题就来了,相当于光耦引起的误差乘二了。解决方法:1、采用高速光耦或仔细调整光耦周边相关器件使用参数。2、降低波特率。

使用特权

评论回复
27
LLLLWWWW| | 2009-11-5 10:37 | 只看该作者
同意8楼和15楼的意见,很显然你的波特率有问题,只是PC机对此问题不敏感,有容错能力,所以看不出来问题,但是你的采集仪条件就不同了,建议你重新计算波特率,要把误差降低到最小,甚至没有,可能就好了,刚刚用了UART调试一个东西,和你碰到的问题一样~后来把波特率调整到位,就行了~

使用特权

评论回复
28
xulong431| | 2009-11-5 10:53 | 只看该作者
排除连线以及波特率错误等问题后
用示波器查看下串口助手和单片机通讯差别

使用特权

评论回复
29
voidzz|  楼主 | 2009-11-5 12:23 | 只看该作者
非常感谢各位DDMMGGJJ的回帖,有点汗颜啊,搞了十余年,小串口把我难住了,狠狠,我一定要搞定它,下面我先按照楼上各位建议做一遍,稍后回应;我心中的经验是:越是蹊跷的问题,往往是最弱智的错误导致。但愿这次不是。

使用特权

评论回复
30
warden| | 2009-11-5 12:40 | 只看该作者
你的BAUD多大?晶振多大?先检测两端的BAUD吧,发送方发出的时候用示波器测试一下看其脉宽。

使用特权

评论回复
31
voidzz|  楼主 | 2009-11-5 13:14 | 只看该作者
呵呵,原来果然是线的问题,我原来是2和3不交叉的,换成2合3交叉后就可以通信了。
但采集仪和计算机通信数据正常,和我单片机通信时数据会错码。难道是各位说的波特率误差?
哈哈,我把买来的这个采集仪拆开来一看,MyGod,用的是ATMEGA64LA8U,8MHZ晶振,SP232芯片;
而我的单片机是AT89S52,11.0592MHz晶振,max232;
这个波特率当然互相有误差了,受不了做9600的串口通信,还用8M的晶振,波特率能准确吗?

使用特权

评论回复
32
voidzz|  楼主 | 2009-11-5 13:28 | 只看该作者
原以为我换成12MHz的晶振就可以了,结果换上后数据都通不上来了。
大家说这个波特率怎么办?不知道ATMEGA64这个芯片用8M晶振,9600的波特率能做到精确吗?

使用特权

评论回复
33
voidzz|  楼主 | 2009-11-5 14:00 | 只看该作者
刚下载了一个ATMEGA64资料看了下,好像8M晶振时,波特率有0.2%误差,是这样吗?
现在问题编程了怎么样让我单片机的波特率和这个8M的ATMEGA64一致,用9600的波特率

使用特权

评论回复
34
xwj| | 2009-11-5 14:13 | 只看该作者
波特率有0.2%误差根本就不会有影响

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
voidzz + 1 多谢啊
35
救火车| | 2009-11-5 15:33 | 只看该作者
8M晶振可以用。你检查波特率设置吧。

使用特权

评论回复
36
tudou2048| | 2009-11-5 17:46 | 只看该作者
刚下载了一个ATMEGA64资料看了下,好像8M晶振时,波特率有0.2%误差,是这样吗?
现在问题编程了怎么样让我单片机的波特率和这个8M的ATMEGA64一致,用9600的波特率 ...
voidzz 发表于 2009-11-5 14:00

一般情况下,差个百分之三百分之五什么的没有有什么问题。

使用特权

评论回复
37
voidzz|  楼主 | 2009-11-6 08:51 | 只看该作者
问题解决了,谢谢各位,多谢!最终查出来的原因如下:
1、单片机之间2和3线应该交叉;
2、采集仪发送来的是10个字节数据,我只接收了前面5个字节,导致数据看似错码。波特率正确的。
  最后总结出来这次问题的原因,还是验证了我的那句经验:最诡异的问题往往是最弱智的错误导致。哈哈哈,^_^,多谢各位!

使用特权

评论回复
38
yewuyi| | 2009-11-6 10:36 | 只看该作者
呵呵,原来果然是线的问题,我原来是2和3不交叉的,换成2合3交叉后就可以通信了。
但采集仪和计算机通信数据正常,和我单片机通信时数据会错码。难道是各位说的波特率误差?
哈哈,我把买来的这个采集仪拆开来一看, ...
voidzz 发表于 2009-11-5 13:14


嘿嘿,受不了你,都工作10年的人,还能说出这么白菜的话,谁告诉你8M就不可以了?!

使用特权

评论回复
39
OneMillion| | 2009-11-11 13:07 | 只看该作者
楼主真是牛人。说到底,是没正真理解串口通讯。

使用特权

评论回复
40
OneMillion| | 2009-11-11 13:08 | 只看该作者
楼主真是牛人。说到底,是没正真理解串口通讯。

使用特权

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

本版积分规则