STM32H743 以太网配置问题

STM32H743 以太网配置为RMII接口时,调用HAL_ETH_Init(ETH_HandleTypeDef *heth)函数能正常返回。

如果改成:MII接口后,调用HAL_ETH_Init函数就会返回错误。仿真确定是软件复位超时。
并且,在其他什么都不变的情况下,我只需要将heth.Init.MediaInterface = HAL_ETH_MII_MODE;修改为heth.Init.MediaInterface = HAL_ETH_RMII_MODE;就不错返回错误。

/* Wait for software reset */
  while (READ_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR) > 0U)
  {
    if (((HAL_GetTick() - tickstart) > ETH_SWRESET_TIMEOUT))
    {
      /* Set Error Code */
      heth->ErrorCode = HAL_ETH_ERROR_TIMEOUT;
      /* Set State as Error */
      heth->gState = HAL_ETH_STATE_ERROR;
      /* Return Error */
      return HAL_ERROR;
    }
  }

请问有没有大佬知道是怎么回事?

### STM32H743以太网数据包传输速率性能 STM32H743系列微控制器集成了一个全双工10/100 Mbps快速以太网MAC (Media Access Control),这使得设备能够支持高速网络通信[^1]。该芯片内置DMA引擎,可以显著提高数据传输效率并减少CPU负载。 具体到实际的数据包发送速度或性能方面: - **理论最大吞吐量**: 在理想条件下,即无任何外部干扰和延迟的情况下,STM32H743可以通过其集成的快速以太网接口实现最高达100 Mbps的传输速率。 - **实际应用中的表现**: 实际应用场景下的传输速率会受到多种因素的影响,包括但不限于PHY层的质量、链路质量、协议栈开销以及应用程序本身的复杂度等。通常情况下,在正常工作环境下,STM32H743应该能够在大多数时间内接近甚至达到上述理论值。 为了验证具体的性能指标,建议开发者利用官方提供的库函数来编写测试程序,并通过抓包工具如Wireshark来进行分析。下面是一个简单的C语言代码片段用于初始化以太网外设并准备发送数据包: ```c #include "stm32h7xx_hal.h" ETH_HandleTypeDef heth; void MX_ETH_Init(void){ /* Initialize the Ethernet HAL Library */ __HAL_RCC_ETH_CLK_ENABLE(); heth.Instance = ETH; heth.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE; heth.Init.PhyAddress = 0x01U; // Default PHY address on most boards. heth.Init.MACAddr[0] = 0x00; heth.Init.MACAddr[1] = 0x80; heth.Init.MACAddr[2] = 0xE1; heth.Init.MACAddr[3] = 0x00; heth.Init.MACAddr[4] = 0x00; heth.Init.MACAddr[5] = 0x00; if(HAL_ETH_Init(&heth) != HAL_OK){ Error_Handler(); } } ``` 此段代码展示了如何配置以太网硬件抽象层(HAL),以便后续调用API完成更复杂的操作,比如构建帧结构体并通过`HAL_ETH_TransmitFrame()` API 发送出去。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值