本帖记录一下制作基于ESP32的485+网口的转换
器过程中遇到的问题以及踩坑记录
一.项目概况
1.主要芯片
主控芯片为乐鑫的 ESP32-WROOM-32E-N4
以太网收发芯片为 LAN8720A-CP-TR
485芯片为 BL3085(I47)
2.原理图介绍
由于是公司产品,原理图无法放出,所以只能口述做踩坑演示
产品定位工业级产品,系统所有供电均由市电提供
供电拓扑大致为:
市电---Fly_Buck---15V---Buck---3.3V
功能性拓扑:
ESP32---Lan8720---RJ45
---BL3085---485接口
二.踩坑问题
按照上述拓扑参考Datasheet,基本功能都能实现,下述所有问题全部是基于EMC相关问题
1.晶振
参考官方Lan8720的Datasheet,Lan8720芯片可以使用50M以及25M晶振。
第一版,我使用的常用的50M有源晶振,样品制好后,辐射干扰测试每隔50M频率就会出现一根突然的尖峰。尖峰已经超过标准的2倍数值,因此第二版决定换25M无源晶振。
当用50M晶振时,晶振CLK直接输送到Lan8720的X1脚和ESP32的 IO 0,此时X2脚为悬空,但如果使用25M晶振,则需要晶振的1,3脚分别输出到Lan8720的X1,X2脚,25M通过Lan8720内部倍频到50M从其14脚输送至ESP32的 IO 0 。
但是Lan8720默认14脚是关闭状态,如果需要开启内部倍频从14脚输出的话,此时需要将Lan8720的LED2脚下拉,这里还有一个问题,就是Lan8720的VDDCR脚,这个引脚和LED1有关,如果LED1下拉,则启动Lan8720内部LDO,VDDCR主动输出1.2V。如果LED1悬空或者上拉,则需要外部电路输送1.2V至VDDCR。
因此,想要25M晶振正常工作,需要满足以下几点:
(1)LED2 下拉
(2)LED1 下拉或者直接给VDDCR供1.2V
2.EMC整改
更改25M晶振后,效果改善明显,但还有几处会超过标准,在38M,70M时会呈现弦波高峰,150M,650M,750M时会出现突起尖峰,初步判断38M,70M为开关电源引起,150M,650M,750M由晶振耦合引起。顺便提一嘴,所有测试均为RJ45和485接口接了2根1M长的线的情况下进行的,如果不接线则没有超标。
单独接485线以及RJ45线测试,发现38M,70M,150M为485线传出,650M,750M由网线传出,因此,第三版就针对这几个频段整改,将电源拓扑新增一个LDO3.3V,给485芯片供电,在ESP32 14脚输出串301Y磁珠,以及π型滤波,在485接口处串共模电感。
最后第三版出来,测试全部通过,虽然70M左右弦波还在,但最高峰已经降到标准线下,至此来公司的第一个项目完成,准备进行接下来的小批量试制。