您好!
我一直在尝试将以太网闪存引导加载程序演示项目从 MSP432E401 Launchpad 移植到使用 MSP432E411的定制板、并通过 MII 总线连接外部 PHY。
我确信新电路板主要是正常工作的、因为我已将演示 TI RTOS 项目移植到其中、并让它执行 DHCP 设置。
由于 SDK 中提供的驱动程序似乎是硬编码以使用401内部 PHY、因此我不得不在中进行一行更改来重建库
C:\ti\simplelink_msp432e4_sdk_4_20_00_12_ext\source\ti\drivers\emac\EMACMSP432E4.c
#define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_EXTERNAL_MII)
这样、演示 RTOS 项目就投入使用了。
闪存引导加载程序项目似乎链接相同的库、但使用设置函数的本地版本。
bl_emac.c
空 EnetReconfig (uint32_t ui32Clock)
调用
LOCAL_EMAC0_BASE (EMAC_PHY_TYPE_内部| EMAC_PHY_INT_MDIX_EN | EMAC_PHY_AN_100B_T_FULL_DUPLEX);
而不是库版本 EMAPPHYConfigSet...
我更改了这与我更改库的方式相同-将第二个参数替换为(EMAC_PHY_TYPE_EXTERNAL_MII)
调试有点困难,因为本地版本使用 ROM 低级函数:(例如 ROM_EMACReset (EMAC0_BASE)、 ROM_SysCtlDelay (1000)))
它似乎没有从 ROM_EMACReset()返回。
将此调用交换为库函数- EMACReset (EMAC0_BASE);-我看到它设置 EMAC_O_DMABUSMOD 寄存器中的 EMAC_DMABUSMOD_SWR 位、然后等待该位清除、这种情况永远不会发生。
我假设 RTOS 项目已经完成了一些额外的配置步骤、引导加载程序项目中缺少这些步骤、允许 SWR 操作在选择外部 PHY 后完成。
我已经尝试比较了所有外设寄存器的状态(有很多!) 关键点、但我看不到任何看起来会影响这一点的差异。
如有任何建议,请提出。
谢谢