-
有没有APM32F107RC以太网问题
开发板用的的是PD8、PD9、PD10复用引脚,我板子上用的是PA7、PC4、PC5不管怎么调就是不好使,确认PHY正常运行通过MDIO可以读取到PHY状态,以下是初始化代码:[color=#cccccc][backcolor=rgb(31, 31, 31)][font=Consolas, "][color=#569cd6]void[/color] [color=#dcdcaa]Ethernet_GPIOConfig[/color]([color=#569cd6]void[/color]) { [color=#4ec9b0]GPIO_Config_T[/color] [color=#9cdcfe]configStruct[/color]; [color=#6a9955] /*[/color] [color=#6a9955] * ETH_RESET# PB15[/color] [color=#6a9955] * ETH_INT PB14[/color] [color=#6a9955] * ETH_MDIO PA2[/color] [color=#6a9955] * ETH_MDC PC1[/color] [color=#6a9955] * ETH_MCO PA8[/color] [color=#6a9955] */[/color] [color=#6a9955] /* Enable GPIOs clocks */[/color] [color=#dcdcaa]RCM_EnableAPB2PeriphClock[/color]([color=#569cd6]ETH_MDC_GPIO_CLK[/color] [color=#d4d4d4]|[/color] [color=#569cd6]ETH_MDIO_GPIO_CLK[/color] [color=#d4d4d4]|[/color] [color=#569cd6]ETH_RESET_GPIO_CLK[/color] [color=#d4d4d4]|[/color] [color=#569cd6]ETH_INT_GPIO_CLK[/color] [color=#d4d4d4]|[/color] [color=#569cd6]ETH_MCO_GPIO_CLK[/color]); [color=#6a9955] /* Enable SYSCFG clock */[/color] [color=#dcdcaa]RCM_EnableAPB2PeriphClock[/color](RCM_APB2_PERIPH_AFIO); [color=#6a9955] /* Configure ETH_RESET# */[/color] [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] [color=#569cd6]ETH_INT_PIN[/color]; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]speed[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_SPEED_50MHz[/color]; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_OUT_PP[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]ETH_RESET_PORT[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /* Configure ETH_MII_INT */[/color] [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] [color=#569cd6]ETH_INT_PIN[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]ETH_INT_PORT[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#569cd6]ETH_INT_PIN_HIGH[/color](); [color=#6a9955] /* Configure ETH_MDC */[/color] [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] [color=#569cd6]ETH_MDC_PIN[/color]; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_AF_PP[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]ETH_MDC_PORT[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /* Configure ETH_MDIO */[/color] [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] [color=#569cd6]ETH_MDIO_PIN[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]ETH_MDIO_PORT[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /* RESET ETH PHY */[/color] [color=#569cd6]ETH_RESET_PIN_LOW[/color](); [color=#dcdcaa]Ethernet_ResetDelay[/color]([color=#569cd6]DP83848_RESET_DELAY[/color]); [color=#569cd6]ETH_RESET_PIN_HIGH[/color](); [color=#dcdcaa]Ethernet_ResetDelay[/color]([color=#569cd6]DP83848_RESET_DELAY[/color]); [color=#6a9955] /* Configure PB10 ,PB11 ,PB12 ,PB13 as alternate function push-pull */[/color] [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_11 [color=#d4d4d4]|[/color] GPIO_PIN_12 [color=#d4d4d4]|[/color] GPIO_PIN_13; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOB[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /*[/color] [color=#6a9955] * ETH_RMII_REF_CLK PA1[/color] [color=#6a9955] * ETH_RMII_CRS_DV PD8->PA7[/color] [color=#6a9955] * ETH_RMII_RXD0 PD9->PC4[/color] [color=#6a9955] * ETH_RMII_RXD1 PD10->PC5[/color] [color=#6a9955] * ETH_RMII_TX_EN PB11[/color] [color=#6a9955] * ETH_RMII_TXD0 PB12[/color] [color=#6a9955] * ETH_RMII_TXD1 PB13[/color] [color=#6a9955] */[/color] [color=#6a9955] /* Enable GPIOs clocks */[/color] [color=#dcdcaa]RCM_EnableAPB2PeriphClock[/color](RCM_APB2_PERIPH_GPIOA [color=#d4d4d4]|[/color] RCM_APB2_PERIPH_GPIOB [color=#d4d4d4]|[/color] RCM_APB2_PERIPH_GPIOC [color=#d4d4d4]|[/color] RCM_APB2_PERIPH_GPIOD); [color=#6a9955] /* ETHERNET pins remapp in APM32107-MINI board: RX_DV and RxD[3:0] */[/color] [color=#6a9955]//GPIO_ConfigPinRemap(GPIO_REMAP_ETH_MAC);[/color] [color=#6a9955] /* Configure PA1 and PA3 as input */[/color] [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_1; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_IN_FLOATING[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOA[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /* Configure PA7, PC4, PC5 as input */[/color] [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_7; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_IN_FLOATING[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOA[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_4; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_IN_FLOATING[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOC[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_5; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_IN_FLOATING[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOC[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#6a9955] /* ETH and CAN shared PB8, RMII Mode PB8 Must be output low */[/color] [color=#dcdcaa]GPIO_ConfigStructInit[/color]([color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]pin[/color] [color=#d4d4d4]=[/color] GPIO_PIN_8; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]mode[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_MODE_OUT_PP[/color]; [color=#9cdcfe]configStruct[/color].[color=#9cdcfe]speed[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]GPIO_SPEED_50MHz[/color]; [color=#dcdcaa]GPIO_Config[/color]([color=#569cd6]GPIOB[/color], [color=#d4d4d4]&[/color][color=#9cdcfe]configStruct[/color]); [color=#dcdcaa]GPIO_ResetBit[/color]([color=#569cd6]GPIOB[/color], GPIO_PIN_8); [color=#dcdcaa]GPIO_ConfigPinRemap[/color](GPIO_REMAP_MACEISEL_RMII); } [/font][/backcolor][/color]
597浏览量 2回复量 关注量