STM32F407開發(fā)板(帶以太網(wǎng)),板子上的PHY為LAN8720A,沒有用到顯示屏全為串口輸出調(diào)試信息。
實現(xiàn)功能
通過STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,實現(xiàn)這些功能非常簡單。
步驟
功能介紹、工程搭建、工程代碼、TFTP 服務(wù)器測試
1、TCP Server 實現(xiàn)顯示連接上的客戶端IP及對客戶端發(fā)來的數(shù)據(jù)回傳2、TFTP Server 實現(xiàn)IAP功能及讀取MCU內(nèi)部FLASH數(shù)據(jù)。這里用到的是文件傳輸協(xié)議,主要是參考官方文檔UM1709,及官STM324xG_EVAL的LWIP IAP例子。
工程搭建外設(shè)配置
打開STM32CubeMX,點NEW PROJECT,在左側(cè)的輸入框中輸入407ZG,在右側(cè)會顯示STM32F407ZGT6的MCU列表,選擇此列表,雙擊。設(shè)置時鐘源為外部時鐘開啟SWD調(diào)試接口,開啟ETH外設(shè),選擇RMII接口(LAN8720A為RMII接口),中間件里時能LWIP。使用RMII接口的時候軟件會自動配置對應(yīng)的引腳,但是一定要仔細對比軟件配置的引腳是否為板子上硬件所連接的。
原子F407板子上的LAN8720A的RMII接口引腳如下圖,
-
配置時鐘外部高速晶振選擇為8M,PLL SORCE MUX 選擇為HSE,在HCLK處輸入168點回車,軟件會自動配置好
-
中間件配置這里主要配置,ETH、LWIP、串口1、GPIO
-
生成工程代碼
點左上角的Project,選擇Settings...(不建議直接點黃色的齒輪),點擊OK。再點右上方的黃色齒輪即可生成工程代碼。
1、TCP Server 的實現(xiàn)
看起來代碼很多,其實真的不復(fù)雜。
大致流程:先新建一個TCB_PCB、開始監(jiān)聽、掛載客戶端連接請求回調(diào)函數(shù)、掛載接收數(shù)據(jù)回調(diào)函數(shù)、掛載發(fā)送完成回調(diào)函數(shù)、掛載出錯回調(diào)函數(shù)、掛載心跳包回調(diào)函數(shù)、關(guān)閉連接等,最重要的是釋放內(nèi)存!每收到一個數(shù)據(jù)鏈,它已經(jīng)被申請了內(nèi)存,所有在處理完這個數(shù)據(jù)后一定要釋放。
2、TCP服務(wù)器測試用網(wǎng)絡(luò)調(diào)試助手連接TCP服務(wù)器(兩者必須在一個網(wǎng)關(guān)里面,192.168.000.XXX),網(wǎng)絡(luò)調(diào)試助手里選擇TCP客戶端,遠程主機IP為 192.168.0.120 , 端口號為7
詳細測試步驟請點擊閱讀原文下載。
通過測試,則表示TCP服務(wù)器已經(jīng)完成。您也可以通過手機連接這個路由器的WIFI,通過 網(wǎng)絡(luò)調(diào)試助手APP來連接這個開發(fā)板的服務(wù)器,電腦可以通過 TCP客戶端與開發(fā)板的TCP服務(wù)器連接同時也可以用手機做TCP客戶端連接開發(fā)板的TCP服務(wù)器。
3、TFTP Server 的實現(xiàn)還是在上面的代碼上來實現(xiàn)此功能,即在TCP 服務(wù)器的代碼上實現(xiàn)TFTP 服務(wù)器。打開剛才STM32CubeMX工程,在原來的基礎(chǔ)上來配置LWIP。
因為是要通過TFTP 來實現(xiàn) IAP 功能 ,所有一定有FLASH 的操作,這里我們COPY官方例子里面的flash_if.c和flash_if.h
至此,TFTP服務(wù)器搭建完成,下載到開發(fā)板,串口顯示如下信息:Start 開始監(jiān)聽 掛載客戶端連接回調(diào)函數(shù) TFTP初始化成功 Static IP address: 192.168.0.120可以通過上面的TCP服務(wù)器測試步驟來測試TCP服務(wù)器功能,正常測試,工作正常,ping也能通
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9796瀏覽量
88013 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365108 -
TFT
+關(guān)注
關(guān)注
10文章
399瀏覽量
112594 -
TCP
+關(guān)注
關(guān)注
8文章
1402瀏覽量
81073 -
STM32F4
+關(guān)注
關(guān)注
3文章
203瀏覽量
29063
原文標(biāo)題:基于STM32F407搭建TCP服務(wù)器及TFTP服務(wù)器
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
用STM32F407的IO去驅(qū)動5V的外部上拉電阻,請問VDD_FT的電壓范圍是多少?
stm32F407平臺上使用freertos,使用pvPortMalloc申請內(nèi)存,發(fā)現(xiàn)內(nèi)存中的數(shù)據(jù)總被修改,怎么解決?
stm32f407這個STM32_RCC_PERIPHCLK_SDMMC是哪里定義的?
STM32F407的高速USB,采用的是虛擬串口方式,VCP驅(qū)動有l(wèi)inux系統(tǒng)的嗎?
Modbus TCP Server程序開發(fā)與Yocto系統(tǒng)構(gòu)建

求一份在STM32F407的CS1239的驅(qū)動程序
STM32F407輸出的2片ADC的轉(zhuǎn)換值與輸入ADC的電壓值相同了,不知道是何原因?
dbForge Studio For SQL Server:用于有效開發(fā)的最佳SQL Server集成開發(fā)環(huán)境
STM32F405xx和STM32F407xx微控制器數(shù)據(jù)手冊
使用STM32F407的硬件SPI接口去讀取ADS8694的18位ad數(shù)據(jù)怎樣才能讀取出來?
STM32F407和ADS8684進行SPI通信,寄存器怎么配置?
STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

w5500 作為tcp server,客戶端異常發(fā)送【RST,ACK】斷開連接問題
Nat server技術(shù)原理和配置過程

評論