在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32以太網(wǎng)MAC Loopback的實現(xiàn)

            STM32以太網(wǎng)MAC Loopback的實現(xiàn)

            作者: 時間:2024-04-16 來源: 收藏

            調(diào)試中經(jīng)常會遇到“設(shè)備接收不到數(shù)據(jù)”,或者“設(shè)備發(fā)出的數(shù)據(jù)對端設(shè)備收不到”之類的問題。遇到這類
            問題首先要做的是定位問題發(fā)生的部位,這樣做的好處就是可以指明下一步調(diào)試的方向,縮小分析的范圍。以下圖為例我們
            做個簡單的說明,設(shè)備 A 和設(shè)備 B 通過通信,現(xiàn)發(fā)現(xiàn)設(shè)備 B 無法接收設(shè)備 A 發(fā)送的消息,問題可能出現(xiàn)在幾個地方:
            ? 應(yīng)用層的程序,或者協(xié)議棧出錯,數(shù)據(jù)根本沒有到 外設(shè)。這種情況我們在調(diào)試的時候,在以太網(wǎng)輸出
            函數(shù) low_level_output 中打個斷點就可以檢查出來。
            ? 以太網(wǎng) MAC 出現(xiàn)問題,沒有把數(shù)據(jù)發(fā)送出去。對于這種情況,可以通過 STM32 以太網(wǎng)的 MAC loopback 功
            能來檢查 MAC 的收發(fā)是否正常。
            ? STM32 以太網(wǎng) MAC 和外部 PHY 之間的通信出現(xiàn)問題。可以通過 PHY 提供的 loopback 功能來檢查。
            ? 設(shè)備 A 端的收發(fā)沒有問題,問題可能出現(xiàn)在線路上或者設(shè)備 B。可以通過在網(wǎng)口的接線上做網(wǎng)線交叉,也就是將 RJ-
            45 接口中 TX+與 RX+連接,TX-與 RX-連接,來進行檢查。

            本文引用地址:http://www.biyoush.com/article/202404/457680.htm

            1713244810621896.png

            本文將主要介紹上面提到的 STM32 MAC loopback 方法。
            MAC loopback 模式
            MAC loopback 模式的使能很簡單,將 ETH_MACCR 寄存器的 LM 位置位就可以了。
            MAC loopback 模式使能后,MAC 發(fā)送的數(shù)據(jù)幀通過 MII 接口發(fā)送給外部 PHY 的同時也發(fā)送到 MAC 接收端。這里需要注意的是 STM32 MAC loopback 模式只支持在 MII 接口下工作.

            1713244852408828.png

            但要正確的接收到 loopback 的數(shù)據(jù),還需要注意一下幾個地方:
            ? MAC loopback 模式下,MII 接口的接收時鐘(RX_CLK)和發(fā)送時鐘(TX_CLK)還需要外部 PHY 來提供,所以
            PHY 的初始化不能省。

            ?以太網(wǎng)幀中的目標 MAC 地址應(yīng)該和源 MAC 地址一樣,或者設(shè)定為廣播地址(FF:FF:FF:FF:FF:FF),否則 MAC 默
            認將會過濾接收到的數(shù)據(jù)?;蛘邔?ETH_MACFFR 寄存器的 RA 置位,以接收所有的以太網(wǎng)幀。
            ? 對于 F7,H7 這類帶有 cache 的 MCU 型號,需要注意接收/發(fā)送描述符和接收/發(fā)送 buffer 的地址,以及 cache 屬
            性。因為這部分存放在 SRAM 的數(shù)據(jù) CPU 和以太網(wǎng) DMA 都會去讀寫,如果使能 cache(回寫)可能會出現(xiàn)數(shù)據(jù)不
            一致的情況。也不能將其定義在 STM32F769 的 DTCM RAM 區(qū)域.

            MAC loopback 例程
            例程說明
            本文基于 STM32F769I-EVAL 板提供了一個以太網(wǎng)外設(shè)測試工程。工程中沒有用到 TCP/IP 協(xié)議棧,只通過 STM32F7 的 HAL驅(qū)動層,實現(xiàn)了以太網(wǎng) MAC 層的數(shù)據(jù)收發(fā),同時也實現(xiàn)了 MAC loopback 的功能。這個測試工程的目的是,檢測 STM32 以太網(wǎng)外設(shè)的配置是否正確,工作是否正常。
            這個例程提供兩種工作模式:
            ? 正常模式
            在這種模式下,可以正常與另一個設(shè)備(PC 或者其他的開發(fā)板)通信,也就是可以發(fā)送和接收以太網(wǎng)幀。用戶可以
            發(fā)送自定義的以太網(wǎng)幀數(shù)據(jù),程序會自動構(gòu)建以太網(wǎng)幀并發(fā)送。因為沒有實現(xiàn)任何 TCP/IP 協(xié)議,如果想發(fā)送 IP 包
            或者 TCP/UDP 包,就需要自己先按照這些包的格式構(gòu)建好數(shù)據(jù)。
            ? MAC loopback 模式
            在這種模式下,STM32F769I-EVAL 板子發(fā)送的數(shù)據(jù)被直接送回到 MII 接口的接收端。如果此時網(wǎng)口還連接到另一個
            設(shè)備的話,該設(shè)備也是可以接收到數(shù)據(jù)的。
            例程配置
            打開例程后,先要做以下的配置:
            ? 設(shè)置目標 MAC 地址(dst_addr)
            如果發(fā)送廣播,dst_addr 設(shè)置為 FF:FF:FF:FF:FF:FF。
            如果在 MAC loopback 模式下,dst_addr 設(shè)置成和 src_addr 一樣。
            ? 定義幀數(shù)據(jù)的類型(frame_type)
            可以發(fā)送自定義的幀數(shù)據(jù)類型,或者通用的預(yù)先定義好的幀數(shù)據(jù)類型。比如,如果發(fā)送的是 IPv4 的數(shù)據(jù),
            frame_type 就是 0x0800;如果發(fā)送自定義的類型,則可以使用未被分配的數(shù)值。在這個 demo 中,用的是
            0x0601。
            ? 初始化要發(fā)送的數(shù)據(jù) buffer
            要發(fā)送的數(shù)據(jù)保存在 teststring 數(shù)組中。請注意,這個數(shù)組里只保存應(yīng)用層要發(fā)送的數(shù)據(jù),也就是以太網(wǎng)幀格式的數(shù)
            據(jù)段,不包括目標/源 MAC 地址,以太網(wǎng)幀數(shù)據(jù)類型和 CRC 校驗碼。
            ? 如果不使能 MAC loopback 功能,則在 main.h 中注釋掉 MAC_LOOPBACK_ENABLE 宏
            修改好以上的參數(shù)后,重新編譯燒錄后運行。
            每次按下 USER 按鍵,觸發(fā)一次數(shù)據(jù)發(fā)送。接收到的數(shù)據(jù)保存在 rxbuffer,并且板子上的 LD1 燈會改變一次狀態(tài)。

            更多內(nèi)容,請您下載全文閱讀



            關(guān)鍵詞: STM32 以太網(wǎng) MAC Loopback

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉