打印

串口通讯,同样的指令,ARM上位机发送,下位机给回复。用电脑模拟发送失败

[复制链接]
2824|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
七叔公|  楼主 | 2017-3-24 07:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有一套板子,上位机为mini2440 ,下位机为C51 ,两者通过串口通讯,信号线路间有两块MAX232,通讯方式为一问一答。(我现在想用PC机代替mini2440)
通过监测通信协议,初步认为通讯波特率为19200 (工作在此波特率下,通讯协议里面的数据,与上位机显示的数据一致),上位机有专门的一条指令去检测通信是否正常。当上位机往下位机发通信检测指令时,下位机会回复一条指令,以表示通信正常。
当上位机发出通信检测指令时,我用电脑(USB转串口)模仿下位机,给其回复指令。上位机收到指令后,屏幕显示通信成功(但如果把通信指令的内容修改了,则会显示通信失败);
现在的问题是,我用电脑模仿上位机,往下位机发一给通信检测的指令,然而……却一直没有回复……  
目前的状况:
(1)通信线应该没有问题,Rxd,Txd都对换过,无果;
(2)使用串口软件时,数据位(7,8),停止位(1,1.5,2)都试过;或者把需发送的数据空格都取消;也尝试用ASC、HEX的方式发送指令,无果;
(3) 下位机的板子,换了另外一块测试,也是无回复;但是他们跟上位机(mini2440)的通信却又是正常的;
(4)通过监测PC往下位机发的指令,内容与上位机发给下位的指令是一致;

盼大神解答。

相关帖子

沙发
chunyang| | 2017-3-24 16:05 | 只看该作者
先确认指令发送是否完全一致,这应该用16进制显示来监视。另外注意,要么电脑+主机,要么电脑+终端,如果不是这样,注意分析电平竞争。

使用特权

评论回复
板凳
七叔公|  楼主 | 2017-3-24 20:44 | 只看该作者
chunyang 发表于 2017-3-24 16:05
先确认指令发送是否完全一致,这应该用16进制显示来监视。另外注意,要么电脑+主机,要么电脑+终端,如果不 ...

我监测过串口发出的数据,与上位机的是一致的。同样的指令不起作用,都有些崩溃了。
另外,上位机会下位机通讯的时候,我用万用表量Rxd,Txd 的端子电压有7-8V ,而用PC对下位机(发送指令)时,电压只有5.5V左右。

使用特权

评论回复
地板
chunyang| | 2017-3-25 14:48 | 只看该作者
七叔公 发表于 2017-3-24 20:44
我监测过串口发出的数据,与上位机的是一致的。同样的指令不起作用,都有些崩溃了。
另外,上位机会下位 ...

你应该监看比较TTL侧的数据是否一致,注意,用16进制看。232电平有差别无所谓,只要在232电平要求的范围内即可。

使用特权

评论回复
5
cliffboy| | 2017-3-27 17:29 | 只看该作者
用斯波器量一下信号,很容易就定位出问题出在哪个环节

使用特权

评论回复
6
hgjinwei| | 2017-3-27 17:36 | 只看该作者
PC 能和“mini2440”交互,说明串口时序是没有问题的。
但PC却不能和"C51"交互,这有点蹊跷。

确认 mini2440 和 C51 的通信内容是可重放的?
比如 mini2440 第一次发 01 02 03 04,C51会响应,再次发,C51就不响应了(在安全机制中可能会使用)。

使用特权

评论回复
7
@若水| | 2017-3-28 08:43 | 只看该作者
你看你电脑上发送的是字符串还是十六进制数?

使用特权

评论回复
8
m564522634| | 2017-3-31 17:50 | 只看该作者
硬件问题了,检测你USB转串口线是不是正品,还有你的C51串口输出的电平标准不。 应该是你串口线有问题了,。

使用特权

评论回复
9
yiilanying| | 2017-4-2 10:01 | 只看该作者
首先看一下你用的串口通讯助手是否能向下位机发送数据,若不能,是你的串口有问题或者是你的设置有问题,若能发送出现乱码,可能是因为单片机之能接受8位数据,转换一下数据格式,在发送。

使用特权

评论回复
10
七叔公|  楼主 | 2017-4-19 16:46 | 只看该作者
hgjinwei 发表于 2017-3-27 17:36
PC 能和“mini2440”交互,说明串口时序是没有问题的。
但PC却不能和"C51"交互,这有点蹊跷。

恩,确认指令是可重放的。 因为它专门有一条指令检测通讯是否正常。

使用特权

评论回复
11
七叔公|  楼主 | 2017-4-19 16:47 | 只看该作者
@若水 发表于 2017-3-28 08:43
你看你电脑上发送的是字符串还是十六进制数?

是十六进制的, 而且PC发给2440的指令,2440接收后,显示正常。

使用特权

评论回复
12
七叔公|  楼主 | 2017-4-19 16:48 | 只看该作者
m564522634 发表于 2017-3-31 17:50
硬件问题了,检测你USB转串口线是不是正品,还有你的C51串口输出的电平标准不。 应该是你串口线有问题了, ...

C51串口输出电平,待我有示波器时,再现场量一下。 C51串口输出用的都是MAX232的转换芯片

使用特权

评论回复
13
七叔公|  楼主 | 2017-4-19 16:49 | 只看该作者
yiilanying 发表于 2017-4-2 10:01
首先看一下你用的串口通讯助手是否能向下位机发送数据,若不能,是你的串口有问题或者是你的设置有问题,若 ...

当mini2440发送通讯检测指令时,PC模拟C51回复特定的指令。mini2440就会显示通讯正常。
但是,当PC模拟Mini2440给C51发通讯检测指令时,C51无回复。

使用特权

评论回复
14
七叔公|  楼主 | 2017-4-19 16:51 | 只看该作者
chunyang 发表于 2017-3-24 16:05
先确认指令发送是否完全一致,这应该用16进制显示来监视。另外注意,要么电脑+主机,要么电脑+终端,如果不 ...

呵呵,刚来论坛没多久,但一下子就能感觉出你是个高手

使用特权

评论回复
15
@若水| | 2017-4-19 20:12 | 只看该作者
七叔公 发表于 2017-4-19 16:47
是十六进制的, 而且PC发给2440的指令,2440接收后,显示正常。

好吧

使用特权

评论回复
16
bluecup| | 2017-4-26 10:08 | 只看该作者
上示波器看下不就好了嘛。。

使用特权

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

本版积分规则

1

主题

7

帖子

0

粉丝