STM32F207核心版的LwIP例程的心得


//=====================================================================
//TITLE:
//    STM32F207核心版的LwIP例程的心得
//AUTHOR:
//    norains
//DATE:
//    Friday  01-July-2011
//Environment:
//    Keil MDK 4.2
//    STM32F207
//=====================================================================

 

    最近拿了片STM32F207的核心版,上面有以太網的芯片,可以聯網;而之前所工作的領域均沒有涉及網絡方面,所以在使用上遇上了不少麻煩,特別是例程也沒有很正常跑起來。以下的記錄,均是在調試例程時的一些記錄,有點支離破碎不成體系,各位讀者權當筆記來看好了。

 


1. IP地址

 

   例程默認的是采用自動分配IP地址的DHCP方式。如果大家的路由器無法查看到主機列表的話,那么這個分配方式就會比如郁悶。因為僅僅是使用核心版,是無法知道當前的IP地址的,除非你接了LCD來進行顯示。
  
   如果要更改其分配方式,可以打開lwipopts.h文件,將LWIP_DHCP的宏定義更改為0,如:
 
   
   將LWIP_DHCP設置為0后,就需要手動設置IP地址了。相應的數值,可以查看netconf.c文件,如:
 
   
   這里將IP地址設置為192.168.0.8,掩碼為255.255.255.0,網關則是192.168.0.1。如果各位對這些地址有所異議,也可以手動修改。
  
   在這里順便再說一下主機的IP地址設定。大家都知道,如果局域網的網段不一樣的話,是無法通信的;而又由於某些原因,使得主機的IP地址不能和開發板處於同一網段。遇到這種情形,直接修改核心版的IP地址自然是可以的,但我們還可以采用另外一種方法。
  
   首先TCP/IP屬性中,我們固定一個IP地址,如圖:
  
   
   點擊"高級",可以添加多個IP地址,如圖:
  
   
   這樣就能夠和核心版同一網段,也能夠正常通信了。
  
  
2. RMII

 

   所拿到的核心是STM32F107和STM32F207共用的,但因為引腳問題,使用STM32F207是不能使用MII,必須采用RMII。如果要更改這個模式,必須打開stm32f2x7.c文件,將MII_MODE宏去掉,並且定義相應的RMII_MODE,如:
 
   
   如果這里執意使用的是MII_MODE會是什么結果呢?結果便是無法跳出該循環語句:
 
   
   因為會檢測到一直是SET狀態,沒有RESET,代碼會一直循環。
  
  
3. PLL_N

 

   如果使用了RMII模式,那么必須要將system_stm32f2xx.c的PLL_N定義由原來的240更改為200,如:
   #define PLL_N      200 //norains:If you want to use RMII,it must set 200 here.Others you could set 240
  
   假如不進行更改的話,那么下面這段main.cpp文件的main函數循環代碼會出問題:
 
   
   簡單點來說,是ETH_GetRxPktSize函數永遠返回為0,無法接收到數據。


4. 測試

 

   當一切都准備就緒之后,可以將核心版連接到路由器中,然后在命令行界面輸入ping就能夠檢測到設備,如圖:
  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM