电子产业一站式赋能平台

PCB联盟网

搜索
查看: 90|回复: 0
收起左侧

国产芯片GD32与国产以太网芯片的坑

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2024-1-15 21:02:00 | 显示全部楼层 |阅读模式

jzgpgmtvfz564087473522.png

jzgpgmtvfz564087473522.png

; f) p/ i% i5 H+ C
% P4 _. I3 J, [# m  I/ O9 a- K由于有国产化要求,需要将以太网及主控芯片全部换成国产,参考例程是基于GD32F450的,在移植过程中遇到一些容易忽略的地方,导致程序卡在gd32fxx_enet.c中enet_phy_config的位置。将GD32F450上的代码全部移植到GD32F470平台后,一直卡在卡在gd32fxx_enet.c中enet_phy_config,经过排查发现GD32的官方库文件也需要修改,分别为gd32f4xx_enet.h和gd32f4xx_enet.c。( h$ F( H+ D6 j! P7 h  j4 K" U
需要修改的地方如下:. w3 I9 Q. i. r) Q2 J
1,如下添加宏定义:
  • #ifndef _PHY_H_#define DP83848                          0#define LAN8700                          1#define SR8201F                          2#define PHY_TYPE                         SR8201F
    & o/ a1 H2 H: f+ i- e5 B: V) n4 \3 V#define PHY_ADDRESS                      ((uint16_t)0x3U)                         /*!5 L* Z. h0 Y: B
    2,在头文件88行位置添加如下内容:9 {, p) K' D6 i+ n& N1 U( [! a
  • #if(PHY_TYPE == LAN8700) #define PHY_SR                           31U                                    /*!#define PHY_SPEED_STATUS                 ((uint16_t)0x0004)                     /*!#define PHY_DUPLEX_STATUS                ((uint16_t)0x0010)                     /*!#elif(PHY_TYPE == DP83848)#define PHY_SR                           16U                                    /*!#define PHY_SPEED_STATUS                 ((uint16_t)0x0002)                     /*!#define PHY_DUPLEX_STATUS                ((uint16_t)0x0004)                     /*!#elif(PHY_TYPE == SR8201F)#define PHY_SR                           PHY_REG_BCR                            /*!#define PHY_SPEED_STATUS                 ((uint16_t)0x2000)                     /*!#define PHY_DUPLEX_STATUS                ((uint16_t)0x0100)                     /*!#endif /* PHY_TYPE */
    ' R- g( O, R. ?3,修改函数ErrStatus enet_init,修改内容如下图所示& ~3 X/ m, b* Y! o# x

    bdwd53xtjhd64087473622.png

    bdwd53xtjhd64087473622.png

    5 p5 e/ I% |: S! e2 P/ n; F+ v* a; _  Z8 [! J' u9 S
    4,修改static void enet_default_init,修改内容如下图所示:7 }: b8 i* `& ]' s$ g4 y1 f: Y8 g

    pj4brcc00er64087473722.png

    pj4brcc00er64087473722.png

    # Y6 j+ o  _' ~$ x" m; k, d0 U# \$ u+ B$ \1 G# r/ U: b
    修改以上内容后,程序可以正确运行:
    ( i7 g& d+ W! t( H, K

    pddyblwvxz364087473822.png

    pddyblwvxz364087473822.png
    ; n# {# w' O4 l) D) J9 G
    ==========
    - b& d$ Z6 o/ k0 F2 b& O往期回顾:【蓝桥杯更新通知】
    ' W1 E9 @& Y6 W) X! R传输距离达到1500米的485电路
    2 h" L( z! o; T) S! I) t结构体与指针的关系- g  y$ P! X0 [% _
    琢磨了一天的CAN协议" t+ A8 j( z- U
    什么是Modbus协议?7 \! i2 L& s( |$ `
    ============作者:探索者515平台:CSDN链接:
    4 k5 |6 i9 R; M- E) x: I2 z" B. ]" q

    iojdpu1he5564087473922.png

    iojdpu1he5564087473922.png
    : }( J9 w( w& ]4 A* {) {, X# l

    1 T6 @% @% j8 R6 F3 P5 {" u- M

    e3jvjul2a5l64087474023.png

    e3jvjul2a5l64087474023.png

    9 L; W! f' w9 f: i4 F7 A; d" ?; H! |! Q# u: S7 G( Z

    why23zcsnyp64087474123.png

    why23zcsnyp64087474123.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表