日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【KSZ8863】KSZ8863交换机芯片的信息汇总与打板验证结果

發布時間:2023/12/31 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【KSZ8863】KSZ8863交换机芯片的信息汇总与打板验证结果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提

對STM32雙網口實現的方案的繼續探究,比較多見的都是

  • W5500
  • DM9000
  • ENC28J60
  • 通過研究,我還發現了一類比較少見但是靈活的方案
    交換機芯片
    也就是本文提到的這個KSZ8863

    一顆LQPF48腳的3口10/100M的以太網交換芯片

    目前(21年9月份)在立創上的價格是:

    簡單說就是這芯片就實現了一個三口管理型交換機…而且價錢還算比較OK,當然現在疫情的原因,買不到/要訂貨啥的我也不意外。

    最新進展

    總結下:

    也算是給自己一個交代了,不想搞了,不知道SPI的配置功能到底為啥不行~~

    22年6月底第二次打板
    4. 22年6月底第二次打板,我重新再認真讀了官方模塊的手冊和數據手冊,改了下原理圖,SPI還是類似的現象,還是讀不出…嗚嗚嗚
    相較上一版本,加了一個LDO,優化走線布局,認真的理了理SPI部分的走線,結果還是讀不出來,真的是很無奈~~~

    這次讀出來的不是FF了,好像是主機發什么,它就返回什么,02指令和03指令都試了
    拋開這個配置,交換機本身的功能是可以的,這個沒啥好說,這次打板PCB沒有改這部分。。。



    22年2月第一次打板

  • 網絡似乎是能夠通信上(脫開開發板,2個口與電腦雙向PING通(普通交換機功能),接上開發板的RMII接口,開發板通過 RMII接口可以與電腦正常網絡通信,兩個口單獨使用都可以,但是兩個口一起插網線,驅動掛了,可能要改驅動(驅動基于LAN8720))
  • SPI配置功能沒調通,RMII接口讀PHY的信息都讀不到,不知道原因,但是網絡通信卻是正常的.
  • 驅動可能要研究下LWIP多個網卡怎么搞?

  • 疑點1-RMII接口

    似乎原生驅動LAN8720的程序好像沒有使能MDIO這個外設??那LAN8720是如何在僅僅初始化了RMII接口之后獲得到PHY相關的信息的了?

    看H743的手冊,我好像有點明白了~~~
    H743的網絡接口有三種
    a) RMII(目前用的)
    b) SMA(站管理模式)
    c) MII

    SMA接口就是需要使用MDIO和MDC數據線傳輸數據的方式與PHY芯片通信的

    通信的數據幀格式和交換機芯片的一致

    這個是可以設置時鐘的

    在RTT LAN8720驅動代碼里,確實找到了這樣一句HAL驅動函數的調用

    void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth) {uint32_t tmpreg, hclk;/* Get the ETHERNET MACMDIOAR value */tmpreg = (heth->Instance)->MACMDIOAR;/* Clear CSR Clock Range bits */tmpreg &= ~ETH_MACMDIOAR_CR;/* Get hclk frequency value */hclk = HAL_RCC_GetHCLKFreq();/* Set CR bits depending on hclk value */if((hclk >= 20000000U)&&(hclk < 35000000U)){/* CSR Clock Range between 20-35 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV16;}else if((hclk >= 35000000U)&&(hclk < 60000000U)){/* CSR Clock Range between 35-60 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV26;}else if((hclk >= 60000000U)&&(hclk < 100000000U)){/* CSR Clock Range between 60-100 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV42;}else if((hclk >= 100000000U)&&(hclk < 150000000U)){/* CSR Clock Range between 100-150 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV62;}else /* (hclk >= 150000000)&&(hclk <= 200000000) */{/* CSR Clock Range between 150-200 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV102;}/* Configure the CSR Clock Range */(heth->Instance)->MACMDIOAR = (uint32_t)tmpreg; }

    似乎目前HAL庫里面是關聯了HCLK時鐘的

    有沒有可能是因為芯片的HCLK時鐘設置的比較高,導致對應這個MDIO的時鐘設置的過高(超過了5MHz)導致訪問交換機芯片讀出的內容都有問題 。
    應該不是的,用 LAN8720的驅動打斷點看了函數的執行
    HCLK 200Mhz, 它是走了CSR/102這個分支,對應算下來MDC時鐘應該不超過3MHz,應該是沒有超過5Mhz的上限。


    或者說還有一種可能

    因為LAN8720是使用RMII接口驅動。 實際上RMII接口下,MDIO實際上并沒有使用,也沒有初始化呢,導致讀取的值都是異常值?
    應該不會,因為LAN8720的網線斷開插入后重新連接應該是會用到MDIO查詢PHY的,不可能RMII接口不聯動這個MDIO,不然這個重新連接怎么實現的呢?


    單獨做了一個只有MDIO接口的工程,嘗試讀了,也是讀不出來.


    疑點3-SPI接口

    難道SPI驅動那里驅動沒調好???

    再次用CubeMx單獨做了個15MHz/7.5MHz的SPI4接口(模式0和模式3)的工程分別試了試
    用邏輯分析儀抓了通信,讀出來都是FF

    跟它提供的多字節讀的波形應該對的上呀,但是讀不出來?

    難道說SPI接口的線和板子的電源層短路了,所以被拉高?
    這個也拿萬用表量了引腳和VCC,也沒有短路,引腳也是通到了座子上的
    上次調也有試過下掉MISO/MOSI這兩條上拉電阻,拿USB轉SPI儀器去讀,也是讀不出來,全是FF

    看來是無解了


    原理圖,送給大家(這個要積分哈),雖然有點問題,但是單純做交換機本身還是可以用的
    說不定有大佬能夠搞明白哪里畫的不對,能夠解決上面的問題

    自己畫的原理圖


    22.2.25
    ?1. spi讀不到任何數據,全是ff,手冊說要用模式0或者3來讀,都試了,也換了SPI頻率,都是一樣,讀不出任何東西,都是FF。

    試了12M,24M的SPI頻率都不行,都是讀出來都是FF(這里忘記截圖了,現象很奇怪)

    指令說是"3"是數據讀,"2"是數據寫
    但是它下面給 的波形圖,好像又不是這樣的,“2”和"3"我都試過了,都不行…

    讀和寫都是"2"???

    板子這邊我也是參考這個官方核心板的原理圖上的說法做的
    SPI接口: P2LED1不用下拉(NG不貼),P2LED0.1K下拉到地

    SPI接口: P2LED1不用下拉(NG不貼),P2LED0.1K下拉到地


    手冊也說,配置模式,就是上電,復位完畢時候讀取這兩引腳的狀態,決定配置的方式。

    反正就是啥也讀不出,不知道為啥…

    ?2. 網絡部分,rtt的lan8720驅動把讀軟復位的功能去掉之后,網絡是通的,只要不同時兩個口插網線,只要插了雙網線,驅動會有問題(問題 可能是原來只注冊了一個網卡,兩個網卡同時在的話,它就會有異常了).

    雙向ping都是通的,但是用mdio口讀芯片的phy寄存器信息全部是FFFF…有點懷疑是不是芯片有問題(X寶買的,目前X寶有賣,立創買不到,沒辦法),原來給LAN8720配PHY地址原來是0,然后試過1,2,3,好像都可以ping的通,網絡也是正常的**(按手冊描述,應該是3才對(3對應的是RMII接口),1和2是它外擴的RJ45)**。


    22.2.23
    半年工作比較忙,終于有空把所有信息整合,畫原理圖,PCB,打樣,把初版核心板制作出來了

    后期如果調通完,我就放出原理圖

    先曬下效果。。
    先是板子,我引出了RMII接口和SPI管理接口和電源接口
    唯一小遺憾的是應該加一個LED電源指示燈,因為它上電以后,不插網線的情況下,是沒有任何反應的

    插上網線的效果(一頭接交換機,一頭接PC)

    PC端顯示網絡正常(100M),網絡通信也是正常的!!因為我是在內網環境下,我試著訪問了內網的一個服務器也是正常的。


    芯片信息匯總

    (我會提供這些收集到的文檔和資料在我的csdn,不要積分下載):
    https://download.csdn.net/download/tpoem/21883787

    手冊在微芯官網上可以查

    原理框圖大概是這樣的

    一共三個MAC,兩個PHY。
    其中MAC3是可以通過RMII/MII接入處理器或者PHY芯片的[手冊24頁],它下面也附錄了接的方法

    MII/RMII的解法

    microchip收購了micrel這個牌子,所以KSZ系列芯片以前是這個公司的

    接PHY或者MAC的方法


    接的時候也有一些坑的地方
    注意看這個表格,Clock Source那里,有特殊的接線的描述

    關于RX_ER的問題

    它這個芯片沒有提供EX_ER信號出,它自身過濾了錯誤幀,它有特殊的做法

    關于MII 管理幀格式和SMI管理幀格式

    MII管理幀格式如下(這個就是芯片提供的MII/RMII接口的那個MDC/MDIO的通信協議)

    看H743的描述理論上應該式可以用MDIO與交換機通信的
    但是交換機芯片對MDIO時鐘有限制(最大5MHz)

    關于供電

    這個芯片需要3.3V+1.8V供電(這個芯片內置1.8V LDO),它1.8V的引腳有特殊接法【磁珠隔離數字電源和模擬電源】

    這個在微芯官方的8863模塊(它是RMII接口輸出的)上也有體現
    來源于這個文檔

    關于網絡變壓器和網口選擇

    上面這個官方模塊用的是一個帶隔離變壓器的雙口RJ45座子,手冊和它官方的原理圖上都提供了推薦網絡變壓器選型,至于RJ45座子,這個可能要采取類似于官方模塊這種變壓器構型的或者無變壓器的座子吧

    其中這個型號立創上有賣,還挺多貨,可以!!

    關于配置交換機的功能

    芯片支持必要的網管功能,可以通過SPI/SMI/I2C配置,還可以將配置寫到一片外部的EEPROM(24Cxx)上,實現配置信息自動加載,無管理交換機的功能。

    芯片上電啟動或者復位后的時候會優先從外部EEPROM讀配置信息,然后引腳恢復成其他功能。
    或者直接用I2C讀芯片的所有寄存器

    關于外部EEPROM的配置信息如何制作

    這里參考這個鏈接,官方其實做了一個小工具
    EEPROM的配置信息制作

    總結

    以上是生活随笔為你收集整理的【KSZ8863】KSZ8863交换机芯片的信息汇总与打板验证结果的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。