衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于MM32F3270以太網UDP使用

jf_pJlTbmA9 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-09-27 15:42 ? 次閱讀

UDP(User Datagram Protocol用戶數據報協議)是一種無連接、不可靠的協議。UDP協議沒有流控制,沒有應答確認機制,不能解決丟包、重發、錯序問題。它只是簡單地實現從一端主機到另一端主機的數據傳輸功能,數據通過IP層發送,在網絡中傳輸,到達目標主機的順序是無法預知的,因此需要應用程序對這些數據進行排序處理。在發送端,UDP只是把上層應用的數據封裝到UDP報文中;在差錯檢測方面,僅僅是對數據進行了簡單的校驗,然后將其封裝到IP數據報中發送出去。在接收端,無論是否收到數據,都不會產生一個應答返回送給源主機。如果接收到數據校驗錯誤,接收端丟棄該UDP報文,也不會告訴源主機,這樣數據是無法保障其準確性的。但是在如今的網絡環境下,UDP協議傳輸出現錯誤的概率很小,并且它的實時性是非常好,常用于實時視頻的傳輸,比如直播、網絡電話等,即使是出現了數據丟失的情況,導致視頻卡幀,也不會產生大的影響。UDP被廣泛應用于與對傳輸速度有要求,并且可以容忍出現差錯的數據傳輸中。

對于UDP通信來說,可以沒有服務器,服務器只是一種規定。主動發送的一方為客戶端,被動接受的一方為服務器(下圖為通信過程,程序也是按照這個步驟進行設計)。

pYYBAGIB1_6AcQFGAABvU9Hnrk0567.png

實驗使用MB-039開發板,在工程中使用LwIP+FreeRTOS,實驗展示如何實現UDP數據收發,實驗使用到的硬件如下:

poYBAGIB1SyAHYynAAG39uXw7q0489.png

如圖是MB-039(完整原理圖可以通過MM32官網下載)的ETH部分接口電路。

各個信號引腳對應如下:

pYYBAGIB1S6AEqaVAAAOapdym_Y980.png
poYBAGIB1TGAFwREAAi12qR49zc411.png

實驗用到的API前面幾節已經進行了講解,我們直接創建UDP工程:

static void udpecho_thread(void* arg)
{
    struct netconn* conn;
    struct netbuf* buf;
    char buffer[4096];
    err_t err;
    LWIP_UNUSED_ARG(arg);

    conn = netconn_new(NETCONN_UDP);        // (1)
    netconn_bind(conn, IP_ADDR_ANY, LOCAL_PORT);   // (2)

    while (1) {
        err = netconn_recv(conn,  buf);          // (3)
        if (err == ERR_OK) {
            if(netbuf_copy(buf, buffer, sizeof(buffer)) != buf->p->tot_len) {   // (4)
                LWIP_DEBUGF(LWIP_DBG_ON, ("copy failedn"));
            }
            else {
                buffer[buf->p->tot_len] = '?';
                err = netconn_send(conn, buf);                 // (5)
                if(err != ERR_OK) {
                   LWIP_DEBUGF(LWIP_DBG_ON, ("netconn_send failed: %dn", (int)err));
                }
                else {
                    LWIP_DEBUGF(LWIP_DBG_ON, ("got %sn", buffer));
                }
            }
            netbuf_delete(buf);
        }
    }
}

1)創建一個UDP類型的連接結構

2)綁定IP地址與端口

3)接收客戶端發送的數據(值得指出的是UDP可以一對一,也可以一對多以廣播的形式發送)

4)拷貝出接收的數據

5)將數據發送給目標主機

到這里已經完成了工程的創建,看一下PC的IP地址,設備需要處于同一網段,以方便測試。打開命令行窗口輸入:ipconfig

pYYBAGIB1TOARaWcAAEnlBhO5H8936.png

PC的地址為:192.168.105.34,在sys_arch.h文件中對DEST_IP_ADDR0 、DEST_IP_ADDR1、DEST_IP_ADDR2、DEST_IP_ADDR3進行修改,DEST_PORT 隨意修改。

#define LOCAL_PORT                 2021

#define IP_ADDR0                    192
#define IP_ADDR1                    168
#define IP_ADDR2                    105
#define IP_ADDR3                    35

將程序下載入開發板中,使用NetAssist進行如下設置:

1)協議設置,選擇UDP

2)本機主機地址(即PC地址)

3)端口號

4)設置遠程主機地址(即設備地址)

poYBAGIB2BKAIoNjAAFIBTLd7ms959.png

點擊打開,在進行這一步前可以則Ping一下開發板地址,可以正常Ping通則檢查端口號;如果無法Ping通則需要對工程進行檢查。任意輸入字符進行發送。

pYYBAGIB2BSAa2rHAAHr1QEK3V0662.png

可以發現對接收到的數據進行了正確的轉發,我們也可以使用Wireshark進行監視抓取整個過程,選擇IP過濾:ip.addr==192.168.105.35。

pYYBAGIB2BaAe7FBAAO0qJYw_WE985.png

通過上圖表明實驗成功。

實驗程序請登錄我們的官網下載MM32F3270 SDK,工程路徑如下:

~MM32F3270_Lib_Samples_V0.90Demo_appEthernet_DemoETH_RTOSFreertos_UDP

來源:靈動MM32MCU

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17317

    瀏覽量

    352640
  • 服務器
    +關注

    關注

    12

    文章

    9303

    瀏覽量

    86061
  • UDP
    UDP
    +關注

    關注

    0

    文章

    327

    瀏覽量

    34043
收藏 人收藏

    評論

    相關推薦

    靈動微課堂 (第184講) | 基于MM32F3270 以太網 UDP使用

    _Lib_Samples_V0.90\Demo_app\Ethernet_Demo\ETH_RTOS\Freertos_UDP我們下節的題目為《基于MM32F3270以太網Client的使用》。
    發表于 10-18 11:13

    MM32F3270系列32位MCU的特點有哪些

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 11-03 07:20

    靈動微電子MM32F3270系列MCU的特點介紹

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 03-22 16:57 ?2191次閱讀

    【國產MCU移植】MM32F3270 EVBoard

    【國產MCU移植】MM32F3270 EVBoard
    發表于 12-03 17:21 ?5次下載
    【國產MCU移植】<b class='flag-5'>MM32F3270</b> EVBoard

    基于MM32F3270 以太網 Client使用

    接下來給大家介紹基于TCP包的通訊。內容分為基于MM32F3270以太網Client的使用與基于MM32F3270以太網Server的使用。
    發表于 02-08 15:10 ?0次下載
    基于<b class='flag-5'>MM32F3270</b> <b class='flag-5'>以太網</b> Client使用

    基于MM32F3270以太網 UDP使用

    UDP協議沒有流控制,沒有應答確認機制,不能解決丟包、重發、錯序問題。它只是簡單地實現從一端主機到另一端主機的數據傳輸功能,數據通過IP層發送,在網絡中傳輸,到達目標主機的順序是無法預知的,因此需要應用程序對這些數據進行排序處理。
    發表于 02-08 15:13 ?0次下載
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b> <b class='flag-5'>UDP</b>使用

    MM32F3270 勘誤表(中文版)

    MM32F3270 勘誤表(中文版)
    發表于 02-23 18:42 ?0次下載
    <b class='flag-5'>MM32F3270</b> 勘誤表(中文版)

    MM32F3270 ADC注入通道

    MM32F3270 ADC注入通道
    的頭像 發表于 09-27 15:59 ?1050次閱讀
    <b class='flag-5'>MM32F3270</b> ADC注入通道

    使用MM32F3270 FSMC驅動OLED

    使用MM32F3270 FSMC驅動OLED
    的頭像 發表于 09-27 15:30 ?1015次閱讀
    使用<b class='flag-5'>MM32F3270</b> FSMC驅動OLED

    使用MM32F3270 FSMC驅動TFT-LCD

    使用MM32F3270 FSMC驅動TFT-LCD
    的頭像 發表于 09-27 15:34 ?1135次閱讀
    使用<b class='flag-5'>MM32F3270</b> FSMC驅動TFT-LCD

    基于MM32F3270以太網HTTP使用

    基于MM32F3270以太網HTTP使用
    的頭像 發表于 09-27 15:48 ?608次閱讀
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b>HTTP使用

    基于MM32F3270以太網Server使用

    基于MM32F3270以太網Server使用
    的頭像 發表于 09-27 15:46 ?541次閱讀
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b>Server使用

    基于MM32F3270以太網Client使用

    基于MM32F3270以太網Client使用
    的頭像 發表于 09-27 15:44 ?746次閱讀
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b>Client使用

    基于MM32F3270以太網Server_Socket使用

    基于MM32F3270以太網Server_Socket使用
    的頭像 發表于 09-27 15:41 ?505次閱讀
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b>Server_Socket使用

    基于MM32F3270以太網Client_Socket使用

    基于MM32F3270以太網Client_Socket使用
    的頭像 發表于 09-27 15:37 ?577次閱讀
    基于<b class='flag-5'>MM32F3270</b><b class='flag-5'>以太網</b>Client_Socket使用
    德州扑克平台| 百家乐公试打法| 百家乐视频游戏会员| 棋牌真钱游戏| 百家乐平台开户哪里优惠多| 交口县| 新濠峰百家乐的玩法技巧和规则 | 威尼斯人娱乐平台反水| 百家乐官网真人博彩的玩法技巧和规则 | 百家乐软件稳赚| 破解百家乐官网公式| 德州扑克玩法| 澳门百家乐游戏说明书| 百家乐官网英皇娱乐城| bet365公司欧赔| 永康百家乐赌博| 澳门百家乐官网图形| 皇冠开户网| 三公百家乐在线哪里可以玩| 七胜百家乐官网赌场娱乐网规则 | 扬州棋牌中心| 网上百家乐游戏下载| 粤港澳百家乐官网娱乐网| 赌博技术| 百家乐官网双筹码怎么出千| 利博娱乐| 百家乐怎样赢| 百家乐最佳投注法下载| 赌场百家乐官网破解| 蜀都棋牌游戏| 百家乐谁能看准牌| 百家乐官网麻将筹码币镭射贴膜 | 太阳城娱乐网址| 网上百家乐赌博犯法吗| 真人百家乐官网蓝盾娱乐网| 百家乐官网游戏类型| 大发888 登陆不上| 百家乐赌场赌场网站| 澳门百家乐官网游戏官网| 银泰百家乐官网龙虎斗| 安徽省|