娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

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

正在發生

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

發布者:悠然自在 來源: eefocus關鍵字:STM32CubeMx  LWIP教程  PHY  硬件層搭建 手機看文章 掃描二維碼
隨時隨地手機看文章

關于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芯片的配置于此類似,但需注意各個芯片寄存器地址的差異;


關鍵字:STM32CubeMx  LWIP教程  PHY  硬件層搭建 引用地址:STM32CubeMx下LWIP教程(一)-PHY硬件層搭建

上一篇:STM32Cubemx下實現通用定時器微秒級延時
下一篇:Stm32cubeMX生成配置工程的例子和過程記錄

推薦閱讀

CAN的全稱是Controller Area Network——控制器局域網絡。本質上來說,CAN是一種通信協議,只要汽車內有電子化、自動化的處理部件,都要通過CAN的總線網絡交換數據和控制命令。類似的系統也會應用在坦克這類軍用車輛中,一開始這一系統是非常安全的,直到后來車聯網技術的出現。自動駕駛技術為人們勾勒出了一副美好的未來出行的畫面:坐上沒有方向盤的汽...
STM32F0中斷優先級配置:void NVIC_Config(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); ...
中國儲能網訊:上海市在推動新能源汽車發展方面連年交出高分答卷。相關數據顯示,2017年—2019年,該市新能源汽車增量連續保持每年6萬以上,年均增長率高達44.9%。 新能源汽車高速發展,充電設施建設同步跟進。根據4月2日上海市城鄉建設和交通發展研究院發布的《2019年上海市綜合交通運行年報》,2019年,該市充換電設施共計27.7萬個(提前達到“十三...
簡介:說最基本的,老的51單片機(80C51系列)有5個中斷源,2個優先級,可以實現二級中斷服務嵌套。現在很多擴展的51單片機已經有4個優先級(或更多)和更多的中斷源了。在說到中斷之前,我先來定義一下優先級,明白了什么是優先級,后面的闡述就容易明白了。實際上很多人都是混淆了優先級的含義,所以才覺得糊里糊涂。中斷的優先級有兩個:查詢優先級和執行優...

史海拾趣

問答坊 | AI 解惑

第三屆(1997年)全國大學生電子設計競賽題目

本帖最后由 paulhyde 于 2014-9-15 09:35 編輯 …

查看全部問答∨

直流電機,單片機??

請問用單片機控制兩個12v,>=5A 功率在50W以上的直流電機應選用什么器件比較好? 怎樣使這個12v電源比較穩定? 急!!…

查看全部問答∨

vxworks6.5如何得到對端的mac地址?

{    STATUS sts; int     sockfd;  …

查看全部問答∨

串口助手為何發送A給單片機回收不到A?

#include <reg51f.h>     //包含特殊功能寄存器 #include<stdio.h> #define Uchar unsigned char #define Uint unsigned int void main(void) { Uint xdata rcvdata[1]; //Uchar xdata  trdata[2 ...…

查看全部問答∨

請教關于WINCE編譯參數的問題

最近我用PB4.2定制一個WINCE系統,如果我選擇X86系列的目標平臺進行定制,都可以順利地生成NK.bin,然而我實際 的目標平臺是S3C2410,當然我得選擇sumsang SMDK2410:ARM4的BSP來定制,然而卻總是無法生成NK.bin,奇怪的是 也不抱錯,我在想,是不 ...…

查看全部問答∨

放棄現有固件庫,建立自己的庫

1. 為什么? 由于在使用ST的固件庫發現1是不能看到最底層的固件庫代碼,在開發的過程中不管怎么管控和嚴格測試也不能消除軟件的所有bug,所以在ST提供的固件庫中也可能存在未知的bug;2是使用庫函數的時候效率低下,占用FLASH 較多, 雖 ...…

查看全部問答∨

求助

                                 本人采用stm8l,進入HALT低功耗狀態,想用端口中斷喚醒退出,其它端口中斷沒問題,唯獨端口4&nbsp;&nbsp;EXTI4 ...…

查看全部問答∨

STM8S獨門看門狗(IWDG)無法啟動,求助!

想法很簡單,就是使用看門狗復位讓一個LED閃。程序進去的時候,把LED點亮一段時間,然后關閉LED,最后有一個死循環,讓看門狗復位芯片,然后再點亮LED。 但程序進去后,LED被點亮然后滅了就再也沒亮,說明看門狗沒有復位芯片。我今天查了一 ...…

查看全部問答∨

大家來看看這兩塊屏,感覺有點意思呀....

本帖最后由 ddllxxrr 于 2016-1-7 17:06 編輯 下午逛了逛淘寶,看到兩塊屏,挺便宜的....第一個,320*240,不到30塊......28.8,多了貌似還能便宜..........   第二個....不知道分辨率,看起來應該也不小,也不像筆段式的,盒子上說是 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 廉江市| 北辰区| 南阳市| 昭觉县| 香河县| 靖远县| 南宁市| 黄骅市| 阳西县| 景洪市| 苏尼特右旗| 蒲城县| 察哈| 天全县| 东丰县| 德钦县| 营山县| 荥经县| 东阿县| 鹤山市| 松阳县| 龙井市| 锦州市| 中阳县| 赤城县| 甘德县| 武功县| 册亨县| 淮南市| 乌审旗| 梁河县| 泸定县| 葫芦岛市| 尚义县| 小金县| 龙海市| 特克斯县| 纳雍县| 营口市| 清远市| 洪洞县|