最近由于元件价格普遍暴涨,我们将原来用的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引脚对毛刺的滤波能力不足,所以接收信号错误。当然,这是我的猜测。
最后发表一下感想,曾经看过一个新闻,大意是说,国产芯片要发展,离不开下游客户的支持,有些小问题,需要终端客户理解包容。这次这件事,虽然这块芯片还不能代表“国产芯片”,只是从一个小角度,正好看出这句话要实现有多么难。
|