RS485接收到的都是乱码

lgwias 2010-02-25 11:12:26
那位高人能指点迷津,不盛感激!

我用的是盛博的CSD通讯卡,上面有四个相互独立的串口,都可以设置成rs232,rs422,rs485中的任何一种,我已按照使用要求将其中两个跳线为485模式,并用线将他们的对应的TXD,RXD,GND脚连了起来。我的问题如下:

1.
在程序中我把其中一个串口的RTS线置低电平,目的是将发送驱动器转换为第三态,作为接收端使用,另一个串口的RTS置高电平,使能发送驱动器,该串口作为发送端,可是接收到的是乱码。

2.
如果将上面的接收端和发送端换一下,即把两个串口的RTS都换成另外一种状态,而且发同样的数据显示的乱码还和上次不一样

注:我是用的EscapeCommFunction函数置高或置低RTS的,另外厂方也告诉我通过RTS引脚来使能485驱动器。

再次感谢大家,期待...
...全文
2906 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
honeyhu 2010-02-28
  • 打赏
  • 举报
回复
RS-485是差分电平通信,在距离较长或速率较高时,线路存在回波干扰,此时需要在通信线路首末两端并联120Ω匹配电阻。
匹配电阻会降低线路带负载能力,因此我们推荐在通信速率大于19.2Kps或线路长度大于200米时,才需加接匹配电阻。

请看 武汉鸿伟光电
E485C RS232/RS485/RS422无源转换器
E485D RS232/RS485/RS422有源隔离转换器
lgwias 2010-02-27
  • 打赏
  • 举报
回复
我是从一块板上同时扩展的两个串口上进行通信的,就几厘米长,不加终端电阻是乱码,加上就好了
kyzf 2010-02-26
  • 打赏
  • 举报
回复
485总线需要匹配, 你的传输距离长吗? 终端电阻是为了阻抗匹配。

建议楼主分别测试下 终端不加电阻 和加电阻时,对应的波形,
这样就能明白 终端电阻对于匹配的影响和波形的影响,
lgwias 2010-02-26
  • 打赏
  • 举报
回复
问题解决了,谢谢各位,是终端电阻的问题,原来没有将终端电阻跳上,以为终端电阻不重要,可偏偏就是因为没有终端电阻,才导致了接收到乱码,虽然终端电阻加上后能正确接收了,可我还是不明白为什么终端电阻在这里这么重要?
xsnbzj 2010-02-25
  • 打赏
  • 举报
回复
两边的参数设置一定要想匹配

你可以用示波器看下,通信情况,是否符合你们的通信协议

如果符合那可能是你有的地方接的不对,可以去掉地线试试,是否是干扰的问题,
或是把485的AB 线反接下看看

如果再不行用其他机子试试
lgwias 2010-02-25
  • 打赏
  • 举报
回复
波特率没问题,另外这边发送那边肯定能收到乱码,我再按你说的,用示波器看看再说
kyzf 2010-02-25
  • 打赏
  • 举报
回复
通讯两边的波特率设置相同吗?

另外接受可靠吗?

建议楼主用示波器测试下对应的波形,看下通讯的波特率以及波形的幅度?
这样就很容易定位出到时是发送的波形有问题,还是接受出了问题。
贝隆 2010-02-25
  • 打赏
  • 举报
回复
我认为应该是干扰,楼主有没有干扰源?
galle 2010-02-25
  • 打赏
  • 举报
回复
引用楼主 lgwias 的回复:
  那位高人能指点迷津,不盛感激!

  我用的是盛博的CSD通讯卡,上面有四个相互独立的串口,都可以设置成rs232,rs422,rs485中的任何一种,我已按照使用要求将其中两个跳线为485模式,并用线将他们的对应的TXD,RXD,GND脚连了起来。我的问题如下:

1.
  在程序中我把其中一个串口的RTS线置低电平,目的是将发送驱动器转换为第三态,作为接收端使用,另一个串口的RTS置高电平,使能发送驱动器,该串口作为发送端,可是接收到的是乱码。

2.
  如果将上面的接收端和发送端换一下,即把两个串口的RTS都换成另外一种状态,而且发同样的数据显示的乱码还和上次不一样

注:我是用的EscapeCommFunction函数置高或置低RTS的,另外厂方也告诉我通过RTS引脚来使能485驱动器。

  再次感谢大家,期待...

如果使用485方式,rxd接rxd txd接txd
简要说明: 本软件能够根据您的配置要求自动生成给予ICC的程序工程代码,您可以直接编译测试! 版本升级纪录: 2006-12-17 软件V2.1.1版所做的修改介绍: 修正了以前版本中出现的载入配置文件后生成代码丢失设置的问题; 修正了上一版本中出现的在生成DS18B20程序代码时头文件包含错误; 修正了上一版本中生成DS18B20的测试程序代码,使得串口发送的数据更加清楚; 增加了对ICC编译器路径的设置; 修正了LCD122x32(SED1520)初始化程序部分,使得更容易操作; LCD显示器新增支持(LCD122x32(ST7920)); 增加了对RS485的支持(增加了对控制脚RE/DE的初始化); 增加了SPI接口的SD卡读写程序,以及fat文件系统代码; 增加了对FM接收芯片TEA5767的支持。 2006-11-12 软件V2.1.0版新增加的功能介绍: 修正了上一版本中出现的串口接收到汉字数据时,有时会出现乱码的BUG; 修正了上一版中出现的有时生不成延时程序的BUG; LCD显示器新增支持(LCD4004、LCD3310(PCD8544)); 增加了对USB器件CH375的读U盘部分支持; 增加了对MP3解码芯片VS1003的支持; 增加了对温度检测芯片DS18B20的支持(只生成代码,条件所限,没有测试)。 2006-10-24 软件V2.0.2版新增加的功能介绍: 软件集成了功能强大串口调试工具,使得在生成代码后无需使用其它调试软件就可以调试串口通讯; 软件内串口通讯代码生成功能与串口调试功能实现了完全的设置参数传递,调试时无需设置,比如:波特率、停止位、数据位等; 软件的在线更新检测功能采用了多线程技术,不会再出现之前版本中存在的有时界面会死掉一小会儿的情况。 2006-10-18 软件V2.0.1版新增加的功能介绍: 全面更改了软件的内部结构,增加了对动态链接库的支持,以方便软件以后的升级; TWI接口新增器件支持(AT24Cxx、SD2000、ZLG7290); LCD显示器新增支持(LCD240x64(KS0108)、LCD240x64(T6963)、LCD320x240(SED1335))。 2006-10-13 软件V2.0.0版支持测试代码的生成功能如下: 串口测试代码; SPI接口的外接器件的测试代码(DS1302); TWI接口的外接器件的测试代码(DS1307); LCD显示的测试代码(LCD1601、LCD1602、LCD1604、LCD2002、LCD2004、LCD3202、LCD122x32(SED1520)、LCD128x64(KS0108)、LCD128x64(ST7920)、LCD128x64(T6963) )。

27,375

社区成员

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

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