简介面向嵌入式硬件工程师与电子相关专业学生的W5500以太网控制器设计资料包围绕全硬件TCP/IP协议栈芯片的落地应用提供从原理图到PCB、封装库的一套可参考工程。压缩包共16个文件约2.64MB以Altium Designer工程文件为主schdoc原理图与pcbdoc板图配合prjpcb工程覆盖完整设计流程schlib与pcblib给出元件符号和QFN48封装焊盘pdf文档包含芯片资料与官方参考电路png图片便于快速预览关键界面。已有1052人学习下载。读者可从中查看W5500的电源、时钟、SPI接口、中断与PHY连接方式参考模块化布局、层叠规划、电源滤波和散热处理并核对封装焊盘尺寸与焊接工艺要求适合用作以太网模块设计、课程实验与项目移植的对照样本。1. W5500 这套资源到底装了什么一颗芯片、三份文件、一条链路板子打回来第一次上电SPI 能读到版本号插上以太网网线链路灯却死活不亮查了两天代码最后发现是隔离变压器中心抽头那个 3.3V 忘了接。W5500 这类硬件协议栈芯片就是这样软件侧被芯片自己扛掉了真正翻车的地方全在原理图和 PCB 的无源器件上。这份资源包给的正是最容易出错的那部分包含完整原理图、可打样的 PCB 文件和配套封装库核心是一颗 LQFP-48 的 W5500通过 SPI 与主控相连内置 8 个独立 Socket 的硬件 TCP/IP 协议栈支持 10/100Mbps 自适应。它适合三类人第一次画以太网口的新手、想把现成模块换成板载方案的老手以及需要一份能逐网络对照的参考设计做二次开发的人。下面按看懂原理图、核对封装、落地 PCB、排错、验证的顺序拆参数都能直接抄。2. 读原理图把 SPI 侧和以太网侧的网络逐个核一遍拿到别人的原理图最忌讳从头到尾扫一眼就开画。W5500 的图看着简单四十多个引脚里真正决定能不能通的其实就十几根网络其余是电源和地。我的习惯是先按功能块把它切成四块供电与基准、SPI 数字侧、以太网模拟侧、复位时钟与指示一块一块核对每块核完在图纸上打个勾。这样即使后面改动也知道自己动的是哪一块。资源包里的原理图基本是标准接法但标准接法里藏着几个容易被优化掉的细节下面逐个说。2.1 供电与基准3.3V 进、1.8V 出EXRES 上那个 12.4kΩW5500 只需要一路 3.3V 输入内核用的 1.8V 由片内 LDO 产生并从 1V8 引脚引出来。这一点是新手最容易搞错的地方看到 1V8 引脚就以为要外部供 1.8V于是加一路 LDO 灌进去结果上电就发热运气不好直接报废。正确做法是 1V8 引脚只挂去耦电容常见取值是 10uF 加 100nF电容靠近引脚放不要外接任何电源。资源包的原理图在这块画得很清楚1V8 网络上只有一个电容和一个测试点看到这种画法就说明设计者没踩过这个坑。第二个关键点是 EXRES 引脚上的基准电阻典型值 12.4kΩ、精度 1%。这个电阻决定片内偏置电流进而影响以太网发送幅度用 12k 或者 5% 精度的电阻代换短时间可能也能通但长时间跑或者换一批板子就会出现链路不稳、丢包率上升这类玄学问题。我一般会在 BOM 里把它单独标成精密电阻不可替代并且布局时紧贴引脚走线尽量短避免旁边有开关电源的干扰源。去耦电容的摆法也值得说一句。3.3V 进线处放一个 10uF 钽电容或者陶瓷电容每个电源引脚配一个 100nF这是标配。但很多人只在芯片周围摆一圈 100nF忘了 3.3V 入口的大电容结果一跑高速 SPI 就出现偶发读写错误。SPI 时钟拉得越高瞬态电流越猛入口储能越重要。常见做法是 3.3V 入口 10uF、芯片四周 4 到 6 个 100nF均匀分布在四个边上别全挤在一侧。2.2 SPI 五线与时序模式、上拉和 80MHz 的边界SPI 侧一共五根线SCSn、SCLK、MOSI、MISO加上中断 INT。W5500 支持 SPI 模式 0 和模式 3也就是空闲时时钟为低或为高数据在上升沿采样。这两种模式在芯片看来都对因为它在内部做了兼容但主控那边必须固定一种不能一会儿 0 一会儿 3。资源包的原理图不会写模式这个信息在芯片手册的时序章节里实际调试时如果读回来的数据整体错位一位八成就是模式选错了。速率上限手册标到 80MHz但这是芯片能力的上限不是你的板子能跑的上限。实际能不能跑高取决于三件事走线长度、主控 SPI 的输出驱动能力、以及 CS 到时钟的建立时间。我一般第一次调试先用 1MHz 到 5MHz 的低速把寄存器读通确认链路没问题再逐步往上加每加一档跑一次长时间读写测试。这一步不要省很多人直接上 30MHz读出来全是 0xFF然后怀疑芯片坏了其实只是时序余量不够。CS 和 INT 两根线建议各加一个 10kΩ 上拉。原因是主控复位期间或者上电初始化之前引脚处于高阻态CS 浮空可能被干扰拉低芯片就会误以为一次传输开始了内部状态机错乱。加了上拉之后空闲态明确为高芯片不会误触发。INT 是低有效输出上拉保证没有中断时电平确定主控用边沿触发还是电平触发都能正常工作。这两颗电阻成本几分钱省掉之后排查起来就是几个小时。还有一点如果主控和 W5500 之间隔着排线或者连接器SPI 的四根信号线建议各串一个 22Ω 到 33Ω 的电阻做源端匹配抑制过冲。板内走线短的话可以不加但只要是跨板连接我基本都会留这几个位置哪怕最后贴 0Ω。2.3 以太网侧变压器、49.9Ω 终端与共模端接以太网这一侧是整个设计里最模拟的部分也是最容易画错的地方。W5500 的 TX 和 RX 各是一对差分线出去先接一个 1:1 匝比的隔离变压器再接到 RJ45。变压器的作用是隔离和阻抗匹配不能省也不能用随便一个脉冲变压器替代必须是专为 10/100BASE-T 设计的型号。PHY 侧的中心抽头接法要严格照参考设计来。TX 和 RX 的中心抽头一般接到 3.3V同时每根差分线上各有一个 49.9Ω、1% 的终端电阻上拉到 3.3V。这四个电阻决定发送波形的幅度和回波损耗阻值偏差大了链路能起来但眼图很差长线缆或者劣质网线就会掉链。1% 精度是硬要求5% 的别用。线缆侧是共模端接四对差分线在变压器次级侧各串一个 75Ω 电阻四个电阻汇到一个公共点这个公共点再通过一个 1000pF、2kV 的高压电容接到机壳地。这套网络的作用是把共模噪声泄放到机壳地同时不破坏差分信号的平衡。高压电容的耐压值不能降2kV 是常规要求用普通的 50V 电容替代做耐压测试或者现场有浪涌时就是击穿。RJ45 的屏蔽壳要不要接机壳地取决于你的产品外壳。金属外壳的屏蔽壳通过弹片直接搭外壳塑料外壳的屏蔽壳可以悬空或者通过一个 1nF 电容下地别直接连数字地否则外面的干扰全打进板内。资源包的 PCB 在这块留了兼容焊盘0Ω 电阻和电容位置都有可以根据外壳类型选贴。2.4 复位、时钟、中断与 LED四个小网络复位引脚 RSTn 低有效标准接法是 10kΩ 上拉到 3.3V加一个 100nF 电容下地再并一个按键用于手动复位。RC 的时间常数大概 1ms足够让内部电路稳定。有人喜欢用主控的 GPIO 直接控复位这时候要注意上电顺序如果主控先起来、W5500 还没稳定GPIO 输出的低电平会把芯片一直摁在复位态。稳妥的做法是 GPIO 通过一个 1kΩ 电阻接 RSTn同时保留 10k 上拉主控初始化完成后再把 GPIO 配成高阻输入。时钟用 25MHz 晶体两个负载电容的取值按晶体规格书来一般 18pF 到 22pF。这里有个细节负载电容要减去 PCB 走线的寄生电容和芯片引脚的输入电容通常减 3 到 5pF所以规格书写 18pF 时实际贴 15pF 左右更准。晶体和电容要尽量贴近芯片走线包地下面不要走其他信号尤其是 SPI 时钟。LED 引脚用来驱动链路和速率指示灯低有效串 470Ω 到 3.3V 就行。这里没什么坑唯一要注意的是如果指示灯放面板上走线长了要加个三极管或者缓冲别指望引脚直接驱动大电流 LED。网络关键参数常见错误1V8仅挂 10uF 100nF不外供外部灌 1.8V 导致发热EXRES12.4kΩ1%用 12k 或 5% 精度替代SPI模式 0 或 3CS/INT 加 10k 上拉CS 浮空导致状态机错乱TX/RX 终端49.9Ω1%上拉至 3.3V阻值偏差导致链路不稳共模端接75Ω ×4 1000pF/2kV 下机壳地用低压电容替代击穿复位10k 上拉 100nF主控 GPIO 长期拉低3. 封装库与焊盘从 0.5mm 间距里抠出可制造性封装这件事画的时候觉得差不多就行贴片的时候才知道差多少。LQFP-48 的 W5500 是 7mm × 7mm 本体、0.5mm 引脚间距这个间距下焊盘长一点短一点直接决定虚焊还是连锡。资源包里的封装库是这份资料价值最高的部分之一因为它是按厂家推荐尺寸画的不是随手估的。但拿到别人的库第一件事永远不是直接用而是核对。3.1 LQFP-48 的焊盘尺寸0.5mm 间距下的容差账0.5mm 间距意味着相邻焊盘边缘的间隙只有零点几毫米回流焊时锡膏一多就桥连。焊盘宽度的常规取值是 0.28mm 到 0.30mm长度 1.4mm 到 1.6mm内侧对齐本体边缘往里收 0.1mm 左右外侧往外延 0.3mm 到 0.5mm 形成爬锡区。这个尺寸不是拍脑袋是按焊点可靠性算出来的外侧延伸太少焊锡爬不上引脚侧面形成虚焊延伸太多锡往焊盘外跑引脚根部反而吃不饱。参数推荐值说明焊盘宽度0.28 ~ 0.30mm超过 0.32mm 易桥连焊盘长度1.4 ~ 1.6mm含内外延伸内侧内缩0.05 ~ 0.10mm避免本体压焊盘外侧延伸0.30 ~ 0.50mm形成爬锡区相邻间隙≥ 0.20mm低于此值钢网要开窄1 脚标记丝印缺角 圆点双重标记防贴反资源包里的封装如果和上表一致基本可以直接用。如果焊盘长度只有 1.0mm说明是按手工焊接思路画的机器贴片会出问题需要自己改。改的时候不要只改长度宽度和间隙一起核改完跑一遍 DRC确保 0.5mm 间距下没有间距报错。3.2 丝印、1 脚标记与 3D 模型贴片厂真正看的东西设计者觉得丝印是给自己看的其实丝印是给贴片厂的操作员看的。LQFP 封装如果没有明确的 1 脚标记操作员上料时方向搞反四十多个引脚全废。标准做法是三重标记丝印外框在 1 脚位置画一个缺角或者斜边1 脚焊盘旁边点一个小圆点装配层再画一个完整的器件外框。这三样都在基本不会贴反。器件外框的作用是给 AOI 检测和返修定位。外框要画在本体轮廓外侧 0.2mm 左右不能压在焊盘上。有些库为了省事外框直接和焊盘重叠回流后丝印油墨沾到焊盘上影响可焊性。这个细节在打样阶段看不出来量产时就是批量不良。3D 模型不是必须的但有的话做结构干涉检查很方便尤其是板子要装进窄小外壳时芯片高度、RJ45 高度、变压器高度都得核。资源包如果带 3D 模型导入后和结构图对一遍比拿卡尺量快得多。3.3 把资源库和自己的库做一次叠图核对最稳妥的核对方法是叠图把资源包里的封装导出成 DXF 或者直接用 EDA 工具的对比功能和自己的库、或者和厂家手册里的推荐焊盘图叠在一起看看边缘是否重合。差 0.1mm 以内可以接受差 0.2mm 以上就要查是哪边画错了。没有叠图条件时退而求其次的办法是 1:1 打印把芯片实物放上去对引脚这个方法土但有效尤其是核对引脚数量和间距。第二步是数焊盘。LQFP-48 就是 48 个引脚焊盘加上中间可能有的散热焊盘。有些库会多画或者少画一个肉眼扫一遍看不出来用工具的统计功能数一下最快。第三步是检查焊盘编号顺序逆时针从 1 脚开始这个顺序错了贴片方向对但信号全错调试时能把人逼疯。4. PCB 落地叠层、差分对和地的处理原理图对了PCB 才是真正决定这块板子能不能稳定跑 100M 的地方。W5500 的以太网侧是模拟信号SPI 侧是数字信号两者在同一块板子上处理不好就是互相干扰。资源包的 PCB 文件可以直接作为参考但参考的意思是看懂它为什么这么画而不是照抄。4.1 四层叠层与 100Ω 差分参数怎么给板厂以太网差分线的目标是 100Ω 差分阻抗这个数不是可选参数是标准要求。阻抗靠叠层和线宽线距配合实现具体数值必须让板厂用他们的材料参数算不能自己套公式。常见的四层叠层是顶层信号、第二层完整地、第三层电源、底层信号总厚度 1.6mm介电常数 4.2 左右。在这个叠层下差分线宽 0.2mm、间距 0.2mm距离参考层 0.2mm算出来大概在 100Ω 附近但最终以板厂返回的阻抗报告为准。叠层用途关键要求L1 顶层器件、差分、SPI差分 100Ω ±10%L2 地完整地平面差分参考层不得开槽L3 电源3.3V 平面与地平面紧耦合L4 底层低速信号、电源走线差分区域下方保持地完整给板厂下单时直接把差分 100Ω ±10%写进工艺要求让他们出阻抗计算单。有些小厂不做阻抗控制那就至少保证线宽线距按常规值走不要出现 0.15mm 线宽配 0.5mm 间距这种离谱组合。4.2 差分走线与隔离带变压器下面必须挖空差分对走线有三条铁律等长、等距、少过孔。等长误差控制在 10mil 以内差分对内部两根线的长度差比对外部更重要。过孔会引入阻抗突变能不打就不打非要打就两根线对称打不要一根打过孔一根绕过去。走线拐弯用 45 度或者圆弧不要用 90 度直角。变压器是隔离器件它下面所有层必须挖空不能铺铜不能走线。原因是变压器初次级之间要承受隔离电压下面有铜的话爬电距离不够耐压测试会打火。隔离带宽度按安规要求来常规做法是初次级之间留 6mm 到 8mm 的净空RJ45 到变压器的区域也不要铺铜。RJ45 到变压器之间的差分线走在小隔离区内这段线尽量短、直、不换层。这段线如果太长会形成天线接收外部干扰也会把板内的噪声辐射出去。常见做法是把变压器紧贴 RJ45 放中间只留几毫米的走线距离。4.3 地的处理数字地、机壳地与单点连接板子上其实有三种地数字地、模拟地以太网侧、机壳地。W5500 内部的 PHY 是模拟电路但它和数字部分在同一颗芯片里芯片内部已经处理了外部不需要刻意分割地平面。我的做法是整板一个完整地平面只在 RJ45 屏蔽壳和共模端接电容那一小块做机壳地的隔离区。机壳地和数字地之间用两种方式连接一种是直接通过 0Ω 电阻或者磁珠单点连接另一种是通过 1nF 到 10nF 的电容连接。前者适合外壳接地良好的场合后者适合外壳浮空的场合。资源包的 PCB 两种都留了位置可以根据产品形态选。不管选哪种机壳地那一块不要铺太大只覆盖 RJ45 屏蔽壳和高压电容的落点即可。地平面上的过孔要舍得打。芯片周围的地焊盘每个都打一个过孔下地尤其是 1V8 电容和 EXRES 电阻旁边的地过孔距离越短越好。以太网差分线两侧可以打一排地过孔做屏蔽间距 3mm 到 5mm这条在跑 100M 时能明显改善辐射。4.4 出图前的 DRC 清单打样前跑一遍 DRC 是基本操作但 DRC 只查规则不查设计意图。我一般还会手工过一遍下面这份清单差分对是否等长误差是否在 10mil 以内对与对之间是否保持 3 倍线宽以上的间距变压器下方是否所有层都挖空隔离带宽度是否够1V8 网络是否只有电容、没有连到任何电源EXRES 电阻是否紧贴引脚走线是否避开 SPI 时钟晶振下方是否完整地是否被其他信号穿越复位电路的上拉和电容是否都在按键是否可达丝印是否有压焊盘的情况1 脚标记是否清晰板边是否留够 0.5mm 以上的工艺边Mark 点是否放置。这份清单每次打样前过一遍能挡掉大部分低级错误。血泪经验是 DRC 全绿不等于板子能用规则是死的设计意图是活的。5. 避坑与排查五块板子救回来的现场记录下面这几条都是实际调试中遇到的现象看起来差不多原因却完全不同。排查的顺序建议从电源开始再到 SPI最后到以太网链路因为前一级不通后一级的现象就是假的。5.1 电源与复位类发热和不启动现象一板子上电后芯片明显发热SPI 完全无响应。原因基本可以锁定在 1V8 引脚被外部供电片内 LDO 和外部电源打架。解决方法是断开外部 1.8V 供电路径只保留去耦电容重新上电测 1V8 引脚电压应该在 1.8V 左右。如果断开后仍然发热检查 3.3V 是否有短路用万用表量 3.3V 对地电阻正常应该是几百欧到几千欧接近零就是短路。现象二SPI 能读能写但芯片隔一段时间自己复位。原因是复位引脚上的 RC 参数不对或者主控 GPIO 干扰。RSTn 上的电容太大上电时充电慢芯片迟迟不释放复位电容太小又容易被干扰误触发。标准 100nF 配 10k 上拉是比较稳的组合。如果主控 GPIO 接了复位确认初始化完成后 GPIO 处于高阻态而不是输出低。5.2 SPI 通信类读回 0x00 和 0xFF 不是一回事现象三读版本寄存器读回来全是 0x00。这个现象说明 MISO 一直是低电平可能是芯片没有上电、没有释放复位或者 MISO 线断了、虚焊。排查顺序是先量 3.3V 和 1V8再量 RSTn 是否为高最后用示波器看 SCLK 有没有波形。如果 SCLK 有波形但 MISO 不动重点查 MISO 的焊接和上拉。现象四读回来全是 0xFF。这个现象说明 MISO 被拉高通常是芯片根本没响应总线处于空闲态。常见原因是 CS 没有拉低、SPI 模式选错、或者时钟太快。先把时钟降到 1MHz模式改成 0CS 用软件控制一步一步来。如果还是 0xFF检查 CS 线上有没有上拉以及 CS 到 SCLK 的时序是否满足建立时间。现象五读回来的数据偶尔错一位重试又对了。这是典型的时序余量不足。原因可能是 SPI 时钟太快、走线太长、没有源端匹配。解决方法是降速、加串阻、缩短走线。如果主控和芯片不在同一块板上排线长度超过 10cm建议把时钟降到 10MHz 以下并且每根信号线都串 33Ω。5.3 以太网链路类灯亮但 ping 不通现象六链路灯亮速率灯显示 100M但 ping 不通。灯亮说明 PHY 和对面协商成功了问题多半在数据通路。先确认 TX 和 RX 的差分对有没有接反TX 接 TX、RX 接 RX接反了灯可能还亮但数据不通。再确认变压器中心抽头的 3.3V 有没有接这个漏了就是开头说的那个坑。最后查 49.9Ω 终端电阻有没有贴阻值对不对。现象七能 ping 通但丢包严重长网线时更明显。原因通常是终端匹配或共模端接有问题。检查 49.9Ω 电阻的精度检查 75Ω 共模电阻和高压电容有没有漏贴检查差分线的阻抗是否连续、有没有在中间换层。还有一个容易忽略的点变压器到 RJ45 之间的走线如果太长或者经过干扰源也会导致丢包这段线越短越好。现象八两块板子对连正常接交换机就不通。这种情况优先查自协商把两端强制成 100M 全双工试一下。如果强制后能通说明自协商过程受干扰重点查共模端接和地平面。另一个可能是 RJ45 的线序问题交叉线和直通线搞混虽然现代 PHY 大多支持自动翻转但不是所有都默认开启。6. 从寄存器到 ping 通上电后的三步验证与量产前的最后一公里板子回来别急着插网线按三步走能把问题定位到具体环节。第一步只验证 SPI 链路读芯片的版本寄存器能读对就说明供电、复位、时序三条都通了。W5500 的 Common 区版本寄存器偏移是 0x0039正常回值一般是 0x04具体以手册为准。SPI 帧格式是两字节地址加一字节控制再跟数据控制字节里带块选择位和读写位读操作时最高位为 0。/* 读 W5500 Common 区 VERSIONR验证 SPI 链路。spi_xfer 需替换成主控的收发函数 */ #define W5500_BSB_COMMON 0x00u /* Common 寄存器块 */ #define W5500_RWB_READ 0x00u /* 最高位 0 表示读 */ #define W5500_VERSIONR 0x0039u /* 版本寄存器偏移 */ uint8_t w5500_read_version(void) { uint8_t cmd[3]; uint8_t ver 0; cmd[0] (uint8_t)(W5500_VERSIONR 8); /* 地址高字节 */ cmd[1] (uint8_t)(W5500_VERSIONR 0x00FFu); /* 地址低字节 */ cmd[2] (uint8_t)((W5500_BSB_COMMON 3) | W5500_RWB_READ); /* 块选择 读 */ cs_low(); spi_xfer(cmd, NULL, 3); /* 先发 3 字节头部 */ spi_xfer(NULL, ver, 1); /* 再收 1 字节数据 */ cs_high(); return ver; }这段代码的关键在控制字节块选择位左移 3 位读写位放最低位读操作填 0。地址是 16 位先发高字节再发低字节两字节发完后芯片才把数据放到 MISO 上。如果读回来是 0x00 或者 0xFF不要改代码回去查硬件按第 5 章的排查顺序走。读对版本号之后再配置网络参数网关、子网掩码、本机 IP、本机 MAC写完后打开一个 Socket 做回环或者 telnet 测试。第二步验证链路层把网线插上看链路灯和速率灯。100M 链路正常的话速率灯常亮10M 的话可能不亮或者闪。这一步只验证 PHY不涉及协议栈。如果灯不亮查变压器、终端电阻、RJ45 线序如果灯亮但速率不对查差分阻抗和共模端接。第三步验证网络层用另一台机器 ping 这块板子。命令很简单关键是看回包的稳定性和延迟# 连续 ping 1000 包统计丢包率和延迟观察长稳表现 ping -c 1000 -i 0.01 -s 1400 192.168.1.100 # 抓包确认 ARP 和 ICMP 是否正常往返 tcpdump -i eth0 -n host 192.168.1.100 and icmp-c是包数-i是间隔-s是负载大小1400 字节接近 MTU能压出缓冲区的边界问题。丢包率在千分之一以内算正常超过就要回头查硬件。抓包是为了区分是板子没回还是回包在路上丢了两种情况的排查方向完全不同。量产前还有一件事把 BOM 和位号图对一遍重点核 EXRES 电阻、49.9Ω 终端电阻、1000pF 高压电容这几个器件的精度和耐压任何一个被替代都可能让一批板子现场翻车。从那以后我每次打样回来都会先拿 1:1 打印的封装图和实物对一遍引脚再上电读版本号这两步做完才敢往下调协议栈。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?