历史上的今天
返回首页

历史上的今天

今天是:2025年04月22日(星期二)

正在发生

2018年04月22日 | STM32CubeMx下LWIP教程(一)-PHY硬件层搭建

2018-04-22 来源:eefocus

关于LWIP的PHY搭建,采用的PHY芯片为LAN8720A,RMII模式。 
关于硬件连接部分采用的是原子的板子F407,硬件连接如下: 
这里写图片描述 
注意:LAN8720A 可以通过 PHYAD0 引脚来配置,该引脚与 RXER 引脚复用,芯片内部自带下拉电阻,当硬复位结束后, LAN8720A 会读取该引脚电平,作为器件的 SMI 地址,接下拉电阻时(浮空也可以,因为芯片内部自带了下拉电阻),设置 SMI 地址为 0,当外接上拉电阻后,可以设置为 1。本硬件RXER引脚浮空,其PHY芯片地址为0

关于SMT32CubeMx引脚时钟等配置根据实际情况配置即可,不在此进行赘述; 
点开ETH配置中的Parameter Setting选项卡,配置如下: 
这里写图片描述 
在这个选项卡中,只需按照实际填写PHY地址即可,我用的PHY芯片地址为0,在此输入0即可; 
点开ETH配置中的Advanced Parameters选项卡,选择如下: 
这里写图片描述 
由于STM32CubeMx系统默认的是,LAN8742A,因此我们选择user PHY配置LAN8720A; 
其配置如下: 
这里写图片描述 
关于PHY芯片的配置项不多,多数采用默认参数即可,需要更改的已用红线标示如来: 
PHY Address Value:就是我们在之前设置的PHY芯片地址; 
PHY Name:这个仅是一个标志符,可以随便设置,在这里我设置的是LAN8720; 
PHY Special Control/Status Register Offset:可以根据芯片手册查到,如下: 
这里写图片描述 
注意:该寄存器的地址是十进制的31 
同样的,关于PHY Speed mask和PHY Duplex mask寄存器的设置如下: 
这里写图片描述 
其中Bits4:2就包含了PHY Speed mask和PHY Duplex mask的掩码, 
Bits2代表两种速度10MB/s和100MB/s;PHY Speed mask(0x0004) 
Bits4代表两种工作方式半双工和全双工;PHY Duplex mask(0x0010)

然后开启ETH的中断即可,采用默认优先级即可;

LWIP配置如下: 
这里写图片描述 
其余保持默认即可

最后在生成的代码中,ETH硬件初始化部分加入对PHY硬件复位的代码:(注意:因为硬件设计,才在此处加入此代码,根据实际情况添加) 
这里写图片描述

添加如下代码:

/* Includes ------------------------------------------------------------------*/

#include "main.h"

#include "stm32f4xx_hal.h"

#include "lwip.h"

#include "gpio.h"


/* USER CODE BEGIN Includes */

#include "tcp.h"

#include "stats.h"

/* USER CODE END Includes */


static struct tcp_pcb *tcp_echoserver_pcb;


void tcp_echoserver_init(void);

static err_t tcp_echoserver_accept(void *arg,struct tcp_pcb *newpcb,err_t err);

static err_t tcp_echoserver_recv(void *arg,struct tcp_pcb *tpcb,struct pbuf *p,err_t err);


void tcp_echoserver_init(void)

{

    err_t err;


    tcp_echoserver_pcb=tcp_new();


    if(tcp_echoserver_pcb!=NULL)

    {

        err=tcp_bind(tcp_echoserver_pcb,IP_ADDR_ANY,7);


        if(err==ERR_OK)

        {

            tcp_echoserver_pcb=tcp_listen(tcp_echoserver_pcb);

            tcp_accept(tcp_echoserver_pcb,tcp_echoserver_accept);

        }


        else

        {

            memp_free(MEMP_TCP_PCB,tcp_echoserver_pcb);

        }

    }

}


static err_t tcp_echoserver_accept(void *arg,struct tcp_pcb *newpcb,err_t err)

{

    tcp_recv(newpcb,tcp_echoserver_recv);


    return ERR_OK;

}


static err_t tcp_echoserver_recv(void *arg,struct tcp_pcb *tpcb,struct pbuf *p,err_t err)

{

    tcp_write(tpcb,p->payload,p->len,1);

    pbuf_free(p);


    return ERR_OK;

}

/* USER CODE END 0 */


int main(void)

{


  /* USER CODE BEGIN 1 */


  /* USER CODE END 1 */


  /* MCU Configuration----------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */


  /* USER CODE END Init */


  /* Configure the system clock */

  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_LWIP_Init();


  /* USER CODE BEGIN 2 */

    tcp_echoserver_init();

  /* USER CODE END 2 */


  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

  /* USER CODE END WHILE */


  /* USER CODE BEGIN 3 */

    MX_LWIP_Process();

  }

  /* USER CODE END 3 */


}

将程序下载至目标板,连接网线至电脑; 
更改电脑IPV4的属性如下: 
这里写图片描述 
最后使用命令行ping目标板,如下: 
这里写图片描述 
至此就完成了PHY芯片的测试,LWIP正常工作;

写在后面的话,关于其他PHY芯片的配置于此类似,但需注意各个芯片寄存器地址的差异;


推荐阅读

史海拾趣

Excel-Display Corporation公司的发展小趣事

随着市场竞争的加剧,EDC意识到只有不断创新才能在行业中立于不败之地。因此,公司加大了对新技术、新产品的研发投入。

经过数年的努力,EDC成功研发出了一种新型的显示技术,该技术在色彩还原、对比度等方面都达到了行业领先水平。这一技术的推出,不仅让EDC的产品在市场上获得了更高的认可度,也引领了整个行业的发展潮流。

ConnectBlue公司的发展小趣事

2014年5月19日,ConnectBlue公司被全球领先的定位与无线通信技术公司u-blox收购。这一收购为ConnectBlue公司带来了新的发展机遇和更广阔的市场空间。在u-blox的支持下,ConnectBlue公司得以进一步加大研发投入,拓展产品线,提升产品品质和服务水平。同时,公司还借助u-blox的全球销售网络和品牌影响力,进一步开拓国际市场,实现了新的跨越式发展。

Fastron公司的发展小趣事

Fastron公司非常重视与客户的合作关系。公司始终坚持以客户为中心的服务理念,为客户提供优质的产品和服务。Fastron不仅关注客户的需求和反馈,还积极与客户沟通合作,共同推动产品的升级和优化。这种紧密的合作关系使得Fastron与客户之间建立了长期稳定的信任关系,为公司的持续发展提供了有力保障。

Franz Binder GmbH & Co公司的发展小趣事

Fastron公司起源于XXXX年的德国,凭借其卓越的技术和产品质量,逐渐在电感器领域崭露头角。随着业务的发展,Fastron不仅保留了德国的精湛工艺和严格品质控制,还成功地将业务拓展到了东欧和东南亚。这些地区的生产设施均通过TS 16949和ISO 14001认证,确保了产品的全球统一品质。

绿索超容(GreenSource)公司的发展小趣事

Fastron公司一直将技术创新作为企业发展的核心动力。自创立以来,公司不断投入研发资源,致力于电感器技术的创新。Fastron生产的符合RoHS标准的高质量电感器和线圈,如AEC-Q200级产品,得到了市场的广泛认可。这些产品不仅具有高性能和长寿命,还能满足客户多样化的需求。

CONTEC公司的发展小趣事

近年来,随着手持式脉搏血氧仪市场的不断扩大,CONTEC公司凭借其在医疗设备领域的技术积累和市场经验,成功切入该领域并取得了显著成绩。公司的手持式脉搏血氧仪产品凭借其高精度、稳定性和便捷性受到了市场的广泛认可。在全球手持式脉搏血氧仪市场规模持续增长的背景下,CONTEC公司凭借其技术优势和市场竞争力,不断拓展国内外市场,实现了快速发展。

请注意,以上故事仅基于公开信息整理,如需更详细和深入的了解,建议查阅相关行业报告或联系公司获取更准确的信息。同时,这些故事仅描述了CONTEC公司在不同发展阶段的一些重要事件和成就,并不代表其全部发展历程。

问答坊 | AI 解惑

夜色下北京,7D展现夜景视频滴强劲实力

$(\'swf_hiE\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMTI1NTY5Nzc2/v.sw ...…

查看全部问答>

求助,方波移相问题

最近搞一个项目 要用到方波移相电路 弄了一个多月了 没有进展啊 愁啊!!!! 要求如下:             方波占空比50%             频率范围100HZ到500kHZ & ...…

查看全部问答>

传感器信号调理电路的噪声优化

精确的信号调理和高分辨率的测量不再局限于工业或仪器仪表应用,便携式消费类电子设备的设计人员也需要减小系统噪声,这相当具有挑战性,因为电池供电设备中的信号电压很小,系统的精度取决于其本底噪声。为了从信号调理电路中获取最低的本底噪声和 ...…

查看全部问答>

嵌入式linux下如何卸载内核已有的一些驱动?

最近做嵌入式开发,我的magicARM2410的ADC驱动总算自己写出来,但是目前又遇到一个问题,那就是,ADC驱动和magicARM2410 linux试验箱的TOUCHSCREEN触屏驱动有冲突,我要使用我的ADC驱动,那就必须卸载试验箱linux已有的触屏驱动, 我想问下各位大 ...…

查看全部问答>

交叉线的制作

     连接PC机和目标设备是用串口线连接,用micrisoft activesync同步,具体交叉线怎么做,就是怎么连,我只知道2,3交叉,4,6交叉,还有其它的怎么处理?…

查看全部问答>

寻wince6.0 USB摄像头驱动

请问哪位朋友做过wince6.0 带USB摄像头的产品?能否推荐一下摄像头模组供应商,可以提供wince6驱动的?感谢。…

查看全部问答>

怎么觉得heater resistor 不会工作呢

如图,怎么觉得heater resistor 不会工作呢。 R291为负温度系数热敏电阻,常温为22K,比较器LM311输出高电平,这样mos管闸断,heater没有电流流过。…

查看全部问答>

基于FPGA的秒表的设计

课程设计刚做完,发个秒表的程序分享下。实验版是Altera公司的ep2c5q208c8,晶振为50Mhz。功能为复位,启停,用6为数码管显示。精确到1/100s。程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_U ...…

查看全部问答>

关于FSMC,麻烦香版解疑恩,谢谢

https://bbs.eeworld.com.cn/upfiles/img/20092/200921591830577.jpg…

查看全部问答>

请教USART 与PC机通信

/*****************************************************************************\\ 文件名: main.c 描述;用于MSP430F149。 异步通讯。 版本:4.20.1 sun_seven \\********************************************** ...…

查看全部问答>