關于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下實現通用定時器微秒級延時
下一篇:Stm32cubeMX生成配置工程的例子和過程記錄
推薦閱讀
史海拾趣
隨著科技的進步,Eclipse Magnetics公司開始關注航空航天領域的需求。他們發現,在復雜的航空系統中,精確的磁性控制至關重要。于是,公司投入大量研發資源,成功開發出一系列高性能的磁性產品,為航空航天領域提供了可靠的解決方案。這一突破不僅鞏固了Eclipse Magnetics在電子行業中的地位,還為公司贏得了眾多知名客戶的信任。
為了更好地服務中國市場,ebm-papst在中國不斷推進本地化生產。公司在上海和西安設立了研發中心和生產基地,配備了與德國同樣先進的實驗設備。這些本地化生產和研發設施使得ebm-papst能夠更快地響應中國市場的需求,提供更符合當地市場特點的產品和解決方案。同時,本地化生產也降低了公司的生產成本,提高了產品的競爭力。
#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 ...… 查看全部問答∨ |
最近我用PB4.2定制一個WINCE系統,如果我選擇X86系列的目標平臺進行定制,都可以順利地生成NK.bin,然而我實際 的目標平臺是S3C2410,當然我得選擇sumsang SMDK2410:ARM4的BSP來定制,然而卻總是無法生成NK.bin,奇怪的是 也不抱錯,我在想,是不 ...… 查看全部問答∨ |
1. 為什么? 由于在使用ST的固件庫發現1是不能看到最底層的固件庫代碼,在開發的過程中不管怎么管控和嚴格測試也不能消除軟件的所有bug,所以在ST提供的固件庫中也可能存在未知的bug;2是使用庫函數的時候效率低下,占用FLASH 較多, 雖 ...… 查看全部問答∨ |
|
想法很簡單,就是使用看門狗復位讓一個LED閃。程序進去的時候,把LED點亮一段時間,然后關閉LED,最后有一個死循環,讓看門狗復位芯片,然后再點亮LED。 但程序進去后,LED被點亮然后滅了就再也沒亮,說明看門狗沒有復位芯片。我今天查了一 ...… 查看全部問答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:06 編輯 下午逛了逛淘寶,看到兩塊屏,挺便宜的....第一個,320*240,不到30塊......28.8,多了貌似還能便宜.......... 第二個....不知道分辨率,看起來應該也不小,也不像筆段式的,盒子上說是 ...… 查看全部問答∨ |