You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroPython与CircuitPython环境下Wiznet5500 HTTP GET请求延迟问题

W5500以太网模块请求延迟过高解决方法

核心问题排查点

  • 硬件初始化逻辑错误:当前代码将SPI总线初始化、W5500实例化、网络配置逻辑全部放在while死循环内部,每次执行请求都会重新初始化硬件、重新进行以太网链路协商,这是最核心的耗时原因,将这部分代码迁移到循环外部,仅执行一次初始化即可。
  • SPI总线速率未指定:adafruit的W5500驱动默认SPI时钟速率较低,W5500最高支持80MHz SPI通信,树莓派Pico可稳定运行在30MHz以上速率,初始化SPI时手动指定frequency参数即可大幅提升收发效率。
  • DNS解析延迟:请求私有业务API耗时长达1分钟大概率是DNS解析超时导致,你可以先用IP地址代替域名测试验证,如果使用IP后耗时恢复正常,手动指定W5500的DNS服务器地址即可,例如配置为公共DNS8.8.8.8或者你本地网络的DNS地址。
  • TCP参数配置不合理:W5500默认的TCP重传超时、窗口大小配置可能不适配你的网络环境,手动设置socket默认超时时间,避免异常情况下的长时间等待。

修正后测试代码

import board
import busio
import digitalio
import adafruit_requests as requests
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
import gc
from machine import UART,Pin
import time

print("Wiznet5k WebClient Test")
# 硬件初始化移到循环外,仅执行一次
JSON_URL = "http://jsonplaceholder.typicode.com/todos/1"
cs = digitalio.DigitalInOut(board.GP13)
# 手动指定SPI速率为30MHz
spi_bus = busio.SPI(board.GP10, MOSI=board.GP11, MISO=board.GP12, frequency=30_000_000)
eth = WIZNET5K(spi_bus,cs)
# 手动指定DNS服务器
eth.dns = ("8.8.8.8", "114.114.114.114")
requests.set_socket(socket, eth)
# 设置socket超时时间为5秒
socket.setdefaulttimeout(5)

uart = UART(0, rx=Pin(1), tx=Pin(0), baudrate=115200,rxbuf=512)
while True:
    # Wiznet5k请求逻辑
    print("Fetching json from", JSON_URL)
    r = requests.get(JSON_URL)
    print(r.json())
    r.close()
    gc.collect()
    print("Wiznet5k Done!")
    # ESP01请求逻辑
    time.sleep(1)
    gc.collect()
    uart.write("https://jsonplaceholder.typicode.com/todos/1\n")
    gc.collect()
    print(uart.read())
    print("ESP01 Done!")

额外验证步骤

如果以上修改完成后延迟仍然偏高,可按顺序验证:

  1. 检查W5500硬件接线,SPI的CS、CLK、MOSI、MISO引脚尽量不要有飞线过长的情况,避免信号干扰
  2. 测试直连PC主机搭建的本地HTTP服务,排除公网路由转发的影响
  3. 替换为最新版本的adafruit_wiznet5k驱动,旧版本驱动存在TCP收发逻辑冗余的已知问题

内容的提问来源于stack exchange,提问作者Tryingtogetsome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:57:00