參考例程是基于GD32F450的,在移植過程中遇到一些容易忽略的地方,導致程序卡在gd32fxx_enet.c中enet_phy_config的位置。將GD32F450上的代碼全部移植到GD32F470平臺后,一直卡在卡在gd32fxx_enet.c中enet_phy_config,經過排查發現GD32的官方庫文件也需要修改,分別為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行位置添加如下內容:
#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,修改函數ErrStatus enet_init,修改內容如下圖所示
4,修改static void enet_default_init,修改內容如下圖所示:
修改以上內容后,程序可以正確運行:
-
芯片
+關注
關注
456文章
50936瀏覽量
424671 -
GD32
+關注
關注
7文章
404瀏覽量
24382 -
以太網芯片
+關注
關注
0文章
14瀏覽量
3387
發布評論請先 登錄
相關推薦
評論