Other Parts Discussed in Thread: DP83822H
主题中讨论的其他器件:DP83822H
您好!
处理器:F28M36P63C2ZWTS
PHY:DP83822H
软件引脚配置
PM0上的 MDIO 已设置为 GPIO_PIN_TYPE_OD
// // //为硬件适当设置 GPIO 端口控制寄存器。 // //此函数确定正确的端口控制设置,以便在 各自的引脚 上启用开发板的//基本外设信号//并确保正确路由所有必需的 EPI 信号。 // EPI 信号配置由子板信息// 通过\e psinfo 参数传递的结构确定。 //// ***************** 静态空 PortControlSet (void) { // //从开始,我们为所有非 EPI 设置端口控制值 //外设。 // //UART 设置 GPIOPinTypeUART (GPIO_Porte _BASE、GPIO_PIN_4 | GPIO_PIN_5); GPIOPinConfigure (GPIO_PE4_U0RX); GPIOPinConfigure (GPIO_PE5_U0TX); //SSI SD 卡设置 GPIOPinTypeSSI (SDC_GPIO_PORT_base、SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK); GPIOPinTypeGPIOOutput (SDCARD_CS_BASE、SDCARD_CS_PIN); GPIOPadConfigSet (SDC_GPIO_PORT_base、SDC_SSI_Pins、 GPIO_PIN_TYPE_STD_WPU); GPIOPadConfigSet (SDCARD_CS_BASE、SDCARD_CS_PIN、 GPIO_PIN_TYPE_STD_WPU); GPIOPinConfigure (GPIO_PR0_SSI3TX); GPIOPinConfigure (GPIO_PR1_SSI3RX); GPIOPinConfigure (GPIO_PR2_SSI3CLK); GPIOPinWrite (SDCARD_CS_BASE、SDCARD_CS_PIN、SDCARD_CS_PIN); // USB 引脚 GPIOPinConfigure (GPIO_PN6_USB0EPEN); GPIOPinConfigure (GPIO_PN7_USB0PFLT); GPIOPinTypeUSBDigital (GPIO_PORTN_BASE、GPIO_PIN_6 | GPIO_PIN_7); GPIOPinTypeUSBAnalog (GPIO_PORTF_BASE、GPIO_PIN_6); GPIOPinTypeUSBAnalog (GPIO_PORTG_base、GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6); //以太网引脚设置 GPIODirModeSet (GPIO_PORTK_base、 GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7、 GPIO_DIR_MODE_HW); GPIOPadConfigSet (GPIO_PORTK_base、 GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7、 GPIO_PIN_TYPE_STD); GPIOPinConfigure (GPIO_PK4_MIITXEN); GPIOPinConfigure (GPIO_PK5_MIITXCK); GPIOPinConfigure (GPIO_PK7_MICRS); GPIODirModeSet (GPIO_PORTL_BASE、 GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7、 GPIO_DIR_MODE_HW); GPIOPadConfigSet (GPIO_PORTL_BASE、 GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7、 GPIO_PIN_TYPE_STD); GPIOPinConfigure (GPIO_PL0_MIIRXD3); GPIOPinConfigure (GPIO_PL1_MIIRXD2); GPIOPinConfigure (GPIO_PL2_MIIRXD1); GPIOPinConfigure (GPIO_PL3_MIIRXD0); GPIOPinConfigure (GPIO_PL4_MIICOL); GPIOPinConfigure (GPIO_PL5_MIIPHYRSTN); GPIOPinConfigure (GPIO_PL6_MIIPHYINTRN); GPIOPinConfigure (GPIO_PL7_MIIMDC); GPIODirModeSet (GPIO_PORTM_BASE、 GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7、 GPIO_DIR_MODE_HW); GPIOPadConfigSet (GPIO_PORTM_BASE、 GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7、 GPIO_PIN_TYPE_STD); GPIOPadConfigSet (GPIO_PORTM_BASE、 GPIO_PIN_0、 GPIO_PIN_TYPE_OD); GPIOPinConfigure (GPIO_PM0_MIIMDIO); GPIOPinConfigure (GPIO_PM1_MIITXD3); GPIOPinConfigure (GPIO_PM2_MIITXD2); GPIOPinConfigure (GPIO_PM3_MIITXD1); GPIOPinConfigure (GPIO_PM4_MIITXD0); GPIOPinConfigure (GPIO_PM5_MIIRXDV); GPIOPinConfigure (GPIO_PM6_MIIRXER); GPIOPinConfigure (GPIO_PM7_MIIRXCK); } //*************** // //! 为开发板配置器件引脚排列。 //! //! 此函数将器件的每个引脚配置为将! 合适 //! 开发板设计所需的外设信号。 //! //! 注意此模块可以通过两种方式构建。 如果标签 simple_pinout_set //! 未定义,PinoutSet()函数将尝试读取 I2C EEPROM //! 要确定哪个子板连接到开发套件板 //! 并使用该 EEPROM 中的信息来动态配置 EPI //! 正确。 在这种情况下、如果未找到 EEPROM、EPI 配置 //! 将默认为使用 SDRAM 子板所需的值 、即//! 包含在基本开发套件中。 //! //! 但是、如果定义了 simple_pinout_set、则所有动态配置 //! 代码被一个非常简单的函数取代、该函数仅设置引脚// ! 和 EPI 配置。 这更好地表示了 a //! 实际应用可能会初始化引脚分配和 EPI 时序 //! 并且所需的代码空间明显小于动态子板 //! 检测版本。 此处提供的示例设置了引脚分配和 EPI //! 和 LCD 子板进行适当配置。 //! //! \无返回。 //// ***************** void PinoutSet (void) { // //启用所有 GPIO 组。 // SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM); SysCtlPeripheralEnable (SYSCTL_Periph_GPION); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOR); SysCtlPeripheralEnable (SYSCTL_Periph_GPIO); // //确定启用 EPI 管脚所需的端口控制设置 //以及该子板的其他外设信号并设置所有 // GPIO 端口控制寄存器。 // PortControlSet(); }
原理图设置如下:
目标是使用 lwip。 使用 Saleae 逻辑分析仪、我发现 MDIO 模拟读数存在争用、消息数据部分的信号无法驱动高电平。 我们认为这是一个配置问题、但不确定它是处理器还是 PHY 的配置问题。 R275组装在 MDIO 线路上、具有一个2.2k 电阻器。
为了进一步了解、lwip 示例已用作基础、上面所述的引脚配置和 UART 设置是对软件的唯一修改。
C:\ti\controlSUITE\device_support\f28m36x\v220\F28M36x_examples_Master\enet_lwip\m3\ccs
使用路由器进行测试:路由器有线端口<--以太网电缆-->板
预期是板 ETh 端口 LED 将响应、路由器 LED 将响应。 作为额外的检查、以太网电缆连接到笔记本电脑而不是板、并且路由器和笔记本电脑上的 LED 都亮起。
我们认为这种争用被视为问题、不确定它是在处理器上还是在 PHY 端设置问题上? 请告诉我是否有任何其他信息有助于确认设置。


