<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

使用uIP堆棧將MAXQ微控制器聯網

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

本應用筆記介紹如何使用uIP TCP/IP網絡堆棧將MAXQ?微控制器聯網。常用的SPI?轉以太網IC用作此應用的MAC/PHY。MAXQ2000作為微控制器示例。

介紹

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

許多通信方法,如RS-232串行或紅外,可用于實現該系統內遠程設備的控制和監控。但是,所有這些方法都綁定到涉及不兼容傳輸介質和協議的特定接口,并且距離有限。

以太網互聯網協議 (IP)

互聯網協議為上述挑戰提供了解決方案。所有現代操作系統都實現了 IP 堆棧。雖然IP可以在各種傳輸介質上運行,但以太網是迄今為止最普遍的。此外,由于采用交換和路由網絡拓撲結構,以太網不受距離限制。

隨著帶有板載緩沖器的先進MAC/PHY集成電路的出現,我們可以使用微控制器和以太網IP來控制和收集來自幾乎任何遠程系統的數據。在本應用筆記中,我們將演示如何使用免費的uIP堆棧和SPI轉以太網IC將MAXQ2000微控制器聯網。

uIP 簡介

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

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

編譯器環境

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

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

使用 uIP 堆棧

uIP 堆??梢钥醋魇且粋€事件循環,其超時基于特定于體系結構的時鐘代碼。在主循環中,MAC/PHY 接收的任何數據包都將由 uip_arp_ipin() 和 uip_input() 處理。這些調用可能會生成輸出數據包,該數據包必須由 MAC/PHY 驅動程序代碼傳輸。

然后檢查計時器以清理一段時間未看到的已關閉連接和 ARP 表條目,并調用應用程序回調以進行重新傳輸。主事件循環是樣板代碼,對于大多數應用程序不需要更改。

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

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

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

如果網絡丟棄返回給對等方的任何部分數據,則應用程序回調將通過計時器超時調用,uip_rexmit() 將返回非零結果。

正是在這一點上,uIP 與其他 IP 堆棧不同。通常,TCP 數據包重新傳輸由 IP 堆棧處理。uIP 通過要求應用程序在顯示 uip_rexmit() 標志時重新傳輸丟失的數據來節省內存。這種重新傳輸可以通過重新生成數據來完成,或者通過將先前生成的數據保存在緩沖區中以進行重新傳輸來實現。

MAC/PHY 驅動程序

要通過以太網傳輸和接收 IP 數據報,我們必須向 uIP 提供 MAC/PHY 驅動程序代碼。API 相當簡單:驅動程序必須發出信號,表明傳入的以太網幀已準備好進行處理;必須有調用才能接收數據包并在網絡上傳輸數據包。這些調用在 macphy.c 中實現,并從主事件循環調用。

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

pYYBAGO-ghyAJas3AAA2UnszbdY614.gif


圖1.原理圖示出了MAXQ2000微控制器與SPI轉以太網IC之間的連接。

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

此項目的示例源代碼包括文件 macphy.c 中的 MAC/PHY 驅動程序代碼以及關聯的包含文件 macphy.h 和 macphy_priv.h。

示例應用程序

我們的示例應用程序實現了在 TCP 端口 23 上偵聽的修改后的回顯服務器。首先,啟動MAXQ2000的實時時鐘(RTC)進行事件定時。然后,我們初始化 SPI 硬件并使用默認設置加載 MAC/PHY。

然后,應用從PCB上的1-Wire? DS2502-E48中檢索唯一的以太網硬件地址。必須將此硬件地址通知 MAC/PHY 驅動程序和 uIP 堆棧。進行兩次調用 macphy_init() 和 uip_setethaddr() 來設置此信息。

uIP 堆棧通過調用 uip_init() 進行初始化,并設置編譯的默認 IP 地址、網絡掩碼和網關。

傳入連接完成后,將向對等方打印問候語??蛻舳税l送的任何文本都以“回顯”方式發回,除了所有單詞都是逐個字母顛倒的。

仍然有充足的計算資源來執行微控制器系統的主要功能。在我們的高爾夫球場灑水器示例中,我們可以使用 RTC 上可用的中斷系統在適當的時間打開和關閉噴水滅火閥。

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

結論

MAXQ2000的聯網使用免費的uIP堆棧很容易實現。uIP的事件驅動特性有助于遠程監視和控制微控制器系統。

審核編輯:郭婷

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

    關注

    48

    文章

    6847

    瀏覽量

    148004
  • 以太網
    +關注

    關注

    40

    文章

    5109

    瀏覽量

    166412
  • 計算機
    +關注

    關注

    19

    文章

    6685

    瀏覽量

    84993
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    16位微控制器MAXQ61H電子資料

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

    16位微控制器MAXQ613電子資料

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

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

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

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

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

    uIP堆棧實現MAXQ微控制器聯網-MAXQ2000的應用

    uIP堆棧實現MAXQ微控制器聯網 摘要:本應用筆記描述了如何用uIP TCP/IP網絡協議
    發表于 08-04 09:47 ?460次閱讀
    用<b class='flag-5'>uIP</b><b class='flag-5'>堆棧</b>實現<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b><b class='flag-5'>聯網</b>-<b class='flag-5'>MAXQ</b>2000的應用

    利用MAXQ1103微控制器產生RSA密鑰

    利用MAXQ1103微控制器產生RSA密鑰 摘要:Maxim的RSA密鑰生成庫提供了一個簡單易用的接口,利用MAXQ1103微控制器生成RSA密鑰。
    發表于 04-27 16:12 ?933次閱讀
    利用<b class='flag-5'>MAXQ</b>1103<b class='flag-5'>微控制器</b>產生RSA密鑰

    MAXQ8913微控制器中從RAM執行應用程序

    MAXQ8913微控制器中從RAM執行應用程序 MAXQ8913及其它MAXQ®微控制器采用的Harvard存儲器映射架構為用戶
    發表于 01-11 17:56 ?907次閱讀
    在<b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b>中從RAM執行應用程序

    MAXQ1103 高性能RISC安全微控制器

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

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

      MAXQ61H是一款低功耗、16位MAXQ®微控制器,設計用于通用遙控器、消費類電子和白色家電等低功耗產品。 MAXQ61H結合了強大的16位RISC
    發表于 01-05 09:34 ?723次閱讀
    <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微控制器的低功耗應用,包括通用遙控器,消費電子和白色家電設計。該器件結合了強大的16位RISC微控制器
    發表于 03-14 11:02 ?1135次閱讀
    <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?微控制器設計用于通用遙控器、消費類電子和白色家電等低功耗產品。兩款器件均采用低功耗、高吞吐率、16位RISC
    發表于 05-28 11:47 ?1197次閱讀
    <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>

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

    MAXQ61C是一款低功耗、16位MAXQ?微控制器,設計用于通用遙控器、消費類電子和白色家電等低功耗產品
    發表于 06-30 10:13 ?843次閱讀
    <b class='flag-5'>MAXQ</b>61C低功耗、16位<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>

    MAXQ2000數據存儲器中實現軟堆棧

    MAXQ2000微控制器與Maxim的RISC微控制器系列MAXQ器件一樣,都是基于MAXQ20內核?;?/div>
    的頭像 發表于 02-14 18:20 ?567次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>