标题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,这是因为初始化顺序被打乱,会影响各寄存器配置。