成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LWIP初體驗-修改ST官方demo

網絡 網絡管理
STM32的網絡應用還是個復雜的外設的,拿到一個板子需要驗證網絡部分是否正常,硬件設計是否有問題,對于很熟悉LWIP的同學可以直接移植LWIP,驗證硬件。但快速且方便的辦法是修改ST的官方demo來驗證硬件。

[[388412]]

01硬件說明

為什么要寫這篇文章?STM32的網絡應用還是個復雜的外設的,拿到一個板子需要驗證網絡部分是否正常,硬件設計是否有問題,對于很熟悉LWIP的同學可以直接移植LWIP,驗證硬件。但快速且方便的辦法是修改ST的官方demo來驗證硬件。(ST提供了CubeMX工具,如果使用該工具的話,也很方便,不在本文的考慮范圍內)。

本文的硬件測試環境

  1. 主控:STM32F207VCT6,100管腳的封裝
  2. 網絡PHY芯片:RTL8201EL,48管腳封裝,34和35管腳下拉,也就是芯片地址:0
  3. 使用的網絡接口:MII接口

涉及到的硬件原理圖和PCB開源,開源地址https://github.com/strongercjd/STM32F207VCT6本文涉及到的修改前代碼和修改后代碼下載地址鏈接:https://pan.baidu.com/s/1dr9MzX_pga2SYWOft4lniw

提取碼:7uqj

(提示:公眾號不支持外鏈接,請復制鏈接到瀏覽器下載)

本文目的:本文不會詳細講解LWIP相關內容,只是LWIP的初體驗,如果你有一塊板子帶有網絡PHY,需要你測試硬件是否有問題,本文或許對你有幫助。

02修改步驟

ST官方提供了很多demo,UDP,tftp,http,TCP等等,我們修改最常用的TCPSever的demo,代碼路徑如下:


①是IAR的工程代碼,②是Keil的工程代碼。

2.1、修改IAR配置文件

修改芯片設置(其實不用修改)


硬件使用的是SWD模式,如果你使用的硬件是JTAG模式,不需要修改。

 

2.2、修改網絡PHY地址

在stm32f2x7_eth_bsp.h文件中,將DP83848的PHY地址修改為0。

2.3、修改硬件IO

在stm32f2x7_eth_bsp.c中,這部分主要是根據具體硬件修改的,因為ST官方demo使用的是144腳芯片,我們使用100腳芯片,對應的GPIO需要修改。 


2.4、屏蔽無用的東西和修改IP

在main.h中,屏蔽USE_LCD宏定義,官方開發板使用了LCD,這里我們不使用。


修改IP地址(以本機IP地址為準,修改一個和自己PC在同一網段的空閑IP),再修改網關。

2.5、屏蔽其他代碼

在stm32f2x7_eth_bsp.c中


屏蔽這一項是因為這是跟芯片相關的,該函數功能:配置物理層產生一個中斷的鏈路狀態變化

demo使用的是DP83848,我們的硬件使用的是RTL8201

該函數定義

PHY_MICR宏定義如下


該函數操作的是DP83848的17寄存器,改寄存器屬于廠商自定義部分寄存器。

重點是RTL8201芯片沒有該寄存器。這部分內容詳見《RTL8201網絡芯片講解》,里面講解到了這個問題。

03效果顯示

3.1、電腦能ping通

 

3.2、客戶端能夠連接收發數據

使用PC的TCP客戶端,可以連接上STM32F207建立的TCPSever,端口是7。STM32收到數據后,把所有數據返回。


04使用中斷方式

通過上述修改,已經簡單將LWIP簡單跑起來了,并且建立了TCPSever,但demo中使用的是查詢的方式,實際項目中是需要使用中斷的,以便快速接收到網絡數據。

首先屏蔽掉main.c中輪詢函數。


添加網口中斷配置,在stm32f2x7_eth.c中增加ETH_IRQ的中斷配置。

 

在stm32f2xx_it.c中添加中斷服務函數,添加的函數就是剛剛main函數屏蔽的內容。


注意,這里采用時候if判斷語句,這里其實是有隱患的,如果一次數據大于1500字節,也就是說需要IP分片就是丟包,IP分片內容請看文章《IP協議詳解》。

我們將if修改成while即可。

 

測試結果,使用ping命令測試

 

PC端使用TCP客戶端工具測試STM32建立的TCPsever。


05Keil工程的修改

主要是修改工程配置,代碼修改參考上述IAR修改過程即可。

修改芯片類型


修改調試工具,ST官方代碼當然使用STlink了,我使用Jlink。


使用Jlink的SWD模式。


06移植TCP客戶機代碼

上文我們修改了TCPSever的demo,在很多情況STM32作為TCP客戶端連接服務器,下面我們將TCP客戶端代碼移植到剛才修改好的TCPSever工程中。為了體驗一下,在移植好LWIP的基礎上,如果要實現TCP客戶端,需要哪些函數接口。

TCP客戶端demo代碼在ST官方庫中位置。

 

demo的代碼在中斷函數中,TCP作為客戶端主動連接服務器的代碼在中斷函數中,在ST的demo中,中斷觸發STM32作為客戶端去鏈接服務器。

移植完畢,為了方便,把所有函數移植到main.c中,不再放置到中斷函數中。

分別拷貝tcp_echoclient_connect()、tcp_echoclient_connected()、tcp_echoclient_recv()、tcp_echoclient_connection_close()、tcp_echoclient_send()函數復制過來。

下面的這些變量也要復制過來


復制到main.c中

為防止和tcpsever代碼變量沖突,把tcp_echoserver.c所有代碼全部屏蔽掉,后者將其從工程目錄中刪除。

原來文件中的頭文件也復制過來


把原來main.h的IP信息復制過來


把tcp_echoclient_connected函數中一下屏蔽

這個時候編譯會出錯,原因是有些函數調用的錯誤,

方法1:調整函數位置

方法2:添加函數說明

 

修改IP(以實際IP為為主)

 

編譯代碼,下載到STM32,進行測試:

ping測試

 

在PC端使用網絡調試助手新建TCP服務器,進行客戶端測試,有新的客戶端上線。

為將接收到的數據返回PC,我們在tcp_echoclient_recv函數中加入以下代碼

 

收到的數據成功返回


本文簡單進行了LWIP的初體驗,并沒有太多技術含量,按照這個方法可以驗證新硬件是否正常,如果上述測試全部通過,說明硬件是沒有問題。

 

責任編輯:姜華 來源: 知曉編程
相關推薦

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統

2009-03-09 15:12:39

XenServer安裝

2023-07-15 08:01:38

2010-11-22 10:31:17

Sencha touc

2011-05-30 15:12:10

App Invento 初體驗

2009-11-30 10:09:02

谷歌Chrome OS

2011-08-02 10:26:59

iOS 多線程 線程

2011-11-01 10:30:36

Node.js

2013-06-08 10:15:29

Outlook 201Outlook 201

2011-09-15 15:03:10

2010-12-13 11:39:39

2025-03-18 07:30:41

2017-09-05 05:55:24

AWS ES集群大數據

2011-09-05 10:20:21

Sencha ToucAPP

2009-07-21 13:08:08

iBATIS DAO

2013-05-28 10:22:03

2023-07-17 08:34:03

RocketMQ消息初體驗

2024-12-23 07:00:00

FastExcelEasyExcel開源框架

2025-04-10 07:30:43

2011-06-07 17:35:39

iphone 多線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久成人动漫 | 欧美精品综合在线 | 日韩毛片免费看 | 国产色婷婷精品综合在线手机播放 | 精品久久久久久亚洲精品 | 国产精品99久久久久久宅男 | 日韩精品免费在线 | 在线观看国产wwwa级羞羞视频 | 日本久久精品视频 | 天堂一区二区三区 | 国产日韩欧美在线播放 | 91久久精品一区二区二区 | 国产成人艳妇aa视频在线 | 国产精品久久久久久久岛一牛影视 | 成人在线视频网站 | 亚洲国产精品一区 | 久久免费高清视频 | 美美女高清毛片视频免费观看 | 一区二区三区国产精品 | 在线看h| 中文字幕97 | 成人在线免费网站 | 91精品国产一区二区在线观看 | 看特级黄色片 | 欧美美女爱爱视频 | 国产精品久久久久aaaa九色 | 农夫在线精品视频免费观看 | 国产精品99久久久久久www | 日本一区二区高清不卡 | 成年人黄色小视频 | 中文字幕二区 | 国产日韩一区二区三免费高清 | 久久亚洲国产精品日日av夜夜 | 日韩精品一区二区三区中文在线 | 欧美成人不卡 | 国产精品久久久久久一区二区三区 | 欧美久久一级特黄毛片 | 日本一区二区三区在线观看 | 完全免费av在线 | 一区中文字幕 | 国产精品视频网 |