lwip協(xié)議是廣泛用于嵌入式設(shè)備的網(wǎng)絡(luò)通信協(xié)議搪搏,通過rt-thread studio(簡稱rts)可方便快速的實現(xiàn)網(wǎng)絡(luò)收發(fā)功能
硬件:stm32f407zgt6核心板西采,lan8720a(rmii接口)模塊(淘寶很多)
軟件:rts,cubemax
調(diào)試方式:st-link swd接口
實現(xiàn)目標(biāo):實現(xiàn)上位機(jī)與單片機(jī)的互ping成功男娄,注意,本文需要一定硬件和軟件動手能力,沒有基礎(chǔ)的同學(xué)可以先學(xué)習(xí)一下基礎(chǔ)的知識乾巧,本文中部分基礎(chǔ)操作的內(nèi)容不詳細(xì)說明句喜。
實現(xiàn)步驟:
一、硬件連接:使用杜邦線進(jìn)行引腳連接沟于,具體引腳對于關(guān)系可打開cubmax的rmii接口進(jìn)行查詢咳胃,圖2是stm32f407zgt6的引腳對于關(guān)系,使用杜邦線進(jìn)行連接即可旷太。
二、使用rts創(chuàng)建基于芯片的工程供璧,版本選擇rtt標(biāo)準(zhǔn)版存崖,通信串口選擇uart6(PC6,PC7),當(dāng)然也可以自定義嗜傅,下載選擇st-link,swd接口金句,您可以根據(jù)自己的現(xiàn)有硬件設(shè)備進(jìn)行選擇。
三违寞、打開ETH功能:通過rts打開cubemax,并進(jìn)行以下操作偶房,
? ? ? ? 1趁曼、選擇左側(cè)Conectivity下的ETH,選擇Mode為RMII
? ? ? ? 2、重新設(shè)置時鐘樹棕洋,本文使用默認(rèn)內(nèi)部時鐘進(jìn)行測試挡闰,不修改時鐘樹,點擊重置時鐘配置(reset clock configuration)即可
? ? ? ? 3掰盘、點擊generate code 生成項目代碼半等,然后關(guān)閉cubemax牧嫉,使修改信息同步至rts,出現(xiàn)以下內(nèi)容,說明同步成功话肖《隽荩可點擊編譯若編譯通過則說明操作無誤荠列。
四:打開rts網(wǎng)絡(luò)功能和lwip功能
? ? ? ? 1刽酱、打開Rt-thread Settings 選擇? 選擇組件中的lwip使之變?yōu)椴噬▓D8)
? ? ? ? 2、點擊配置項邮偎,進(jìn)行配置lwip管跺,圖9中四個標(biāo)紅開關(guān)打開即可,若是電腦直連模式禾进,請關(guān)閉DCHP選項并配置靜態(tài)IP豁跑。
? ? ? ? 3、使能ETH功能泻云,打開board.h文件贩绕,打開ETH功能火的,編譯并下載,會出現(xiàn)圖11的錯誤淑倾,缺少phy_reset函數(shù)馏鹤。
? ? ? ? 4、點擊錯誤行跳轉(zhuǎn)至錯誤文件drv_eth.c娇哆,在頂部新增以下代碼湃累,具體代碼因芯片不同,可在rts安裝路徑下的"\repo\Extract\RT-Thread_Source_Code\RT-Thread\lts-v3.1.5\bsp\stm32"文件夾中對應(yīng)芯片下搜索phy_reset.c文件查看
#define RESET_IO GET_PIN(D, 3)
void phy_reset(void){
????????rt_pin_write(RESET_IO, PIN_LOW);
????????rt_thread_mdelay(50);
????????rt_pin_write(RESET_IO, PIN_HIGH);
}
五:完成以上步驟后編譯工程碍讨,顯示編譯通過治力,下載至芯片后打開串口 顯示圖12則說明程序運(yùn)行正常。msh輸入list_device明顯可以看到e0硬件已開啟(圖13)勃黍,輸入ifconfig可顯示網(wǎng)卡的靜態(tài)IP信息(圖14)
六宵统,測試:上位機(jī)電腦配置網(wǎng)絡(luò)與單片機(jī)在同一網(wǎng)段 互ping結(jié)果如下,說明工程網(wǎng)絡(luò)模塊運(yùn)行正常覆获,撰文不易马澈,點個贊吧O(∩_∩)O