打印
[研电赛技术支持]

将STM32F4系列的以太网例程移植到GD32F407

[复制链接]
925|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-10-12 12:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、修改时钟频率和晶振、PLL参数配置
1.1、晶振
GD32F407VG芯片中选用的是外部高速晶体振荡器时钟(HXTAL)频率为25MHz;

可在GD32例程中的 "gd32f4xx.h" 文件查看:



在STM32F4例程中所对应的是 "HSE_VALUE" 需要将其频率改成25MHz;

同时需要将启动时间 "HSE_STARTUP_TIMEOUT" 也需修改为最大值0XFFF;

解释(搜的资料):由于GD32F3的外部晶体起振时间会比 STM32F10x 系列要长,所以原有的晶体超时时间需要加大。

可在STM32例程中的 "stm32f4xx.h" 文件修改:



1.2、时钟频率
系统时钟频率是168MHz或200MHz都可以,本次使用的是例程中的168MHz(未修改);

可在GD32例程中的 "system_gd32f4xx.c" 文件的宏定义中查看:



若是需要修改,可就将变量名 "SystemCoreClock" 的值改为200000000 ;

可在STM32例程中 "system_stm32f4xx.c" 文件中修改:



1.3、配置PLL参数
最后还需要配置PLL参数:由于STM32例程中使用的晶振是8MHz, 在GD32中使用的是25MHz;

可在GD32例程中的 "system_gd32f4xx.c" 文件 static void system_clock_200m_25m_hxtal(void)函数中查看:



相应的在STM32例程中 "system_stm32f4xx.c" 文件中修改:将 "PLL_M" 改为25



二、管脚配置
在GD32中以太网模块使用的引脚是:

PA1 --------> ETH_RMII_REF_CLK
PA2 --------> ETH_MDIO
PA7 --------> ETH_RMII_CRS_DV

PB11 -------> ETH_RMII_TX_EN
PG13 -------> ETH_RMII_TXD0
PG14 -------> ETH_RMII_TXD1

PC1 --------> ETH_MDC
PC4 --------> ETH_RMII_RXD0
PC5 --------> ETH_RMII_RXD1

PC0 --------> ETH_RESET
而在STM32例程中使用管脚有四个不一样休要修改(仅是关于以太网模块相关的管脚),

"ETH_RMII_TX_EN","ETH_RMII_TXD0","ETH_RMII_TXD1" ,"ETH_RESET";

在STM32例程中 "stm32f4x7_eth_bsp.c" 文件中的 "ETH_GPIO_Config(void)" 函数里修改:



该处修改很重要,忘记修改的话,关于软件复位的地方为一直失败;

GD32中会在该地方一直复位失败:



STM32中会在该地方一直复位失败:



在函数中将使用的管脚改为PC0;





三、修改PHY寄存器 (我也不知道干啥用的)
根据使用的芯片类型选择,本次使用的PHY芯片是YT8512;

PHY芯片地址 "PHY_ADDRESS" 也是需要根据实际情况修改成0 或 1;

在GD32例程中 "gd32f4xx_enet.h" 文件中:



在STM32例程中 "stm32f4x7_eth_bsp.h" 文件中修改:"PHY_ADDRESS"值为 0;



   同时也需要修改这三个值:"PHY_SR"  ,"PHY_SPEED_STATUS" ,"PHY_DUPLEX_STATUS"



在STM32例程中 "stm32f4x7_eth_conf.h" 文件中修改:将以上三个值改为下图中的值;

"PHY_SR"值是十六进制数格式;



最后可在各自例程中的main.h 文件中修改想要的IP地址:



结果:



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/c12683/article/details/142261673

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1931

主题

15611

帖子

11

粉丝