支持国产!以太网PHY芯片SR8201的GD32F450驱动

以太网PHY芯片SR8201的GD32F450驱动

一 :标题采用RMII模式,接线方式为:
SR8201F引脚号GD32F450
RXD09PC4
RXD110PC5
TXC15PA1
TXD016PB12
TXD117PB13
TXEN20PB11
MDC22PC1
MDIO23PA2
CRS26PA7
二 :TXC时钟信号

TXC引脚需要接入一个50M晶振提供时钟信号:
在这里插入图片描述
如果不想用这个晶振可以通过单片机输出时钟信号。需要以下改动
单片机的晶振换成25M。
使用单片机PA8输出时钟信号,接到PA1和TXC上。
在给出历程的"gd32f4xx_enet_eval.c"137行已经屏蔽。

    gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_8);
    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_8);
    /* enable SYSCFG clock */
    rcu_periph_clock_enable(RCU_SYSCFG);
三 :IP和端口号设置

IP在“main.h”中定义:

#define IP_ADDR0   192
#define IP_ADDR1   168
#define IP_ADDR2   1
#define IP_ADDR3   30

#define IP_S_ADDR0   192
#define IP_S_ADDR1   168
#define IP_S_ADDR2   1
#define IP_S_ADDR3   35

/* net mask */
#define NETMASK_ADDR0   255
#define NETMASK_ADDR1   255
#define NETMASK_ADDR2   255
#define NETMASK_ADDR3   0

/* gateway address */
#define GW_ADDR0   192
#define GW_ADDR1   168
#define GW_ADDR2   1
#define GW_ADDR3   1  

端口号在“tcp_client_init”函数中设置:

void tcp_client_init(void)
{
    struct tcp_pcb *pcb;
    struct ip_addr ipaddr;

    IP4_ADDR(&ipaddr, IP_S_ADDR0, IP_S_ADDR1, IP_S_ADDR2, IP_S_ADDR3);
  
    /* create a new TCP control block  */
    pcb = tcp_new();
		pcb_Free = pcb;
    /* assign to the new pcb a local IP address and a port number */
    /* using IP_ADDR_ANY allow the pcb to be used by any local interface */
    if(ERR_USE != tcp_bind(pcb, IP_ADDR_ANY, 8087)){
        /* Specify the function to be called when a connection is established */    
        tcp_connect(pcb, &ipaddr, 8087, tcp_client_connected);
    }else{
        printf("connect is still alive \r\n ");
        memp_free(MEMP_TCP_PCB, pcb);
    }
}
四 :程序和原理图

上传的程序和原理图需要审核,过两天贴出来。
原理图下载链接
源代码下载链接

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值