CH32V307 內(nèi)置 10 M PHY 自動協(xié)商

????你好,這邊移植 TCP/IP 協(xié)議棧時,發(fā)現(xiàn)一個問題,在網(wǎng)線一直插入的情況下,通過 BMCR 重啟自動協(xié)商后,功能異常。


????手動啟動協(xié)商后,ALPAR 以及 PHYSR 不能正確指示工作狀態(tài)(通過對端網(wǎng)管交換機可以看到鏈路工作狀態(tài),但是與 ALPAR 以及 PHYSR 指示的狀態(tài)不匹配),測試外置 PHY 沒有該問題,請教該如何處理


注一:網(wǎng)線未插拔,手動啟動協(xié)商狀態(tài)異常

注二:手動啟動協(xié)商時,如果手動插拔一下網(wǎng)線,ALPAR 及 PHYSR 正常,但再次手動啟動協(xié)商時異常

注三:PHY 狀態(tài)管理使用定期輪詢方式,未使用 PHYLINK 中斷

注四:現(xiàn)在我的解決方案是 HOOK 了 ETH_WritePHYRegister() 這個函數(shù),當檢測到 BMCR 寫入自動協(xié)商命令時,強制關閉 10M PHY 時鐘并等待一段時間以后,再次開啟該時鐘,也就是實際上不執(zhí)行手動自動協(xié)商命令,短暫測試方案可行,不知道有沒有隱患。


測試代碼如圖:

????for?(?;;?)?{
??????printf?("PHY:\r\n");
??????uint16_t?BMCR??=?ETH_ReadPHYRegister?(1,?0x00);
??????uint16_t?BMSR??=?ETH_ReadPHYRegister?(1,?0x01);
??????uint16_t?ALPAR?=?ETH_ReadPHYRegister?(1,?0x05);
??????uint16_t?PHYSR?=?ETH_ReadPHYRegister?(1,?0x10);
??????uint16_t?MDIX??=?ETH_ReadPHYRegister?(1,?0x1E);

??????printf?("?BMCR:?%04X\r\n",?BMCR);
??????printf?("?BMSR:?%04X\r\n",?BMSR);
??????printf?("ALPAR:?%04X\r\n",?ALPAR);
??????printf?("PHYSR:?%04X\r\n",?PHYSR);
??????printf?("?MDIX:?%04X\r\n",?MDIX);

??????vTaskDelay?(1000);

??????printf?("Restart?Auto-Negotiation\r\n");
??????ETH_WritePHYRegister?(1,?0x00,?BMCR?|?0x0200);

??????vTaskDelay?(5000);
??????BMCR??=?ETH_ReadPHYRegister?(1,?0x00);
??????BMSR??=?ETH_ReadPHYRegister?(1,?0x01);
??????ALPAR?=?ETH_ReadPHYRegister?(1,?0x05);
??????PHYSR?=?ETH_ReadPHYRegister?(1,?0x10);
??????MDIX??=?ETH_ReadPHYRegister?(1,?0x1E);

??????printf?("?BMCR:?%04X\r\n",?BMCR);
??????printf?("?BMSR:?%04X\r\n",?BMSR);
??????printf?("ALPAR:?%04X\r\n",?ALPAR);
??????printf?("PHYSR:?%04X\r\n",?PHYSR);
??????printf?("?MDIX:?%04X\r\n",?MDIX);
????}

測試結果如圖


啟動協(xié)商過程中插拔一次網(wǎng)線

1716946755191595.png


啟動協(xié)商過程中,保持網(wǎng)線一直有效連接

1716946755649699.png


您好,您的處理方式是沒有什么問題的,主要問題在于對端有概率把我們發(fā)的協(xié)商包當作數(shù)據(jù)包,導致對端不會發(fā)協(xié)商包,此時307也不會獲取到對端的協(xié)商能力,因此ANLPAR為0,如有其他問題可郵箱溝通(zl@wch.cn)。


好的


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频