SJA1105系列芯片基本配置說明

SJA1105系列芯片内部Memory Mapping

SJA1105/T/P/Q内部的配置分成4個部分,功能分别如下:

  • ETH_DYN/ETH_STATIC:和數據交換相關的所有配置,包括端口工作模式,端口速率,VLAN,Mirror……等等

  • CGU:SJA1105内部各端口工作時鐘相關的配置

  • RGU:軟體復位

  • ACU:和芯片内部Pad驅動相關的配置

註: 對SJA1105進行配置是Host通過SPI接口對CORE和CGU/ACU部分進行寄存器做寫的操作,未配置的SJA1105無法正常工作。

CGU/ACU部分的配置

這部分的配置詳細寫在SJA1105P/Q/R/S  Application Hints ( AH1704)中,客户可以根據各端口的具體工作模式查找到AH1704對應的部分。

SJA1105有5個互相獨立的Port,每一個Port都可以配置工作成MII/RMII/RGMII工作模式中的一種(但SJA1105R/S的Port4只能配置為SGMII),其中MII和RMII又分為MAC mode和PHY mode兩種狀態,RGMII只有一種工作模式,不分MAC/PHY模式。

  • CGU/ACU部分的配置--MII模式
    MII MAC mode:

                 這種模式用於SJA1105 的Port配置成MII模式之後去接PHY(比如TJA1100,TJA1102或其他標準乙太網PHY),只要SJA1105 的某個Port配置成MII 

                 mode並接了PHY芯片,肯定是工作在MII MAC mode。

  MII PHY mode:

                 這種模式用於SJA1105的Port配置成MII模式去接MCU/SoC MAC,會使用TX<->RX 交叉的接法,此時TX_CLK和RX_CLK 這兩個25MHz clock均需要由
                  SJA1105来提供,這就需要把SJA1105的這個Port配置成MII PHY mode。

  • CGU/ACU部分的配置–RMII/RGMII/SGMII模式

RMII MAC mode:

                 這種模式用於SJA1105 的Port配置成RMII模式並輸出50MHz REF_CLK,可以用於接PHY(如TJA1100,TJA1102),也可以用於接MCU/SoC。

RMII PHY mode:

                  這種模式用於SJA1105的Port配置成RMII模式,但50MHz REF_CLK是由外部輸入,用於接MCU/SoC(須確認MCU/SoC有輸出50MHz REF_CLK的能力)

RGMII mode:  無MAC/PHYmode的區別

SGMII mode:  無MAC/PHYmode的區別

  • CGU/ACU部分的配置–AH1704暫存器配置

       根據以上確認了各Port的工作模式之後,在AH1704中找到對應的暫存器值進行配置。 

        例如:SJA1105,Port0工作在MII MAC mode,在AH1704中查到對應的表格

Port2工作在RMII MAC mode, 在AH1704中查到對應的表格,要注意的是,即使只有一個Port用到了RMII-MAC mode, General PLL1 也需要按下圖去寫入。

RGMII相关寄存器配置

SJA1105的RGMII配置中不分MAC mode和PHY mode,只需要確認RGMII實際連接速度。一般來說 , 和SoC或2個Switch連結會用到1Gbps。RGMII支持1G/100M/10M 3種速度等级,使用者可參考AH1704來設定相關暫存器。

配置SJA1105 腳本的Python script - sja1105x_tools :

我們將下載下來的sja1105x_tools解壓縮後,可以看到下面幾個資料夾:

 

. simple.py  - 針對SJA1105做最基本配置

. simpleT.py - 針對SJA1105T做最基本配置

. simplePQRS.py - 針對SJA1105PQRS做最基本配置

. examplePQRS.py - 針對SJA1105PQRS包含交換策略和流量控制的配置

. examplePQRS_TSN.py - 在上面基楚上增加了TSN功能的配置

. converter.py – 將Hex文件轉換成C language的工具

CORE部分的配置程序如下:

Step1: 最基本端口配置 - 端口速率

端口工作模式在py脚本的MII Mode Control Parameters部分,mii_mode_parameters.append從上到下依序是Port0-4,每個端口有配置工作模式(MII/RMII/RGMII/UNUSED/SGMII)以及MAC还是PHY mode。可以根據實際電路連接模式和工作方式來進行對應的配置設定。

Step2:CORE部分的配置文件的生成

完成以上兩個步驟後,SJA1105就可以進行最基本的數據交換功能。

接下來要生成符合CORE部分 數據格式的程式碼:

1.生成Hex檔名:


將修改後的py文件另存為一個檔名(例如Test.py),從原本的 py文件中可以看到執行這個py文件後,會分别產生2個Hex 檔名,一個是針對QS芯片版本,一个是针对PR芯片版本(由於SJA1105配置時會驗證芯片ID,所以這兩個文件中包含的ID是不一樣的)。如下圖,從Test.py文件產生了2個Hex文件分別為Test_SJA1105PR.hex 和Test_SJA1105QS.hex。  
            

2.Hex文件轉換成C Language:
在converter.py的最後一行,去掉前面的註解標示,create_c_code後就會編輯需要轉換的hex檔名和生成的.c 副檔名。執行converter.py 後即可產生對應的C code。

Step3:CORE部分配置加偏移地址操作

完成以上兩個步驟後,SJA1105就可以進行最基本的數據交換功能。

這邊的端口設定包含了完整的Core部分數據,也就是從DeviceID開始的所有數據。再把這些數據放到SPI接口上的時候,需要加上從0x20000開始的偏移地址,如下圖所示:

最後補充需要準備的基本資料:

1.配置SJA1105 腳本的Python script:

sja1105x_tools :

https://www.nxp.com/webapp/Download?colCode=SJA1105X_CONFIG-GENTOOL&appType=license

2.Python環境:

可至www.python.org下載Python環境,目前配置工具支持的Python版本為(>=2.6, <3)

3. Application Hints  : AH1704,描述SJA1105P/Q/R/S内部時鐘的具體寄存器配置。

https://www.nxp.com/webapp/Download?colCode=AH1704

技術文檔

類型標題檔案
軟件SJA1105X_CONFIG-GENTOOL

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能

參考來源

Kevin Zhu IVN FAE, GC: http://www.nxp.com