掉落的楓葉像老工程師的筆記經驗我打開夜燈照亮歲末的秋天晚霞掠過天邊北風掠過工作臺的桌面我把努力融進了落葉想換來熟悉的那些肯定的笑顏
開發平臺
STM32F407開發板(帶以太網),板子上的PHY為LAN8720A,沒有用到顯示屏全為串口輸出調試信息。實現功能
通過STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,實現這些功能非常簡單。步驟
功能介紹、工程搭建、工程代碼、TFTP 服務器測試
1、TCP Server 實現顯示連接上的客戶端IP及對客戶端發來的數據回傳2、TFTP Server 實現IAP功能及讀取MCU內部FLASH數據。這里用到的是文件傳輸協議,主要是參考官方文檔UM1709,及官方STM324xG_EVAL的LWIP IAP例子。
工程搭建外設配置
打開STM32CubeMX,點NEW PROJECT,在左側的輸入框中輸入407ZG,在右側會顯示STM32F407ZGT6的MCU列表,選擇此列表,雙擊。設置時鐘源為外部時鐘開啟SWD調試接口,開啟ETH外設,選擇RMII接口(LAN8720A為RMII接口),中間件里時能LWIP。使用RMII接口的時候軟件會自動配置對應的引腳,但是一定要仔細對比軟件配置的引腳是否為板子上硬件所連接的。
原子F407板子上的LAN8720A的RMII接口引腳如下圖,
-
配置時鐘外部高速晶振選擇為8M,PLL SORCE MUX 選擇為HSE,在HCLK處輸入168點回車,軟件會自動配置好
-
中間件配置這里主要配置,ETH、LWIP、串口1、GPIO
-
生成工程代碼
點左上角的Project,選擇Settings...(不建議直接點黃色的齒輪),點擊OK。再點右上方的黃色齒輪即可生成工程代碼。
1、TCP Server 的實現
看起來代碼很多,其實真的不復雜。
大致流程:先新建一個TCB_PCB、開始監聽、掛載客戶端連接請求回調函數、掛載接收數據回調函數、掛載發送完成回調函數、掛載出錯回調函數、掛載心跳包回調函數、關閉連接等,最重要的是釋放內存!每收到一個數據鏈,它已經被申請了內存,所有在處理完這個數據后一定要釋放。
2、TCP服務器測試用網絡調試助手連接TCP服務器(兩者必須在一個網關里面,192.168.000.XXX),網絡調試助手里選擇TCP客戶端,遠程主機IP為 192.168.0.120 , 端口號為7
詳細測試步驟請點擊閱讀原文下載。
通過測試,則表示TCP服務器已經完成。您也可以通過手機連接這個路由器的WIFI,通過 網絡調試助手APP來連接這個開發板的服務器,電腦可以通過 TCP客戶端與開發板的TCP服務器連接同時也可以用手機做TCP客戶端連接開發板的TCP服務器。
3、TFTP Server 的實現還是在上面的代碼上來實現此功能,即在TCP 服務器的代碼上實現TFTP 服務器。打開剛才STM32CubeMX工程,在原來的基礎上來配置LWIP。
因為是要通過TFTP 來實現 IAP 功能 ,所有一定有FLASH 的操作,這里我們COPY官方例子里面的flash_if.c和flash_if.h
至此,TFTP服務器搭建完成,下載到開發板,串口顯示如下信息:Start 開始監聽 掛載客戶端連接回調函數 TFTP初始化成功 Static IP address: 192.168.0.120可以通過上面的TCP服務器測試步驟來測試TCP服務器功能,正常測試,工作正常,ping也能通
-
STM32
+關注
關注
2266文章
10876瀏覽量
354910 -
TFT
+關注
關注
10文章
384瀏覽量
110964 -
TCP
+關注
關注
8文章
1351瀏覽量
78995 -
STM32F4
+關注
關注
3文章
194瀏覽量
28001
發布評論請先 登錄
相關推薦
評論