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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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)用中最有價(jià)值的功能之一。想象一下,一個(gè)高爾夫球場的大型草坪噴水滅火系統(tǒng),其中系統(tǒng)應(yīng)向主計(jì)算機(jī)報(bào)告故障。這樣的系統(tǒng)幾乎消除了人工觀察系統(tǒng)正常運(yùn)行的需要。

許多通信方法,如RS-232串行或紅外,可用于實(shí)現(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)都實(shí)現(xiàn)了 IP 堆棧。雖然IP可以在各種傳輸介質(zhì)上運(yùn)行,但以太網(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)用筆記中,我們將演示如何使用免費(fèi)的uIP堆棧和SPI轉(zhuǎn)以太網(wǎng)IC將MAXQ2000微控制器聯(lián)網(wǎng)。

uIP 簡介

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

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

編譯器環(huán)境

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

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

使用 uIP 堆棧

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

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

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

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

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

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

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

MAC/PHY 驅(qū)動(dòng)程序

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

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

pYYBAGO-ghyAJas3AAA2UnszbdY614.gif


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

當(dāng)前實(shí)現(xiàn)的 uIP 堆棧假定整個(gè) IP 數(shù)據(jù)報(bào)駐留在內(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ù)包。

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

示例應(yīng)用程序

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

然后,應(yīng)用從PCB上的1-Wire? DS2502-E48中檢索唯一的以太網(wǎng)硬件地址。必須將此硬件地址通知 MAC/PHY 驅(qū)動(dòng)程序和 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ā)回,除了所有單詞都是逐個(gè)字母顛倒的。

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

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

結(jié)論

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

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7552

    瀏覽量

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

    關(guān)注

    40

    文章

    5425

    瀏覽量

    171715
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7494

    瀏覽量

    87953
收藏 人收藏

    評(píng)論

    相關(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è)計(jì)用于通用遙控 、消費(fèi)類電子和白色家電等低功耗產(chǎn)品。器件結(jié)合了功能強(qiáng)大的16位RISC
    發(fā)表于 04-13 07:16

    16位微控制器MAXQ61H電子資料

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

    16位微控制器MAXQ613電子資料

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

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

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

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

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

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

    uIP堆棧實(shí)現(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>實(shí)現(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存儲(chǔ)
    發(fā)表于 01-11 17:56 ?1165次閱讀
    在<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 ?859次閱讀

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

      MAXQ61H是一款低功耗、16位MAXQ®微控制器,設(shè)計(jì)用于通用遙控、消費(fèi)類電子和白色家電等低功耗產(chǎn)品。 MAXQ61H結(jié)合
    發(fā)表于 01-05 09:34 ?844次閱讀
    <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)用,包括通用遙控,消費(fèi)電子和白色家電設(shè)計(jì)。該器件結(jié)合了強(qiáng)大的16位RISC微控制器
    發(fā)表于 03-14 11:02 ?1237次閱讀
    <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è)計(jì)用于通用遙控、消費(fèi)類電子和白色家電等低功耗產(chǎn)品。兩款器件均采用低功耗、高
    發(fā)表于 05-28 11:47 ?1325次閱讀
    <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的特點(diǎn)及應(yīng)用

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

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

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

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

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