急!!!rs485 接收不到数据

lktmac 2014-04-08 05:31:59
RS485通信,带有RS232转485接口,用电脑的串口调试助手发送命令,在电脑上能看到有正确的数据返回,但是用FPGA发送同样的命令后,没有数据返回(FPGA的tx端有数据发送会亮绿灯,rx端有数据返回会亮红灯,发送端的数据接到电脑上看也是验证了正确的,但是就是没有数据返回,连红灯都不亮一下)求解啊!!用串口调试助手收发都没有问题,在FPGA的板上就不行了。。
...全文
4059 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lt1577756629 2014-09-25
  • 打赏
  • 举报
回复
你把rx和tx接一起试试
hghghg321123 2014-09-19
  • 打赏
  • 举报
回复
有rs485 c语言程序吗? pic单片机的
wesley 2014-05-23
  • 打赏
  • 举报
回复
485和232通信比,多了一个引脚控制是收还是发! 485半双工
aa573915483 2014-04-29
  • 打赏
  • 举报
回复
引用 11 楼 I_want_to_study_go 的回复:
我们经理让我简单测试485接口的设备好坏,有232转485转换器,可是我连232都不知道怎么用电脑测试,求告知。。。
把232RX,TX接起来。用串口调试工具,自己发自己收
mangoalx 2014-04-12
  • 打赏
  • 举报
回复
引用 11 楼 I_want_to_study_go 的回复:
我们经理让我简单测试485接口的设备好坏,有232转485转换器,可是我连232都不知道怎么用电脑测试,求告知。。。
测232可以用Hyper Terminal 或Putty,把232接成loopback,就是232接口的pin2和pin3短接,这样你发送什么字符就会收到什么字符。 485一般是2线半双工,就不能这么测了。你要查你的设备接收什么数据回复是什么。如果需要发16进制数据那要用串口测试助手
mangoalx 2014-04-12
  • 打赏
  • 举报
回复
哦,这么说应该是fpga的232输出连接232/485转换头时出的错
lktmac 2014-04-12
  • 打赏
  • 举报
回复
引用 17 楼 u012586257 的回复:
解决了就好。不过我又不明白了,两线半双工怎么还有收发交错的问题呢?
因为两个都是母头,所以就买了一个双公头的做转接的,但是那个双公头的只是就引线转接出来,原来母头的发送线就连着原来的位置变到公头上,但是正常的公头那里的引针位置是接收端,所以接上就错了
mangoalx 2014-04-11
  • 打赏
  • 举报
回复
解决了就好。不过我又不明白了,两线半双工怎么还有收发交错的问题呢?
I_want_to_study_go 2014-04-11
  • 打赏
  • 举报
回复
我们经理让我简单测试485接口的设备好坏,有232转485转换器,可是我连232都不知道怎么用电脑测试,求告知。。。
lktmac 2014-04-11
  • 打赏
  • 举报
回复
引用 15 楼 u012586257 的回复:
还有一种可能是你的DE2开发板输出只是TTL电平甚至cmos电平,不是标准RS232电平,所以不能驱动232/485转换器?可以检查一下开发板上有没有232驱动芯片。按说1.35V也足够485接收了。另外波特率误差也可能造成通讯问题
已经检查出来了,的确是您说得收发线排列是相同的,虽然是半双工的,但也是这个问题,收发线排列相同导致连接上出问题,拿线把收发线和地线引出来再连接好就可以了。真心非常感谢您!!!太谢谢了,都折腾我好久了,终于解决了!!谢谢谢谢!
mangoalx 2014-04-11
  • 打赏
  • 举报
回复
还有一种可能是你的DE2开发板输出只是TTL电平甚至cmos电平,不是标准RS232电平,所以不能驱动232/485转换器?可以检查一下开发板上有没有232驱动芯片。按说1.35V也足够485接收了。另外波特率误差也可能造成通讯问题
lktmac 2014-04-11
  • 打赏
  • 举报
回复
引用 9 楼 jeremy_jiang 的回复:
FPGA有收发控制吗?你是485不是422,需要收发控制。
我是用的232转485的转换器,带有自收发功能的,用PC的usb转232线连接到232转485转换器上,后面接的一个模块是称重传感器,这样通过PC发送命令是可以收到传感器传回来的数据的,但是把PC换成fpga,用的是DE2的开发板,板上有232接口,外面再接一个232转485,再接的称重传感器,fpga发送同样的命令之后,传感器没有数据返回(fpga发送的命令有验证过是正确的,而且把它接回PC上看,发出的命令也是跟之前PC发出去的命令是一样的)。现在测试了一下从232转485转换器出来的电压,485的A、B线间电压,用PC连接的时候是2.3V,但用FPGA连接的时候只有1.35V,所以怀疑是FPGA输出的信号电压不够造成485没有接收到信号,如果是这样的话应该怎么解决?或者还有没有其他的原因?
lktmac 2014-04-11
  • 打赏
  • 举报
回复
引用 10 楼 u012586257 的回复:
哦,我猜到了,你用的4线全双工,fpga 和你的外设都能和电脑通讯,说明它们收发线排列是一样的。现在你要让它们之间通讯,需要交错一下发送接收线对。否则说对说,听对听,肯定是没法通讯了
不是的,是用的半双工的
lktmac 2014-04-11
  • 打赏
  • 举报
回复
引用 8 楼 u012586257 的回复:
你用调试助手怎么接的?FPGA又是怎么接的?不明白你硬件连接
我是用的232转485的转换器,带有自收发功能的,用PC的usb转232线连接到232转485转换器上,后面接的一个模块是称重传感器,这样通过PC发送命令是可以收到传感器传回来的数据的,但是把PC换成fpga,用的是DE2的开发板,板上有232接口,外面再接一个232转485,再接的称重传感器,fpga发送同样的命令之后,传感器没有数据返回(fpga发送的命令有验证过是正确的,而且把它接回PC上看,发出的命令也是跟之前PC发出去的命令是一样的)。现在测试了一下从232转485转换器出来的电压,485的A、B线间电压,用PC连接的时候是2.3V,但用FPGA连接的时候只有1.35V,所以怀疑是FPGA输出的信号电压不够造成485没有接收到信号,如果是这样的话应该怎么解决?或者还有没有其他的原因?急求解答啊!!好纠结!!
mangoalx 2014-04-10
  • 打赏
  • 举报
回复
哦,我猜到了,你用的4线全双工,fpga 和你的外设都能和电脑通讯,说明它们收发线排列是一样的。现在你要让它们之间通讯,需要交错一下发送接收线对。否则说对说,听对听,肯定是没法通讯了
Falcon7x 2014-04-10
  • 打赏
  • 举报
回复
FPGA有收发控制吗?你是485不是422,需要收发控制。
mangoalx 2014-04-09
  • 打赏
  • 举报
回复
你用调试助手怎么接的?FPGA又是怎么接的?不明白你硬件连接
lktmac 2014-04-09
  • 打赏
  • 举报
回复
引用 4 楼 jeremy_jiang 的回复:
检查通讯帧格式是否一致。几位数据位,几位停止位,有无(什么)校验?
8位数据位,一位起始位,一位结束位,无校验位
lktmac 2014-04-09
  • 打赏
  • 举报
回复
因为如果有数据返回的话,fpga开发板上会有红灯亮,如果接收有误的话至少也会亮一下灯的,但就是连灯都不亮一下
lktmac 2014-04-09
  • 打赏
  • 举报
回复
没有示波器,不过收发数据没错,因为用串口调试助手发送给它后,它有返回数据,返回的数据也是正确的,只是用fpga发送同样的命令给它,就收不到它返回的数据了
加载更多回复(4)
C#串口介绍以及简单串口通信程序设计实现 源代码和串口程序介绍连接:https://www.cnblogs.com/JiYF/p/6618696.html 本站积分太贵,自己变得。。直接到连接地址下载代码 周末,没事干,写个简单的串口通信工具,也算是本周末曾来过,废话不多,直接到主题 串口介绍   串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度) 串口应用:   工业领域使用较多,比如:数据采集,设备控制等等,好多都是用串口通信来实现!你要是细心的话,你会发现,目前家用国网智能电能表就具备RS485通信总线(串行总线的一种)与RS232可以相互转化(当然一般,非专业的谁也不会闲的蛋疼,趴电表上瞎看,最多也就看看走了多少度电) RS232 DB9介绍: 1.示意图 2.针脚介绍: 载波检测(DCD) 接受数据(RXD) 发出数据(TXD) 数据终端准备好(DTR) 信号地线(SG) 数据准备好(DSR) 请求发送(RTS) 清除发送(CTS) 振铃指示(RI) 3.实物图: 以下是我购买XX公司的一个usb转串口线:这个头就是一个公头,另一端是一个usb口 笨小孩串口工具运行图: 1.开启程序 2.发送一行字符串HelloBenXH,直接将针脚的发送和接收链接起来就可以测试了(针脚2 接受数据(RXD) 和3 发出数据(TXD))直接链接, C#代码实现:采用SerialPort 1.实例化一个SerialPort [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 private SerialPort ComDevice = new SerialPort(); 2.初始化参数绑定接收数据事件 [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 public void init() { btnSend.Enabled = false; cbbComList.Items.AddRange(SerialPort.GetPortNames()); if (cbbComList.Items.Count > 0) { cbbComList.SelectedIndex = 0; } cbbBaudRate.SelectedIndex = 5; cbbDataBits.SelectedIndex = 0; cbbParity.SelectedIndex = 0; cbbStopBits.SelectedIndex = 0; pictureBox1.BackgroundImage = Properties.Resources.red; ComDevice.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件 }

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧