其實開發交換機並不困難,Realtek 有全系列的交換機產品方案,包括 RTL8367S-CG(5+2)/RTL8367RBI-VH-CG(5+2)/RTL8370MB(8+2) 10/100/1000M交換機,高端的還有萬兆交換機。
本文以 RTL8367S-CG作為主晶片作為說明。
1. 首先了一下 RTL8367S的外部接口
由上圖我們可以看到 RTL8367S-CG 可以直接引出 5個RJ45接口,另外還有2個擴展接口,所以叫 5+2,通過擴展接口可以與SOC連接,讓SOC可以與多個網絡設備進行通信,也可以通過擴展接口來與PHY 進行連接,這樣可以實現把交換機埠最大擴展到7個。
這裡需要注意的是GMAC1 支持SGMII/HSGMII,可以通過這個接口擴展光口或接SOC,也可以接支持SGMII的PHY等,GMAC2 支持MII/RGMII , 可以接SOC 或PHY.
如果想設計交換機應用,可以參考 Realtek 的 HDK , 能比較容易的進行開發。
2. 根據Realtek 的參考設計(HDK)進行開發
原理設計時一定要嚴格以Realtek參考設計為準,注意以下幾點:
A. 電源的網絡標號要與Realtek原廠的HDK中的一致,交換機的電源網絡標號比較多,包括 AVDDH,AVDDL,DVDDL,DVDD09,DVDDIO,DVDDIO2,DVDDIO_2等,每路電源都有具體用途,建議不要輕易改名字。
B. LED 的引腳大部分帶有配置功能,一定先設計好strapping,可以上拉,下拉,能進行配置, 再去設計LED顯示部分
C. 對於RGMII 如果引腳不使用,可以考慮輸出引腳懸空,輸入引腳接地,輸入輸出的區分請參考 datasheet
D. 如果通過RGMII/SGMII 與對端連接,一定注意方向,做到交換機的輸出引腳接對端設備的對應的輸入引腳,建議設計原理時在原理上就標出引腳方向,這樣不容易出錯
3. PCB設計相關說明
PCB 的設計注意項比較多,包括布局及走線,建議開發時,與我們聯繫,我們會與Realtek原廠一起對咱們的PCB 進行把控。
下圖是本人據參考設計業餘時間做的交換機Demo板,由於時間關係,PCB 走線部分做得並不細緻,有些地方也沒有嚴格按PCB走線要求做,但是交換機功能仍穩定可靠,這也說明Realtek的晶片對PCB的要求也沒有那麼苛刻(不過我們建議做產品還是要嚴格按要求設計),實現基本功能還是比較容易的。
4. 調試說明
A.先要測量電源電壓是否正確
B.檢查各個配置引腳是否正確
C. 交換機默認就是可以工作的,可以先不用加載API
D. 在API調通之前,一定先把配置引腳 LAN1LED0 / EN_PHY: Pull Up: Enable embedded PHY. 拉高后使能 PHY,這樣交換機如果硬體沒有問題,且配置正確的情況下肯定是可以工作的, 然後把交換機的埠插上網線,對端
連接電腦,並看電腦端的網絡狀態,就可以判斷出交換機是否已經正常工作,如果電腦識別不到,請檢查硬體
5. 軟體說明
void rtl83xx_switch_linkcheck ( void )
{
int i;
rtk_api_ret_t ret;
rtk_port_linkStatus_t LinkStatus;
rtk_port_speed_t Speed;
rtk_port_duplex_t Duplex;
printf ( "\r\n\r\n------------------------------------------------------" );
for ( i=UTP_PORT0; i<UTP_PORT5; i++ )
{
ret = rtk_port_phyStatus_get ( i, ( rtk_port_linkStatus_t* ) &LinkStatus, ( rtk_port_speed_t* ) &Speed, ( rtk_port_duplex_t* ) &Duplex );
printf ( "\r\n Port:%d , LinkStatus:0x%x, Duplex:0x%x",i,LinkStatus, Duplex );
}
printf ( "\r\n------------------------------------------------------\r\n" );
}
當我們在一個網口插上網線的時候,系統列印出對應埠的連接狀態 LinkStatus: 0x01 , 當再取下網線時, 系統會列印出對應的埠的狀態: LinkStatus: 0x00 , 通過上面的代碼我們就可以監控每個埠的 Link狀態,對做更智能的應用,打好基礎。到此這個交換機的功能是不是已經比普通的交換機強大了呢,是不是心動呢?
參考來源