打印
[485通信]

进口和国产的差异,一个悬案

[复制链接]
1438|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hh312|  楼主 | 2017-9-16 14:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近由于元件价格普遍暴涨,我们将原来用的STM32单片机换成国产的某个型号,单机测试时虽然碰到一些问题,但是都解决了,可当真正量产了一批产品时,却砸在485总线通讯上了,分析到最后,认为就是国产单片机的抗干扰能力太差,现在正在把芯片一块一块拆下来换回stm32的。
关于485总线,在模拟电路上对我来说一直是神秘的,所以把这个事情拿来讲讲,作为一个案例供大家消遣,同时我也学学以便以后可以更好的装B。
我们的产品是阵列式使用的,就是在一条485总线上串很多设备来控制使用。虽然实际应用场合不会那么苛刻,但是对于用户来说,产品肯定是越nb越好,所以,用户对于一条485总线能串多少设备是没有上限的。我们的产品上线以来,一直保持着串100台没有任何异常的记录,而且还没测试过更多的数量,因为用户的电闸撑不起更多的设备了。可是,把STM32单片机换成国产其他型号之后,能串接的设备台数却严重缩水,例如,串接18台没事,串19台时,第一台就开始不正常了,串得越多不正常的台数越多。在分析问题过程中,我们总结出如下规律:
1、不同的发送设备,能串接的接收设备最多台数是不一样的。发送设备越高端越贵,能串接的接收设备就越多。
2、加个终端电阻(120欧姆那个),接收设备数量可以大大增加,可以达到用户的心理底线
3、每18台设备加一个信号放大器,问题也彻底解决
4、对接收不正常的节点,换成STM32芯片,接收也正常了
5、在芯片的Rx引脚加滤波电路,可以一定程度上提高串接设备台数,也就是说,如果一台设备接收不正常,只要不是很严重,那么加上滤波电路就好了。
6、示波器无法测Rx信号,因为,示波器的探针一碰到Rx信号脚,接收就正常了。这个应该等效于滤波电路了吧?
7、设备串上之后,就算不上电,影响也是存在的。
8、换过不同型号不同厂家的485芯片,没效果。
9、有一个发送设备,接上后,个别设备不但接接收不正常,甚至死机!这么严重的情况下,连STM32也搞不定了。
485总线是半双工通讯,实验过程一直保持一个方向通讯,所有设备的地线都是通过总线连在一起的,没有接机壳。

虽然有很简单的办法解决串接数量问题,比如一个成品终端电阻几块钱相对于这些上万的设备来说完全可以忽略,哪怕是一个信号放大器也就几百元,但是用户始终认为,我们以前的产品能串那么多,现在缩水这么严重,有偷工减料之嫌,当然我们自己中国人还能留点面子,但是我们的客户的客户是老外,一些老外是很刁钻的,大有买个番薯还嫌番薯颜色不均匀的架势,又难以沟通,为了避免麻烦,我们决定还是不用这块国产芯片了。

咨询过芯片供应商,他们说可能是芯片特性不一样。。。。

我个人分析认为,由于没有终端电阻,反射总是存在的,如果由于发送设备自身的驱动能力不足,还有发送时序的差异,反射波可能会大到影响正常信号的程度,甚至当驱动力严重不足时,类似于短路,地线都被影响(所以才有死机的现象),所以485芯片的输出多了很多毛刺,国产芯片的Rx引脚对毛刺的滤波能力不足,所以接收信号错误。当然,这是我的猜测。

最后发表一下感想,曾经看过一个新闻,大意是说,国产芯片要发展,离不开下游客户的支持,有些小问题,需要终端客户理解包容。这次这件事,虽然这块芯片还不能代表“国产芯片”,只是从一个小角度,正好看出这句话要实现有多么难。

相关帖子

沙发
acguy| | 2017-9-16 20:57 | 只看该作者
估计国产芯片没有过采样,对噪声太敏感。

使用特权

评论回复
板凳
chunyang| | 2017-9-16 22:04 | 只看该作者
485总线的终端电阻是必须加的,而楼主的总结虽然很细,但没有涉及到技术上的关键点。STM32是MCU,并没有直接挂在485总线上,问题出在485接口和总线设计没有到位上,而STM32的串口可能对脉宽的要求没有那么严格而显得适应性更好而已。485带载多要求485接口电路的阻抗相应提高,做一百多节点小意思。建议楼主看看本栏目关于485的大量老帖,尤其是五六年以前的。

使用特权

评论回复
地板
一事无成就是我| | 2017-9-18 08:51 | 只看该作者
赞成楼上的,485总线理论上可带255,实际是不行的,3.3V的485芯片到10个就够呛。以前本人采用的是自己做了个路由开关设备,终端设备组分时接入,这样达到一条总线管理N多,我做的是管理3K个节点设备

使用特权

评论回复
5
steelen| | 2017-9-18 09:01 | 只看该作者
本帖最后由 steelen 于 2017-9-18 09:06 编辑

设计存在缺陷
可能存在于你的设计中,STM32弥补了你的设计缺陷
也可能存在于国产的CPU中
估计在上拉和litch处理上从你说的情况看,应该属于国产芯片CPU的UART RX处理问题
估计没有考虑尖峰的影响,当存在反射信号时,RX脚出现一个短暂的错误尖峰,导致RX内部电路认为是错误,不接收了
所有你在RX引脚加电容,或者接示波器(相当于一个10P-100P电容)就可以解决了
更改一下设计,加个RC滤波和施密特触发器电路

使用特权

评论回复
6
ticomi| | 2017-9-22 07:57 | 只看该作者
简单而言是电路设计有一定的缺陷,完全怪国产芯片也是不恰当的;只是STM32抗干扰和错误能力强一点而已罢了!!

使用特权

评论回复
7
hh312|  楼主 | 2017-9-23 15:34 | 只看该作者
steelen 发表于 2017-9-18 09:01
设计存在缺陷
可能存在于你的设计中,STM32弥补了你的设计缺陷
也可能存在于国产的CPU中

以后肯定会考虑在成本范围内加个简单的滤波电路。以前有考虑过,只是波特率太高,200多k,不足400p的电容就把高电平削尖了,电容小了又觉得意义不大,现在看来,加个200p电容肯定有效果,不过这个电容对于那块芯片来说也只是改善效果,还达不到stm32的效果。
我们还试过,加个分压电阻都能改善效果,这个现象或许能印证您说的“尖峰”,尖峰被分压了,就不算尖峰了。

使用特权

评论回复
8
knight_21ic| | 2017-9-23 21:05 | 只看该作者
这是 引脚5v兼容问题吧, RS485芯片一般是5V的

STM32有这个功能   国产的可能没有, 或者不太好,引起RX引脚电流过大

所以串一个 1K左右的电阻可以解决问题

使用特权

评论回复
9
billypeng| | 2017-9-29 14:21 | 只看该作者
大家讨论得很好.

使用特权

评论回复
10
chunyang| | 2017-9-30 18:28 | 只看该作者
一事无成就是我 发表于 2017-9-18 08:51
赞成楼上的,485总线理论上可带255,实际是不行的,3.3V的485芯片到10个就够呛。以前本人采用的是自己做了 ...

485的节点数跟接口芯片的输入阻抗相关,与供电电压无关,你若用常规32点的接口片去做256点的,能实现才怪。除正确选择接口芯片外,总线电路的设计也很重要。

使用特权

评论回复
11
一事无成就是我| | 2017-9-30 22:46 | 只看该作者
chunyang 发表于 2017-9-30 18:28
485的节点数跟接口芯片的输入阻抗相关,与供电电压无关,你若用常规32点的接口片去做256点的,能实现才怪 ...

你忽悠我没文化,读书少,难道你用的是超导或是火星技术,居然说跟电压无关。

使用特权

评论回复
12
chunyang| | 2017-9-30 22:54 | 只看该作者
一事无成就是我 发表于 2017-9-30 22:46
你忽悠我没文化,读书少,难道你用的是超导或是火星技术,居然说跟电压无关。 ...

你去看看485标准,再去看看可3V工作的256、512节点的接口片器件手册。

使用特权

评论回复
13
一事无成就是我| | 2017-9-30 22:58 | 只看该作者
chunyang 发表于 2017-9-30 22:54
你去看看485标准,再去看看可3V工作的256、512节点的接口片器件手册。

手册看多了,我不想给你争辩这些,多做工程会给你答案的,不要用实验室的数据来忽悠我就好,咱老实农民,经不住你那么折腾的

使用特权

评论回复
14
chunyang| | 2017-9-30 23:01 | 只看该作者
一事无成就是我 发表于 2017-9-30 22:58
手册看多了,我不想给你争辩这些,多做工程会给你答案的,不要用实验室的数据来忽悠我就好,咱老实农民, ...

呵呵,论做工程,不知你才有多少年的经验……而且,理论上证明可行的,实际上一定可行,这是科学的意义。

使用特权

评论回复
15
17665281212| | 2017-10-16 14:47 | 只看该作者
485到底能接多少从站,是由485驱动芯片输入阻抗决定的。
另外楼主硬件电路、固件设计肯定有改进的空间,不信拿出来看
国产没你想象的那么不堪!

使用特权

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

本版积分规则

9

主题

42

帖子

1

粉丝