STM32H743以太网RMII调试问题及解决方法汇总

本文详细记录了STM32H743在以太网RMII模式下遇到的四个关键问题:发送数据不出、对方接收不到、DMA接收中断失效和DMA中断频繁。通过对IP179芯片的了解和寄存器的调试,总结了解决方案,包括初始化顺序、Target IRAM2设置、中断处理等要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题STM32H743以太网RMII调试问题及解决方法汇总

了解IP179芯片

我使用IP179的此应用形式,是8 port+1 RMII,其中RMII和MCU是通过MAC通信的,PHY1不能使用。
在这里插入图片描述
应用形式对应的接线关系如下。
在这里插入图片描述
调试过程中发现743可以发送出数据,但对方收不到,且监听广播包也没有743发送的包,技术支持说硬件的TEST1\0管脚不要接地,悬空即可。修改硬件后可以监听到743的广播包,原因未知。
在这里插入图片描述

问题1:通过发送描述符DESC0查询DMA发送缓存地址的数据,数据正常,但发送不出去。

解决:debug底层HAL_ETH_Transmit()函数发现等待DMA发送timeout了,查STM32H743 DMA 的DMADSR debug状态寄存器,发现DMA发送停止工作,接收描述符挂起。调试HAL_ETH_Start_IT()发现返回BUSY错误,导致DMA并未使能收发。这是由于IP179未初始化就进了HAL_ETH_Start_IT()函数,需要先将IP179初始化再通过HAL_ETH_Start_IT()函数启动以太网数据传输。
注意:IP179初始化函数被调用的位置最好和开发板例程相同,否则也会出现问题1,这是因为初始化顺序被打乱,会影响各寄存器配置。

### 配置STM32H743使用STM32CubeMX实现RMII模式下的以太网功能 #### 1. 芯片选择与基础配置 在STM32CubeMX中,首先需要选择目标芯片型号为STM32H743ZIT6。完成芯片选择后,进入Pinout & Configuration界面进行基本外设配置。通常的基础配置包括RCC、SYS以及系统时钟设置[^1]。 #### 2. RMII接口的ETH配置 为了启用RMII模式,在Connectivity标签下找到并打开ETH选项。在此处需确认接口类型被设定为RMII模式,因为当前开发环境中的硬件设计基于RMII方式连接外部PHY芯片[^2]。对于具体的引脚分配,确保GPIO端口已正确映射到RMII所需的信号线上,例如TX_EN、TXD0、TXD1、RXD0和RXD1等引脚[^3]。 #### 3. 实时操作系统与网络协议栈的支持 继续在Middleware部分激活FreeRTOS和LWIP组件。这一步骤是为了提供更高级别的软件框架支持,从而简化应用层编程工作量,并增强系统的稳定性和可扩展性[^4]。同时也可以根据项目需求调整相应的TCP/IP堆栈参数。 #### 4. USART调试输出设置 为了让开发者能够在终端窗口查看运行状态或者错误信息,建议开启至少一路USART用于打印日志消息。这样可以方便后续问题排查过程中的数据分析。 #### 5. 自动生成初始化代码 当所有必要的硬件资源及其关联中间件都被适当配置完毕之后,切换至Project Manager页面填写好工程名称路径等相关细节,最后点击“Generate Code”按钮让工具自动生成初步版本源文件供进一步编辑完善之用。 #### 6. 修改生成代码以适应具体应用场景 尽管STM32CubeMX提供了大量自动化处理能力来减少手动编码负担,但在某些情况下仍可能需要对特定函数做额外定制化改动。比如针对所使用的PHY芯片(DP8384或KSZ8863),应当加入其特有的复位序列及相关寄存器操作逻辑以便于成功建立物理链路连通性。 ```c // Example of PHY reset function that may need to be added into the project. void ETH_PHY_Reset(void){ HAL_GPIO_WritePin(PHY_RESET_PORT, PHY_RESET_PIN, GPIO_PIN_RESET); HAL_Delay(1); // Ensure enough time for reset signal assertion HAL_GPIO_WritePin(PHY_RESET_PORT, PHY_RESET_PIN, GPIO_PIN_SET); } ``` 上述示例展示了如何编写一个简单的PHY重置程序片段,实际应用当中还需要依据数据手册指导补充更多细节内容。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值