RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用uIP堆棧將MAXQ微控制器聯(lián)網(wǎng)

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-01-11 20:32 ? 次閱讀

本應(yīng)用筆記介紹如何使用uIP TCP/IP網(wǎng)絡(luò)堆棧將MAXQ?微控制器聯(lián)網(wǎng)。常用的SPI?轉(zhuǎn)以太網(wǎng)IC用作此應(yīng)用的MAC/PHY。MAXQ2000作為微控制器示例。

介紹

系統(tǒng)的遠(yuǎn)程監(jiān)測和控制可能是任何微控制器應(yīng)用中最有價值的功能之一。想象一下,一個高爾夫球場的大型草坪噴水滅火系統(tǒng),其中系統(tǒng)應(yīng)向主計算機報告故障。這樣的系統(tǒng)幾乎消除了人工觀察系統(tǒng)正常運行的需要。

許多通信方法,如RS-232串行或紅外,可用于實現(xiàn)該系統(tǒng)內(nèi)遠(yuǎn)程設(shè)備的控制和監(jiān)控。但是,所有這些方法都綁定到涉及不兼容傳輸介質(zhì)和協(xié)議的特定接口,并且距離有限。

以太網(wǎng)互聯(lián)網(wǎng)協(xié)議 (IP)

互聯(lián)網(wǎng)協(xié)議為上述挑戰(zhàn)提供了解決方案。所有現(xiàn)代操作系統(tǒng)都實現(xiàn)了 IP 堆棧。雖然IP可以在各種傳輸介質(zhì)上運行,但以太網(wǎng)是迄今為止最普遍的。此外,由于采用交換和路由網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),以太網(wǎng)不受距離限制。

隨著帶有板載緩沖器的先進(jìn)MAC/PHY集成電路的出現(xiàn),我們可以使用微控制器和以太網(wǎng)IP來控制和收集來自幾乎任何遠(yuǎn)程系統(tǒng)的數(shù)據(jù)。在本應(yīng)用筆記中,我們將演示如何使用免費的uIP堆棧和SPI轉(zhuǎn)以太網(wǎng)IC將MAXQ2000微控制器聯(lián)網(wǎng)。

uIP 簡介

uIP(發(fā)音為“micro IP”)提供了一個最小的IP堆棧,其中包括TCP,UDP和ICMP協(xié)議。uIP由Adam Dunkels開發(fā),并在BSD風(fēng)格的許可證下發(fā)布。

當(dāng)然,對于大多數(shù)應(yīng)用程序來說,完全實現(xiàn) TCP/IP 既沒有必要,也不是謹(jǐn)慎的。uIP 提供了一組功能,可滿足全功能主機的最低要求,并且不需要像其他一些輕量級 IP 堆棧那樣的“特殊情況”例外。

編譯器環(huán)境

用于C的Rowley CrossWorks 1.1 build 1編譯器用于編譯,匯編和鏈接該項目。為了便于調(diào)試,禁用了所有代碼優(yōu)化功能。最終代碼大小僅為MAXQ2000可用程序閃存的一小部分。

MAXQ2000具有2kB的可用數(shù)據(jù)存儲器。我們必須明智地使用此數(shù)據(jù)存儲器,因為必須為處理IP數(shù)據(jù)包內(nèi)容分配緩沖區(qū)。為了優(yōu)化數(shù)據(jù)存儲器的使用,所有常量字符串都存儲在代碼空間中,并根據(jù)需要復(fù)制到固定大小的RAM緩沖區(qū)。

使用 uIP 堆棧

uIP 堆棧可以看作是一個事件循環(huán),其超時基于特定于體系結(jié)構(gòu)的時鐘代碼。在主循環(huán)中,MAC/PHY 接收的任何數(shù)據(jù)包都將由 uip_arp_ipin() 和 uip_input() 處理。這些調(diào)用可能會生成輸出數(shù)據(jù)包,該數(shù)據(jù)包必須由 MAC/PHY 驅(qū)動程序代碼傳輸。

然后檢查計時器以清理一段時間未看到的已關(guān)閉連接和 ARP 表條目,并調(diào)用應(yīng)用程序回調(diào)以進(jìn)行重新傳輸。主事件循環(huán)是樣板代碼,對于大多數(shù)應(yīng)用程序不需要更改。

請務(wù)必注意,uIP 實現(xiàn)的 TCP 窗口大小非常小,因此一次只有一個未完成(未確認(rèn))數(shù)據(jù)包可供處理,并可能重新傳輸。

真正的應(yīng)用程序處理發(fā)生在為UIP_APPCALL定義的函數(shù)中。調(diào)用時,應(yīng)用程序回調(diào)可能會檢查返回 uIP 當(dāng)前狀態(tài)的多個函數(shù)。這些狀態(tài)中最重要的是:uip_connected()、uip_closed()、uip_aborted()、uip_timedout()、uip_newdata()和uip_rexmit()。前四個函數(shù)管理傳入連接的打開和關(guān)閉;后兩個函數(shù)處理傳入和傳出數(shù)據(jù)。

當(dāng)新數(shù)據(jù)到達(dá)套接字供應(yīng)用程序處理時,uip_newdata() 將返回非零結(jié)果。然后,應(yīng)用程序應(yīng)處理數(shù)據(jù)(這些數(shù)據(jù)保存在 uip_appdata 指向的緩沖區(qū)中),并選擇性地返回響應(yīng)。所有數(shù)據(jù)(包括以太網(wǎng)鏈路層和 IP 報頭)都存儲在uip_appdata中。

如果網(wǎng)絡(luò)丟棄返回給對等方的任何部分?jǐn)?shù)據(jù),則應(yīng)用程序回調(diào)將通過計時器超時調(diào)用,uip_rexmit() 將返回非零結(jié)果。

正是在這一點上,uIP 與其他 IP 堆棧不同。通常,TCP 數(shù)據(jù)包重新傳輸由 IP 堆棧處理。uIP 通過要求應(yīng)用程序在顯示 uip_rexmit() 標(biāo)志時重新傳輸丟失的數(shù)據(jù)來節(jié)省內(nèi)存。這種重新傳輸可以通過重新生成數(shù)據(jù)來完成,或者通過將先前生成的數(shù)據(jù)保存在緩沖區(qū)中以進(jìn)行重新傳輸來實現(xiàn)。

MAC/PHY 驅(qū)動程序

要通過以太網(wǎng)傳輸和接收 IP 數(shù)據(jù)報,我們必須向 uIP 提供 MAC/PHY 驅(qū)動程序代碼。API 相當(dāng)簡單:驅(qū)動程序必須發(fā)出信號,表明傳入的以太網(wǎng)幀已準(zhǔn)備好進(jìn)行處理;必須有調(diào)用才能接收數(shù)據(jù)包并在網(wǎng)絡(luò)上傳輸數(shù)據(jù)包。這些調(diào)用在 macphy.c 中實現(xiàn),并從主事件循環(huán)調(diào)用。

對于此應(yīng)用,我們選擇了Microchip ENC28J60 SPI轉(zhuǎn)以太網(wǎng)芯片。此集成 MAC/PHY 可通過 SPI 訪問,并具有 8kB 的數(shù)據(jù)包緩沖存儲器。圖1所示為MAXQ2000與ENC28J60之間的連接。

pYYBAGO-ghyAJas3AAA2UnszbdY614.gif


圖1.原理圖示出了MAXQ2000微控制器與SPI轉(zhuǎn)以太網(wǎng)IC之間的連接。

當(dāng)前實現(xiàn)的 uIP 堆棧假定整個 IP 數(shù)據(jù)報駐留在內(nèi)存中。MAXQ2000具有2kB的數(shù)據(jù)RAM,可能需要用于其他任務(wù),因此將數(shù)據(jù)包從以太網(wǎng)復(fù)制到1500字節(jié)的MTU是不明智的。相反,我們使用最大段大小的 TCP 功能來指定我們不接受超過 500 字節(jié)的段,包括以太網(wǎng)鏈路層和 IP 標(biāo)頭。此段大小為大多數(shù)應(yīng)用程序提供了足夠的吞吐量。此外,我們指示 MAC/PHY 以靜默方式丟棄任何超過 500 字節(jié)的數(shù)據(jù)包。

此項目的示例源代碼包括文件 macphy.c 中的 MAC/PHY 驅(qū)動程序代碼以及關(guān)聯(lián)的包含文件 macphy.h 和 macphy_priv.h。

示例應(yīng)用程序

我們的示例應(yīng)用程序?qū)崿F(xiàn)了在 TCP 端口 23 上偵聽的修改后的回顯服務(wù)器。首先,啟動MAXQ2000的實時時鐘(RTC)進(jìn)行事件定時。然后,我們初始化 SPI 硬件并使用默認(rèn)設(shè)置加載 MAC/PHY。

然后,應(yīng)用從PCB上的1-Wire? DS2502-E48中檢索唯一的以太網(wǎng)硬件地址。必須將此硬件地址通知 MAC/PHY 驅(qū)動程序和 uIP 堆棧。進(jìn)行兩次調(diào)用 macphy_init() 和 uip_setethaddr() 來設(shè)置此信息。

uIP 堆棧通過調(diào)用 uip_init() 進(jìn)行初始化,并設(shè)置編譯的默認(rèn) IP 地址、網(wǎng)絡(luò)掩碼和網(wǎng)關(guān)。

傳入連接完成后,將向?qū)Φ确酱蛴柡蛘Z??蛻舳税l(fā)送的任何文本都以“回顯”方式發(fā)回,除了所有單詞都是逐個字母顛倒的。

仍然有充足的計算資源來執(zhí)行微控制器系統(tǒng)的主要功能。在我們的高爾夫球場灑水器示例中,我們可以使用 RTC 上可用的中斷系統(tǒng)在適當(dāng)?shù)臅r間打開和關(guān)閉噴水滅火閥。

網(wǎng)絡(luò)接口沒有實時限制,因為 TCP/IP 可以無縫處理超時和重新傳輸。TCP 連接通常需要幾分鐘到幾小時才能因超時而斷開連接。因此,微控制器代碼可以將網(wǎng)絡(luò)連接作為后臺任務(wù)進(jìn)行管理。

結(jié)論

MAXQ2000的聯(lián)網(wǎng)使用免費的uIP堆棧很容易實現(xiàn)。uIP的事件驅(qū)動特性有助于遠(yuǎn)程監(jiān)視和控制微控制器系統(tǒng)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151310
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5419

    瀏覽量

    171592
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7488

    瀏覽量

    87847
收藏 人收藏

    評論

    相關(guān)推薦

    16位RISC微控制器MAXQ613資料推薦

    16位RISC微控制器MAXQ613資料下載內(nèi)容主要介紹了:MAXQ613引腳功能MAXQ613內(nèi)部方框圖
    發(fā)表于 03-29 06:45

    帶紅外模塊的16位微控制器MAXQ61C電子資料

    概述:MAXQ61C是一款低功耗、16位MAXQ 微控制器 ,設(shè)計用于通用遙控 、消費類電子和白色家電等低功耗產(chǎn)品。器件結(jié)合了功能強大的16位RISC
    發(fā)表于 04-13 07:16

    16位微控制器MAXQ61H電子資料

    概述:MAXQ61H采用四面QFN32腳封裝。是一款低功耗、16位MAXQ 微控制器 ,設(shè)計用于通用 遙控 、消費類 電子 和白色家電等低功耗產(chǎn)品。
    發(fā)表于 04-13 07:06

    16位微控制器MAXQ613電子資料

    概述:MAXQ613是一款低功耗、16位MAXQ 微控制器 ,設(shè)計用于通用 遙控 、消費類 電子 和白色家電等低功耗產(chǎn)品。器件結(jié)合了強大的16位RISC
    發(fā)表于 04-13 07:35

    16位微控制器具有紅外模塊MAXQ610電子資料

    概述:MAXQ610是MAXIM公司生產(chǎn)的一款低功耗、16位MAXQ?微控制器,設(shè)計用于通用遙控、消費類電子和白色家電等低功耗產(chǎn)品。 MAXQ
    發(fā)表于 04-21 07:47

    MAXQ2000微控制器與MAX4397是如何連接的?

    MAX4397是什么?MAXQ2000微控制器與MAX4397是如何連接的?
    發(fā)表于 06-04 06:15

    uIP堆棧實現(xiàn)MAXQ微控制器聯(lián)網(wǎng)-MAXQ2000的應(yīng)用

    uIP堆棧實現(xiàn)MAXQ微控制器聯(lián)網(wǎng) 摘要:本應(yīng)用筆記描述了如何用uIP TCP/IP網(wǎng)絡(luò)協(xié)議
    發(fā)表于 08-04 09:47 ?507次閱讀
    用<b class='flag-5'>uIP</b><b class='flag-5'>堆棧</b>實現(xiàn)<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b><b class='flag-5'>聯(lián)網(wǎng)</b>-<b class='flag-5'>MAXQ</b>2000的應(yīng)用

    MAXQ8913微控制器中從RAM執(zhí)行應(yīng)用程序

    MAXQ8913微控制器中從RAM執(zhí)行應(yīng)用程序 MAXQ8913及其它MAXQ®微控制器采用的Harvard存儲
    發(fā)表于 01-11 17:56 ?1160次閱讀
    在<b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b>中從RAM執(zhí)行應(yīng)用程序

    MAXQ1103 高性能RISC安全微控制器

    MAXQ1103 高性能RISC安全微控制器 概述 MAXQ1103微控制器是一款低功耗32位R
    發(fā)表于 01-26 16:18 ?848次閱讀

    MAXQ61H 低功耗、16位MAXQ微控制器

      MAXQ61H是一款低功耗、16位MAXQ®微控制器,設(shè)計用于通用遙控、消費類電子和白色家電等低功耗產(chǎn)品。 MAXQ61H結(jié)合
    發(fā)表于 01-05 09:34 ?843次閱讀
    <b class='flag-5'>MAXQ</b>61H 低功耗、16位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    MAXQ618 低功耗6位MAXQ微控制器

    MAXQ618是一種低功耗,16位MAXQ微控制器的低功耗應(yīng)用,包括通用遙控,消費電子和白色家電設(shè)計。該器件結(jié)合了強大的16位RISC微控制器
    發(fā)表于 03-14 11:02 ?1231次閱讀
    <b class='flag-5'>MAXQ</b>618 低功耗6位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    MAXQ612/MAXQ622低功耗、16位MAXQ微控制器

    MAXQ612/MAXQ622低功耗、16位MAXQ?微控制器設(shè)計用于通用遙控、消費類電子和白色家電等低功耗產(chǎn)品。兩款器件均采用低功耗、高
    發(fā)表于 05-28 11:47 ?1322次閱讀
    <b class='flag-5'>MAXQ</b>612/<b class='flag-5'>MAXQ</b>622低功耗、16位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    16位微控制器MAXQ613的特點及應(yīng)用

    MAXQ613是一款低功耗、16位MAXQ微控制器,設(shè)計用于通用遙控、消費類電子和白色家電等低功耗產(chǎn)品。器件結(jié)合了強大的16位RISC微控制器
    的頭像 發(fā)表于 10-02 14:03 ?3458次閱讀
    16位<b class='flag-5'>微控制器</b><b class='flag-5'>MAXQ</b>613的特點及應(yīng)用

    MAXQ2000數(shù)據(jù)存儲中實現(xiàn)軟堆棧

    MAXQ2000微控制器與Maxim的RISC微控制器系列MAXQ器件一樣,都是基于MAXQ20內(nèi)核?;?/div>
    的頭像 發(fā)表于 02-14 18:20 ?802次閱讀

    MAXQ2000微控制器實現(xiàn)JTAG自舉加載程序主控

    通過使用一組標(biāo)準(zhǔn)化命令,MAXQ微控制器提供的JTAG引導(dǎo)加載程序允許外部JTAG主機輕松識別和編程任何MAXQ微控制器。
    的頭像 發(fā)表于 02-21 11:22 ?1126次閱讀
    為<b class='flag-5'>MAXQ</b>2000<b class='flag-5'>微控制器</b>實現(xiàn)JTAG自舉加載程序主控
    RM新时代网站-首页