01、基礎問題
1.1、芯片數據接口
RTL8201E(L)是一種單芯片/單端口快速以太網物理接收器,支持MII接口,RMII接口,SNI接口。
MII接口和RMII接口切換在8.1.1章節有講到,如下圖:
選擇MII接口,把COL/SNI腳拉低。
RTL8201E的框圖如下
和MCU連接的系統框圖如下:
①RJ45也就是網口,就是我們常見的網口,如下圖:
②magnetics,直譯磁性元件,這里的通常叫法為:網絡變壓器。網絡變壓器又名網絡隔離變壓器、以太網變壓器、網絡濾波器,主要有信號傳輸、阻抗匹配、波形修復、信號雜波抑制和高電壓隔離等作用。如下圖
③PHY芯片,中文可稱之為端口物理層,PHY連接一個數據鏈路層的設備(MAC)到一個物理媒介,如光纖、銅纜線或網線等。也就是本文重點講解的內容,如下圖
④MAC部分,主要是STM32的ETH外設部分,這方面之前的文章已經講解過了
涉及到的文章有《STM32網絡之SMI接口》《STM32網絡之MII和RMII接口》《STM32網絡電路設計》《STM32網絡之MAC控制器》《STM32網絡之DMA控制器》《STM32網絡之中斷》。
1.2、芯片地址
MCU如何選擇PHY芯片的地址,參看芯片的SMI接口
RTL8201的PHY地址經過兩個管腳配置的
在這里我們看出,這兩個管腳和LED燈的管腳是復用的
為了減少RTL8201EL的引腳數,LED引腳和PHY地址引腳復用。額外的捆綁考慮和LED使用必須被考慮,為了避免爭用。具體的來說,當LED的輸出被直接用來驅動LED時,每一個輸出驅動的活躍狀態依賴於相應的PHAD輸入在上電和復位采樣的邏輯電平。例如,如圖6(左側)顯示,如果一個給定的輸入電阻PHYAD拉高,那么相應的輸出將被配置為低電平驅動。在右邊,我們可以看到,如果一個給定的輸入電阻拉低PHYAD然后相應的輸出將被配置為一個高電平驅動。PHY地址配置腳不應該直接和VCC或GND相連,但是一個電阻(比如5.1KΩ)拉高或拉低。如果沒有LED指示燈,LED的路徑組件(LED+ 510Ω)可以被刪除。
查看PCB得知,我們的控制卡PHY的地址是0
1.3、時鍾源的選擇
CKXTAL2 25MHz晶振輸出(25MHzCrystal Output):該引腳提供25MHz晶振輸出。當X1用一個外部的25MHz振盪器驅動時該引腳必須懸空。
CKXTAL1 25MHz晶振輸入(25MHzCrystalInput):該引腳提供25MHz晶振輸入。如果使用一個25MHz的振盪器,連接X1到振盪器的輸出。參見9.3節對時鍾源的說明。
我們使用MCU的MCO1提供時鍾,查看電路圖,X2是懸空的。
備注:
如果使用25MHz無源晶振,兩個腳都需要連接,和MCU的無源晶振連接相同,關於晶振方面知識,可以參考《晶振原理講解》。
02、寄存器
PHY寄存器是由IEEE802.3定義的,一般通過SMI對PHY進行管理和控制,也就是讀寫PHY內部寄存器。PHY寄存器的地址空間為5位,可以定義0~31共32個寄存器。IEEE802.3定義了0~15這16個寄存器的功能,16~31寄存器由芯片制造商自由定義。
寄存器0、寄存器1和寄存器15講解以及IEEE802.3官方文檔,請看《PHY寄存器》。
自定義寄存器16
獲取PHY芯片的鏈接速度
ST官方庫文件的驅動在stm32f2x7_eth_conf.h最后部分
ST官方使用的是DP83848芯片,寄存器16可以用來獲取芯片的速度,這個寄存器就是DP83848芯片廠家自定義的寄存器,所以在移植STM32官方代碼時注意這個問題。
我們使用的RTL8201芯片也是並不是這樣的
寄存器16 Nway設置寄存器
翻譯成中文如下
Address |
Name |
Decription |
15~11 |
保留 |
Realtek測試模式內部使用 未經Realtek批准,請勿更改此字段。 |
10 |
Testfun |
為1時,自送協商內部加速定時器 |
9 |
NWLPBK |
為1時,設置NWay為回送模式 |
8~3 |
保留 |
|
2 |
FLAGABD |
為1時,自動協商進入性能檢測狀態 |
1 |
FLAGPDF |
為1時,自動協商遭遇硬性檢測故障情況 |
0 |
FLAGLSC |
為1時,自動協商進入連接狀態檢查 |
其他寄存器並非必須的寄存器,重要的寄存器0和寄存器1已經在《PHY寄存器》講解過了。
RTL8201資料下載:
鏈接:https://pan.baidu.com/s/1hKQcp9KCyICbTiZRANTiZA
提取碼:wkr1
硬件原理圖和PCB開源地址:
https://github.com/strongercjd/STM32F207VCT6
點擊查看本文所在的專輯,STM32F207網絡開發