GD32F20x官方以太网例程勘误
硬件资源
- 主控:STM32F207
- PHY: RTL8201F
- 总线:MII
参考例程
- 固件库:GD32F20x_Firmware_Library_V2.2.1
- 开发板固件:GD32F20x_Demo_Suites_V2.2.1
勘误
GPIO配置中,ETH_MII_RXD2 和 ETH_MII_RXD3引脚配置错误,应改为浮空输入模式。错误代码,会导致PHY可读写,MII总线有数据波形,但MAC不能收到正确的帧。
正确的代码如下:
static void enet_gpio_config(void)
{rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_GPIOC);gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);/* enable SYSCFG clock */rcu_periph_clock_enable(RCU_AF);#ifdef MII_MODE #ifdef PHY_CLOCK_MCO/* output HXTAL clock (25MHz) on CKOUT0 pin(PA8) to clock the PHY */rcu_ckout0_config(RCU_CKOUT0SRC_HXTAL,RCU_CKOUT0_DIV1);
#endif /* PHY_CLOCK_MCO */gpio_ethernet_phy_select(GPIO_ENET_PHY_MII);#elif defined RMII_MODErcu_pll2_config(RCU_PLL2_MUL10);rcu_osci_on(RCU_PLL2_CK);rcu_osci_stab_wait(RCU_PLL2_CK);/* get 50MHz from CK_PLL2 on CKOUT0 pin (PA8) to clock the PHY */rcu_ckout0_config(RCU_CKOUT0SRC_CKPLL2,RCU_CKOUT0_DIV1);gpio_ethernet_phy_select(GPIO_ENET_PHY_RMII);#endif#ifdef MII_MODE/* PA0: ETH_MII_CRS */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0);/* PA1: ETH_RX_CLK */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_1);/* PA2: ETH_MDIO */gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);/* PA3: ETH_MII_COL */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3); /* PA7: ETH_MII_RX_DV */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_7);/* PC1: ETH_MDC */gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1); /* PC2: ETH_MII_TXD2 */ gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);/* PC3: ETH_MII_TX_CLK */ gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3);/* PC4: ETH_MII_RXD0 */ gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_4);/* PC5: ETH_MII_RXD1 */ gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_5);/* PB0: ETH_MII_RXD2 */gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0);/* PB1: ETH_MII_RXD3 */ gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_1);/* PB8: ETH_MII_TXD3 */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);/* PB10: ETH_MII_RX_ER */ gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);/* PB11: ETH_MII_TX_EN */ gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);/* PB12: ETH_MII_TXD0 */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);/* PB13: ETH_MII_TXD1 */ gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);#elif defined RMII_MODE/* PA1: ETH_RMII_REF_CLK */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_1);/* PA2: ETH_MDIO */ gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);/* PA7: ETH_RMII_CRS_DV */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_7);/* PC1: ETH_MDC */gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);/* PC4: ETH_RMII_RXD0 */ gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_4);/* PC5: ETH_RMII_RXD1 */ gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_5);/* PB11: ETH_RMII_TX_EN */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);/* PB12: ETH_RMII_TXD0 */ gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);/* PB13: ETH_RMII_TXD1 */ gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13); #endif /* MII_MODE */}
GD32F20x官方以太网例程勘误相关推荐
- zw版_zw中文增强版Halcon官方Delphi例程
[<zw版·delphi与halcon系列原创教程> zw版_zw中文增强版Halcon官方Delphi例程 源码下载:http://files.cnblogs.com/files/ziw ...
- 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上
原程序是运行在小梅哥AC620开发板上的:基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程_ZLK1214的专栏-CSDN博客_小梅哥ac620[开发板]开发板型号:小梅哥AC620 ...
- 以太网例程_开关量转以太网的应用
由于工业以太网的快速冗余自愈能力以及实时性方面问题的逐步解决,工业以太网技术正在逐步深入至工业控制网络的现场设备层应用,即直接基于工业以太网通信来控制现场设备的运行,利用开关量控制模块提供的以太网转开 ...
- 野火STM32f7例程SD卡的SDMMC-FatFs例程勘误
由于我使用的开发板是STM32f7 V1的开发板,在跑V2的例程的时候,SD卡读写的例程出错, 提示: 开始进行SD卡读写实验 [10:59:41.181]收←◆SD卡初始化失败,请确保SD卡已正确接 ...
- 基于米联客MA703FA开发板的MicroBlaze LWIP千兆以太网例程
Xilinx FPGA MicroBlaze使用AXI 1G/2.5G Ethernet Subsystem(= Tri Mode Ethernet MAC + AXI Ethernet Buffer ...
- M-Arch(番外8)GD32L233评测-ADC和DMA(官方没有例程哦)
前言 开工第一天,今天是DMA方式的ADC采样. 什么是ADC? ADC即模拟数字转换器,ADC的精度一般用位来表示,位数越多,表示相同模拟量范围内的采样点数越多,那么相应的精度就越高. 比如:12位 ...
- ST NXP Infineon 常用MCU的汇总说明
文章目录 ST NXP Infineon 主要是 ST, NXP, Infineon 的芯片: 基本都有免费的IDE 图形化的配置, 生成初始化代码 便宜的调试工具(RMB几十 ~几百) 都有移植好的 ...
- Stm32F4以太网远程固件升级BootLoader踩过官方的坑
历时5个工作日,总算把以太网远程远程固件升级功能完成,期间踩了不少的坑.最初设计的时候参照stm32官方1.26.1标准固件HAL库,新建一个工程,把官方对应的驱动移植到新的工程底下. 因为使用以太网 ...
- STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程:收发同时进行】
1:平台 STM32F413 + GD5F4(spi nand flash)(没开启DMA中断,读写操作NAND 都是单片机发起,所以知道什么时候读,什么时候写) 2: 问题(STM32 SPI+DM ...
最新文章
- android 调用百度sdk点位当前城市
- SED单行脚本快速参考(Unix流编辑器)
- matlab 常用数学函数
- AnkhSVN 1.0.2778 简体中文版发布
- mormot json操作
- Word2016怎么和mathtype兼容
- 返回上一视图,凸显一个视图,其他视图变模糊
- Proteus与emu8086实现流水灯联调
- 马哥linux架构班笔记,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- python自动聊天机器人_Python实现微信聊天机器人
- python矢量图_使用python制作矢量图
- 基于ESP8266 HX711 克级单位称重式压力传感器(接入阿里云物联网平台)—— 看到有点意思,所以我也照着做了一个
- java地铁最短距离_地铁最短路径需求分析
- 启动root用户 银河麒麟_银河麒麟V10启用VNCServer
- Dedecms 前端RCE分析
- input-group两侧添加额外元素
- Chrome谷歌浏览器插件的本地存放位置
- nkoj 中山纪念中学 trie
- SpringBoot 之 PDF大文件分片加载(后端)
- 排除 CloudFront 502 ERROR The request could not be satisfied 问题