PHY芯片IP101GR
1. 預備知識
接上文
《GD32F450以太網(wǎng)(1):ETH 外設接口簡介》介紹了嵌入式以太網(wǎng)接口。
《GD32F450以太網(wǎng)(2-1):PHY芯片LAN8720A介紹》介紹了LAN8720A
本文介紹另外一款PHY芯片IP101GR,支持MII接口或RMII接口,可代替市場上LAN8710A/LAN8720A/KSZ8041等芯片。
2. IP101GR簡介
IP101是臺灣省九陽電子公司生產(chǎn)制造的,符合IEEE 802.3/802.3u標準單端口快速以太網(wǎng)收發(fā)器100Mbps和10Mbps操作,它支持自動MDI/MDIX功能,簡化網(wǎng)絡安裝和減少系統(tǒng)維護成本。提高系統(tǒng)性能,部分功能介紹如下:
- 支持Auto MDI/MDIX
- 已內(nèi)置4個49.9歐的精密電阻
- 支持中斷功能
- 支持 MII/RMII 接口
- 超低功耗,全負荷運轉(100 Mbps_FDX)時,只需低于0.15 w。
- Rx to Tx 回環(huán)
- 有一個PECL接口可支持連接額外的100Base-FX光纖收發(fā)器。
IP101有一系列具體的型號,IP101GR只是其中的一種,具體可以在立創(chuàng)下載數(shù)據(jù)手冊來了解,我也上傳了數(shù)據(jù)手冊,下面簡單介紹一下主要區(qū)別:
型號 | 引腳數(shù) | 工作溫度范圍 |
---|---|---|
IP101GA | 48LQFP | 0-70度 |
IP101GR | 32QFN | 0-70度 |
IP101GRI | 32QFN | -40-85度 |
IP101AH | 48LQFP | 0-70度 |
3. IP101GR基于RMII接口的PCB設計重點解析
說明:因為本文使用的目的主要是替換LAN8720,因此我只介紹RMII接口的設計和使用,對于MII接口的pcb設計,請參考數(shù)據(jù)手冊自行完成。
PHY芯片的原理圖有幾部分非常重要,包括時鐘選擇,led燈設計,PHY芯片地址設定,下面我們依次介紹這幾部分。
3.1 時鐘設置
時鐘的設計要完成兩件事:
第一:PHY芯片工作是需要時鐘的,因此PHY芯片需要時鐘,一般都是25M或50M。
第二:RMII通信,需要時鐘的,必須是50M。因此設計的時候必須為這兩部分提供時鐘。
回顧以前發(fā)的文章,我們知道對于LAN8710有兩種方法解決:
-
一種是由外部提供50M的時鐘(可以是有源晶振,也可以是MCU引腳輸出),同時接入PHY芯片XTALI引腳和REF_CLK引腳,這樣就可以也同時為PHY芯片和RMII通信提供時鐘。
-
另一種是將PHY芯片接入25M晶振,在由PHY芯片內(nèi)部PLL倍頻到50M輸出到REF_CLK引腳,從而實現(xiàn)為PHY芯片和RMII通信提供時鐘。
對于IP101GR通過設置COL引腳為1,來選擇IP101GR工作在RMII接口模式,在RMII接口模式,官方文檔提供了兩種方法來設置時鐘:
-
提供一個25MHz無源晶振到引腳X1和X2或提供一個25MHz的有源時鐘到X1引腳,RXCLK/50M_CLKO引腳將會輸出50M時鐘,接到 TXCLK/50M_CLKI,將會為RMII通信提供50M時鐘,如下:
-
X1接地,外部提供一個50M時鐘(可以由mcu產(chǎn)生,也可以外接有源晶振)接到TXCLK/50M_CLKI引腳,此時PHY芯片和RMII通信都可以獲得50M時鐘,如下:
注意:對于時鐘的兩個作用:PHY芯片工作是需要時鐘的,能接25M或50M,RMII通信,需要時鐘的,必須是50M,因此才有上面的接法??偨YIP101的時鐘的3種設計,如下:
其中,GD32F4的PA1引腳是REF_CLK引腳,這個對于不同芯片引腳也應該是不同的。
3.2. led燈設計
IP101G提供2種LED工作模式:
模式1(默認):
LED | 功能 |
---|---|
LED0 | 鏈路狀態(tài):Active表示鏈路已經(jīng)建立 |
LED1 | 雙工操作:Active表示全雙工 |
LED2 | 10BT/ACT: Active表示10Mbps連接已經(jīng)建立, |
LED3 | 100BT/ACT: Active表示100Mbps連接已經(jīng)建立,當有數(shù)據(jù)收發(fā)的時候會發(fā)生閃爍 |
模式2:
LED | 功能 |
---|---|
LED0 | 鏈路狀態(tài):Active表示鏈路已經(jīng)建立,當有數(shù)據(jù)收發(fā)的時候會發(fā)生閃爍 |
LED1 | Duplex/COL: Active表示全雙工,當發(fā)生沖突事件時閃爍。 |
LED2 | 10BT/ACT: Active表示10Mbps連接已經(jīng)建立 |
LED3 | 100BT/ACT: Active表示100Mbps連接已經(jīng)建立 |
對于led模式,一般我們都采用默認,若更改模式需要設置IP101GR的第20引腳腳,因此本文就不討論設置led模式了,直接采用默認。
當led閃爍的時候,閃爍速度說明:On 26ms -> Off 78ms -> On 26ms -> Off 78ms …
對于IP101GR,只有LED0和LED3兩個led燈,這兩個led燈一般我們直接與網(wǎng)口上面燈相連,由于led和PHY芯片地址設置引腳是復用的,因此在PHY芯片地址設置部分說明引腳連線方式。
3.3. PHY芯片地址設置
每一個PHY芯片都有自己的地址,因此對于PHY模塊來說,是可以同時連接好幾個來實現(xiàn)多網(wǎng)口的。IP101的配置地址引腳和led的引腳是復用的。因此對于IP101GR只有兩條地址配置引腳PHY_AD0和PHY_AD3, PHY芯片在上電的時候,引腳會配置成輸入,此時引腳處于PHY_AD0和PHY_AD3狀態(tài),當 PHY芯片讀完引腳的電平后,就會把引腳配置成輸出,此時引腳處于LED0和LED3狀態(tài)。
對于32 pin的ip101芯片來講,由于只有地址LED0和LED3,沒有LED1和LED2,引腳關系如下:
led3/PHY_AD3 | led0/PHY_AD0 | PHY芯片地址 |
---|---|---|
0 | 0 | 5’d0 |
X | 1 | 5’d1 |
1 | 0 | 5’d2~5’d31 |
X表示不關心,當led3=1;led0=0的時候地址2到31都能得到響應,對于48pin引腳芯片,地址定義請自行查看手冊。
書冊中也準備好了PHY_ADx的畫法,當想要高電平,則按左邊的設計,需要低電平的按右邊圖設計,如下:
4. pcb設計
下面是采用PHY外接50M晶振來實現(xiàn)clk_50M的方案原理圖設計:
引腳4的COL接電阻上拉來先擇使用RMII方式通信,當19引腳RXDV上拉是配置為光纖模式,這里使用普通網(wǎng)卡因此我添加了一顆下拉電阻。當X1、X2引腳接25M晶振,50M時鐘將從14引腳輸出,為了輸出到RMII時鐘上,因此要將10引腳和14引腳連在一起,并且在連接到mcu的rmii_clk引腳上面。若使用外部提供50M時鐘方案,那么就需要將X1引腳接地,此時需要外部提供50M時鐘同時接到10引腳和mcu的rmii_clk引腳上面。
由于31引腳AVDD33是一個模擬電源輸入,因此需要為它的電源進行一次濾波,來保證穩(wěn)定,如下:
網(wǎng)口設計,采用一個集成變壓器的網(wǎng)口,如下:
注意:對于設計過其它網(wǎng)口的人來講,一般需要在線路進入變壓器前串聯(lián)精度較高的49.9歐電阻,但是IP101自帶了這個這個部分,因此不需要我們在管。
上面的圖中在連接網(wǎng)口燈的時候,可實現(xiàn)PHY芯片的地址配置,當R18、R24連接,R23、R25不焊接的時候,配置地址為1,當R23、R25連接,R18、R24不焊接的時候,配置地址為0。
對外接口設計,就是將RMII引腳和復位引腳、錯誤指示引腳引出來,MCU可以不全部連接,如下:
最后設計3D圖:
對于使用外部提供50M的時鐘方案也很好實現(xiàn),只需要更改一下時鐘線的連接。
5. 寄存器描述
PHY是由IEEE802.3定義的,一般通過SMI對PHY進行管理和控制,也就是讀寫PHY芯片的內(nèi)部寄存器。PHY寄存器的地址空間為5位,可以定義031共32個寄存器,其中IEEE802.3定義了015這16個寄存器的功能,PHY芯片廠商不可任意修改,剩下的16~31寄存器由芯片制造商自己定義,用于實現(xiàn)一些自己獨有的功能。但是隨著PHY芯片功能的增加,很多PHY芯片都采用分頁技術來擴展地址空間,定義更多的寄存器,IP101G就采用分頁技術來擴展了地址。我有另外的一篇文章,介紹了分頁技術的原理和訪問方式,在這里我就不多講了。
使用過LAN8720A的都知道,LAN8720A重點關注三個寄存器,BCR寄存器、BSR寄存器、PHY特殊功能寄存器,由于BCR寄存器和BSR寄存器是在前16個寄存器中,PHY芯片廠商不可任意修改,因此不管使用那家的PHY芯片,BCR寄存器和BSR寄存器的相關配置都可以拿來直接用,下面我列出IP101g最重要的4個寄存器,如下:
Page | Register | Description | Default | Note |
---|---|---|---|---|
X | 20 | 頁面控制寄存器 | 0x0010 | 頁配置寄存器 |
– | 0 | 控制寄存器 | 0x3100 | BCR寄存器 |
– | 1 | 狀態(tài)寄存器 | 0x7849 | BSR寄存器 |
16 | 30 | PHY MDI/MDIX控制和特定狀態(tài)寄存器 | 0x0000 | PHY特殊功能寄存器 |
注:X表示不關心
關于BCR寄存器和BSR寄存器這兩個地址的內(nèi)容,請參考我的另一篇文章《GD32F450以太網(wǎng)(2-1):PHY芯片LAN8720A介紹》,下面我們重點介紹IP101對應的那個PHY特殊功能寄存器的使用方法。
首先這個PHY芯片采用了分頁技術來擴展地址空間,這個特殊寄存器位于第16頁的reg30。我有一篇文章介紹了分頁技術來擴展地址空間內(nèi)存的訪問方式,文章鏈接。
特殊功能寄存器各位含義如下:
我們知道用來尋找頁的頁配置寄存器的地址是reg20,感到慶幸的是這個寄存器的默認值是0x0010,也就是16,正好在特殊寄存器所在的頁,因此我們可以不必設置頁就可以訪問特殊寄存器,因此就當一個地址為reg30的普通寄存器就可以了。
我們在已經(jīng)完成LAN8720A驅(qū)動的程序上直接修改(這種程序幾乎對任何MCU都有現(xiàn)成的移植程序),其實IP101GR和LAN8720是差不多的,只是PHY特殊功能寄存器有區(qū)別,因此對于已經(jīng)實現(xiàn)LAN8720驅(qū)動的程序,只需要稍微改一下寄存器就可以直接驅(qū)動IP101GR。通過修改程序來適配IP101GR,最后的程序配置如下:
- BCR寄存器、BSR寄存器不需要修改。
- 特殊寄存器修改如下:
#define PHY_SR 30U /*!< tranceiver status register */
#define PHY_SPEED_STATUS ((uint16_t)0x0001) /*!< configured information of speed: 10Mbit/s */
#define PHY_DUPLEX_STATUS ((uint16_t)0x0004) /*!< configured information of duplex: full-duplex */
其它的不用修改。
6. 附加:IP101GR和GD32F450引腳連接情況
因為我是用的是GD32F450來驅(qū)動IP101GR,因此順道將我的連線圖貼出來。文章來源:http://www.zghlxwxcb.cn/news/detail-403082.html
IP101GR支持MII和RMII兩種方式驅(qū)動,當我們采用RMII方式,下面是mcu和PHY引腳連接:文章來源地址http://www.zghlxwxcb.cn/news/detail-403082.html
功能 | IP101GR對應引腳編號 | mcu對應引腳 | 描述 |
---|---|---|---|
50M_CLKI | 10 | PA1 | 50M時鐘線,無論采用那種時鐘方式,這兩個引腳必須相連 |
50M_CLKO | 14 | 當PHY芯片掛載25M時鐘,此引腳為50M時鐘輸出和50M_CLKI相連。 當X1接地,則采用外部提供50M時鐘,此引腳不需要引出。 |
|
50M_CLK | PA8 | GD32F4的PA8引腳可以配置輸出50M時鐘,當X1接地,采用外部提供50M時鐘方式,可以讓這個引腳和50M_CLKI和PA1相連,為PHY芯片和RMII提供時鐘。 | |
MDIO | 23 | PA2 | |
CRS_DV | 19 | PA7 | |
TXEN | 5 | PB11 | |
TXD0 | 9 | PB12 | |
TXD1 | 8 | PB13 | |
MDC | 22 | PC1 | |
RXD0 | 18 | PC4 | |
RXD1 | 17 | PC5 | |
RST | 32 | 拉高使能IP101GR芯片 |
到了這里,關于GD32F450以太網(wǎng)(2-2): PHY芯片IP101GR介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!