ST意法半导体
直播中

王超

8年用户 1399经验值
私信 关注
[问答]

请问STM32H750如何搭配88E6320使用?

STM32H750如何搭配88E6320來使用?

回帖(2)

华一颖

2025-3-13 16:23:52
这个也估计得靠你慢慢移植,主要就是PHY相关的软件、硬件的调整。


硬件方面,根据选用的ETHERNET接口,MII还是RMII,调整接口管脚和时钟电路。


如果使用PHY中断的话,注意PHY中断引脚的调整 及中断服务程序的适配。


配置PHY地址及做好相关寄存器的配置。


STM32H7系列库例程里的例程,你完全可以参考,重点关注ethernetif.c和lan8742.h文件。
举报

王斌

2025-3-17 18:05:27

将STM32H750与Marvell 88E6320以太网交换机芯片结合使用,通常用于实现复杂的网络通信功能(如多端口以太网交换、VLAN管理、QoS等)。以下是实现两者协同工作的关键步骤和注意事项:




1. 硬件连接


1.1 接口选择




  • 88E6320 接口



    • SMI (MDC/MDIO):用于STM32通过管理接口配置88E6320的寄存器。

    • RMII/MII/GMII:用于STM32与88E6320之间的数据通信(根据性能需求选择接口类型)。

    • 其他控制信号:如中断(INT)、复位(RST)等。




  • STM32H750 接口配置



    • 使用STM32H750的以太网外设(如ETH MAC)连接88E6320。

    • 推荐使用 RMII 接口以简化硬件设计(需确保STM32H750支持RMII模式)。




1.2 关键引脚连接




















































STM32H750 引脚 88E6320 引脚 功能说明
ETH_TXD0, ETH_TXD1 TXD0, TXD1 RMII发送数据线
ETH_RXD0, ETH_RXD1 RXD0, RXD1 RMII接收数据线
ETH_REF_CLK REF_CLK RMII参考时钟(50MHz)
ETH_CRS_DV CRS_DV 载波侦听/数据有效
ETH_MDC MDC SMI管理时钟
ETH_MDIO MDIO SMI管理数据
GPIO(自定义) RST_N 复位信号(低电平有效)
GPIO(自定义) INT_N 中断信号(可选)

1.3 时钟配置



  • RMII参考时钟:需提供50MHz时钟(可由STM32H750的ETH_REF_CLK输出或外部晶振提供)。

  • SMI时钟(MDC):由STM32H750的ETH_MDC引脚生成,典型频率为1-2.5MHz。


1.4 电源与去耦



  • 确保88E6320的电源(如1.2V、3.3V)和STM32H750电平兼容。

  • 在电源引脚附近添加去耦电容(如100nF + 10μF)。




2. 软件配置


2.1 STM32H750 以太网初始化




  1. 启用ETH外设时钟


    __HAL_RCC_ETH1MAC_CLK_ENABLE();  // 启用ETH MAC时钟
    __HAL_RCC_SYSCFG_CLK_ENABLE();   // 启用SYSCFG时钟(用于引脚复用)



  2. 配置GPIO复用功能


    // 示例:配置RMII引脚(具体引脚根据硬件设计调整)
    GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | ...;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);



  3. 初始化ETH MAC


    heth.Instance = ETH;
    heth.Init.MACAddr = (uint8_t *)MACAddr;  // 设置MAC地址
    heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
    HAL_ETH_Init(&heth);



  4. 配置DMA描述符



    • 实现以太网数据收发缓冲区,初始化TX/RX DMA描述符链。




2.2 88E6320 配置(通过SMI/MDIO)




  1. SMI读写函数实现




    • 使用STM32的HAL库或自定义函数通过MDIO接口读写88E6320寄存器:


      // 示例:写寄存器
      void MDIO_Write(uint8_t phyAddr, uint8_t regAddr, uint16_t data) {
      HAL_ETH_WritePHYRegister(&heth, phyAddr, regAddr, data);
      }

      // 示例:读寄存器
      uint16_t MDIO_Read(uint8_t phyAddr, uint8_t regAddr) {
      uint16_t data;
      HAL_ETH_ReadPHYRegister(&heth, phyAddr, regAddr, &data);
      return data;
      }





  2. 初始化88E6320



    • 配置交换机全局寄存器(如启用端口、设置VLAN、QoS策略等):
      // 示例:启用端口1
      MDIO_Write(0, 0x00, 0x1140);  // 假设phyAddr=0,具体地址需参考88E6320手册




  3. 中断处理(可选)



    • 配置88E6320的中断引脚,并在STM32中实现中断服务函数。






3. 典型应用场景



  • 多端口交换:将88E6320的多个端口连接到不同设备,STM32作为控制核心实现路由、VLAN隔离等功能。

  • 网络管理:通过STM32实现LLDP、SNMP等协议,动态管理交换机状态。

  • 工业通信:支持EtherCAT、Profinet等实时协议(需结合协议栈)。




4. 注意事项



  • PHY地址冲突:确保88E6320的SMI地址与其他PHY芯片不冲突。

  • 时序要求:MDIO/MDC信号需满足88E6320的时序要求(参考数据手册)。

  • PCB布局:RMII信号线需保持等长,避免信号反射。

  • 软件协议栈:若需TCP/IP协议,需集成如LWIP、FreeRTOS+TCP等协议栈。




5. 调试建议



  1. 使用逻辑分析仪检查MDIO/MDC信号,确认SMI通信是否正常。

  2. 通过寄存器读写验证88E6320的初始化流程。

  3. 使用Wireshark或类似工具抓包分析网络数据流。


如需更具体的代码或电路图示例,请提供详细的应用场景和硬件设计需求。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分