參考例程是基于GD32F450的,在移植過(guò)程中遇到一些容易忽略的地方,導(dǎo)致程序卡在gd32fxx_enet.c中enet_phy_config的位置。將GD32F450上的代碼全部移植到GD32F470平臺(tái)后,一直卡在卡在gd32fxx_enet.c中enet_phy_config,經(jīng)過(guò)排查發(fā)現(xiàn)GD32的官方庫(kù)文件也需要修改,分別為gd32f4xx_enet.h和gd32f4xx_enet.c。
需要修改的地方如下:
1,如下添加宏定義:
#ifndef _PHY_H_#define DP83848 0#define LAN8700 1#define SR8201F 2#define PHY_TYPE SR8201F
#define PHY_ADDRESS ((uint16_t)0x3U) /*!< phy address determined by the hardware */
2,在頭文件88行位置添加如下內(nèi)容:
#if(PHY_TYPE == LAN8700) #define PHY_SR 31U /*!< tranceiver status register */#define PHY_SPEED_STATUS ((uint16_t)0x0004) /*!< configured information of speed: 10Mbit/s */#define PHY_DUPLEX_STATUS ((uint16_t)0x0010) /*!< configured information of duplex: full-duplex */#elif(PHY_TYPE == DP83848)#define PHY_SR 16U /*!< tranceiver status register */#define PHY_SPEED_STATUS ((uint16_t)0x0002) /*!< configured information of speed: 10Mbit/s */#define PHY_DUPLEX_STATUS ((uint16_t)0x0004) /*!< configured information of duplex: full-duplex */#elif(PHY_TYPE == SR8201F)#define PHY_SR PHY_REG_BCR /*!< tranceiver status register */#define PHY_SPEED_STATUS ((uint16_t)0x2000) /*!< configured information of speed: 10Mbit/s */#define PHY_DUPLEX_STATUS ((uint16_t)0x0100) /*!< configured information of duplex: full-duplex */#endif /* PHY_TYPE */
3,修改函數(shù)ErrStatus enet_init,修改內(nèi)容如下圖所示
4,修改static void enet_default_init,修改內(nèi)容如下圖所示:
修改以上內(nèi)容后,程序可以正確運(yùn)行:
-
芯片
+關(guān)注
關(guān)注
459文章
52169瀏覽量
436108 -
GD32
+關(guān)注
關(guān)注
7文章
418瀏覽量
25152 -
以太網(wǎng)芯片
+關(guān)注
關(guān)注
0文章
17瀏覽量
3581
發(fā)布評(píng)論請(qǐng)先 登錄
GD32芯片包添加步驟有哪些
GD32F系列單片機(jī)開發(fā)總結(jié)(二):GD32芯片包添加步驟

Wiznet以太網(wǎng)芯片設(shè)計(jì)指南

評(píng)論