新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > NCN26010 10Base-T1S器件的基本使用和配置,保姆級(jí)攻略來(lái)了

NCN26010 10Base-T1S器件的基本使用和配置,保姆級(jí)攻略來(lái)了

作者: 時(shí)間:2024-09-11 來(lái)源:安森美 收藏

10Base-T1S器件符合IEEE 802.3cg規(guī)范以及OPEN聯(lián)盟技術(shù)委員會(huì)6(Open  Alliance,TC6)的SPI(串行外設(shè)接口)協(xié)議,并具有各種可選附加功能。

本文引用地址:http://butianyuan.cn/article/202409/462859.htm

為了正確可靠地運(yùn)行,在配置時(shí)有一些注意事項(xiàng),特別是因?yàn)樵撈骷跊](méi)有正確配置的情況下無(wú)法參與多點(diǎn)數(shù)據(jù)段(multi?drop segment)通信。此外,如果配置不當(dāng),還有可能長(zhǎng)期干擾整個(gè)數(shù)據(jù)段。本應(yīng)用筆記旨在為用戶(hù)提供針對(duì)其特定應(yīng)用的 配置指南。這里僅描述了所需的基本設(shè)置,并通過(guò)配置示例對(duì)這些設(shè)置進(jìn)行了討論。 本文為第一部分,將介紹工作模式、應(yīng)用信息等。

工作模式

NCN26010 提供 IEEE 802.3cg 標(biāo)準(zhǔn)規(guī)定的強(qiáng)制和可選工作模式,并提供擴(kuò)展功能:

?CSMA/CD 作為基本工作和后備協(xié)議

?物理層沖突避免機(jī)制 (PLCA)

  • 突發(fā)模式

  • 優(yōu)先級(jí)模式

?增強(qiáng)噪聲抗擾度 (ENI)


作為一款MAC-PHY(物理層-數(shù)據(jù)鏈路層)器件,NCN26010在一個(gè)單一芯片中集成了10Base-T1S物理層器件(Physical Layer Device)和符合IEEE802.3第4款的媒體訪(fǎng)問(wèn)控制器(Media Access Controller)。這種組合為低成本 MCU 提供了以太網(wǎng)通信功能,具備至少運(yùn)行在15MHz且可軟件實(shí)現(xiàn)TCP/IP協(xié)議棧(例如,F(xiàn)reeRTOS+)的SPI接口。


我們將重點(diǎn)介紹OPEN聯(lián)盟 MACPHY SPI 協(xié)議的基本功能。有關(guān)詳細(xì)信息,建議用戶(hù)查閱的OPEN聯(lián)盟 TC6 文檔1.0 版。


為了說(shuō)明該部分的基本用途,本應(yīng)用筆記首先討論了如何讀寫(xiě)配置寄存器,以及如何通過(guò) SPI 接口發(fā)送實(shí)際以太網(wǎng)幀數(shù)據(jù)。


接下來(lái)將介紹一組基本配置以及 MAC 內(nèi)部地址過(guò)濾器(Address Filter)和過(guò)濾器掩碼(Filter Mask)的使用。


圖 1. 簡(jiǎn)化框圖


應(yīng)用信息

SPI 接口

NCN26010 實(shí)現(xiàn)了 OPEN聯(lián)盟 TC6 SPI 協(xié)議的所有必備功能。 該協(xié)議使用 SPI 接口接收和發(fā)送以太網(wǎng)幀,并通過(guò)所謂的控制命令事務(wù)交換配置數(shù)據(jù)。

通過(guò)查看32位長(zhǎng)通信報(bào)頭(Header)的最高有效位(MSB),可以區(qū)分控制事務(wù)和數(shù)據(jù)事務(wù)。


控制命令報(bào)頭

當(dāng)?shù)?1位(DNC = 數(shù)據(jù) – 非命令)被置為0時(shí),表示這是一個(gè)控制命令??刂泼畹母袷饺缦拢?/span>

圖 2. 控制命令格式


數(shù)據(jù)報(bào)頭

為了傳輸以太網(wǎng)數(shù)據(jù)(雙向),上位機(jī)需要發(fā)送有效的數(shù)據(jù)傳輸報(bào)頭,隨后緊跟實(shí)際的以太網(wǎng)數(shù)據(jù)。數(shù)據(jù)傳輸報(bào)頭的特征是第31位被置1。以下是與NCN26010器件使用相關(guān)的數(shù)據(jù)報(bào)頭字段。

圖 3. 數(shù)據(jù)報(bào)頭字段


需要注意的是,在NCN26010的應(yīng)用中,只使用 NORX、DV、SV、SWO、EV、EBO 和強(qiáng)制(奇數(shù))校驗(yàn) P 字段。所有其他位建議始終發(fā)送0。


讀寫(xiě)配置和狀態(tài)寄存器

要寫(xiě)入或讀取單個(gè)寄存器,總共需要向 NCN26010 10Base-T1S MACPHY 發(fā)送 12 個(gè)字節(jié)。


控制命令以命令控制報(bào)頭開(kāi)頭,隨后是:

  • 對(duì)于寄存器寫(xiě)入控制事務(wù)(寄存器寫(xiě)入),包含32位寄存器內(nèi)容和32位占位數(shù)據(jù)(dummy data)

  • 對(duì)于讀取控制事務(wù)(寄存器讀?。?,包含64位占位數(shù)據(jù)


SPI作為一種雙向全雙工通信方式,每傳輸/接收一位數(shù)據(jù)就需要一個(gè)SCK(串行時(shí)鐘)跳變。為了在寄存器讀寫(xiě)事務(wù)中接收適當(dāng)數(shù)量的字節(jié),MCU上位機(jī)需要通過(guò)MOSI線(xiàn)路向NCN26010器件發(fā)送占位字節(jié)(dummy bytes)。


連接的MCU必須能夠在不斷開(kāi)MACPHY的SPI芯片選擇的情況下完成整個(gè)事務(wù)。


為寄存器讀寫(xiě)準(zhǔn)備兩個(gè) 12 字節(jié)長(zhǎng)的數(shù)組似乎最為簡(jiǎn)單。在數(shù)組中填入正確的數(shù)據(jù)(報(bào)頭和寫(xiě)入數(shù)據(jù)),然后通過(guò) SPI 以 12 字節(jié)的批量傳輸方式發(fā)送,同時(shí)將結(jié)果接收到 12 字節(jié)的接收緩沖區(qū)中。


寄存器讀取示例:

應(yīng)用程序希望讀取位于 MMS0 地址 0x0001 的 MACPHY 的 SPI 識(shí)別寄存器。


首先,我們需要生成一個(gè)適當(dāng)?shù)膱?bào)頭:按照此主題確定報(bào)頭:


圖4


確定報(bào)頭后,在數(shù)組中填入零字節(jié)進(jìn)行讀取操作。

這將提供一個(gè)通過(guò) MOSI 發(fā)送、通過(guò) MISO 接收的字節(jié)數(shù)組,其內(nèi)容如下:

圖5


讀取該寄存器的程序例程必須查看數(shù)據(jù)流的最后兩個(gè) 32 位字。 倒數(shù)第二個(gè) 32 位字(回顯報(bào)頭,字節(jié) 4 至 7)應(yīng)等于通過(guò) MOSI 線(xiàn)發(fā)送到 MACPHY 的命令報(bào)頭,而最后一個(gè) 32 位字則包含寄存器的實(shí)際數(shù)據(jù)。請(qǐng)注意,寄存器讀取總是返回32位字的寄存器內(nèi)容,即使基礎(chǔ)寄存器僅包含16位可用內(nèi)容。


當(dāng)由于使用無(wú)效的奇偶校驗(yàn)位計(jì)算方式導(dǎo)致報(bào)頭格式錯(cuò)誤,或SPI傳輸錯(cuò)誤造成報(bào)頭出現(xiàn)奇偶校驗(yàn)錯(cuò)誤時(shí),回顯的控制報(bào)頭及所有后續(xù)的32位字都將變?yōu)?x40000000,這表明存在“報(bào)頭錯(cuò)誤,HEADER BAD”狀況。因此,MACPHY將忽略該命令。連接的上位機(jī)可以利用該信息來(lái)檢測(cè)控制命令(Control Command)錯(cuò)誤,并觸發(fā)重新傳輸正確的控制命令。


寄存器寫(xiě)入示例:

假設(shè)您想要向NCN26010內(nèi)部的MAC Control 0寄存器寫(xiě)入數(shù)據(jù),以便在集成的MAC與PHY之間啟用TX(發(fā)送)和RX(接收)傳輸,同時(shí)讓MACPHY計(jì)算以太網(wǎng)幀的幀校驗(yàn)序列(FCS),以減輕 MCU 的計(jì)算負(fù)擔(dān)。

請(qǐng)查閱NCN26010的數(shù)據(jù)手冊(cè)以找到MAC CONTROL0寄存器。它位于 MMS 1(內(nèi)存映射選擇組 1)中,地址為 0x0000。


要啟用TX和RX,并且讓MAC計(jì)算并自動(dòng)附加FCS(幀校驗(yàn)序列)到它將發(fā)送的每個(gè)以太網(wǎng)幀上,需要在寄存器中設(shè)置第 8 位(FCSA)、第 1 位(TXEN)和第 0 位(RXEN)。這將產(chǎn)生一個(gè)包含 0x00000103 值的待寫(xiě)入的數(shù)據(jù)字。


與上述寄存器讀取示例類(lèi)似,我們首先需要確定單個(gè)寄存器寫(xiě)入的正確控制命令報(bào)頭。按照上述方案,我們可以得到:

圖6


確定報(bào)頭后,我們就可以在數(shù)組中填入要寫(xiě)入寄存器的數(shù)據(jù)。 這樣我們就得到了一個(gè)字節(jié)數(shù)組,通過(guò) MOSI 發(fā)送,通過(guò) MISO 接收,內(nèi)容如下:

圖7


請(qǐng)注意,奇偶校驗(yàn)的工作方式與寄存器讀取示例相同。如果報(bào)頭中的奇偶校驗(yàn)位出現(xiàn)錯(cuò)誤,則隨后的 32 位字將被設(shè)置為 0x40000000。在這種情況下,MACPHY 不會(huì)改變寄存器的內(nèi)容。連接的 MCU 必須相應(yīng)地處理這種情況,使用完整的報(bào)頭重新發(fā)送寄存器寫(xiě)入事務(wù)。此外,重要的是要先發(fā)送 MSB 數(shù)據(jù)。


下面的代碼片段提供了一個(gè)生成命令事務(wù)報(bào)頭的函數(shù)實(shí)現(xiàn)示例:

圖8


上述示例說(shuō)明了如何生成有效的控制事務(wù),以支持單個(gè)寄存器的讀寫(xiě)操作。

有關(guān)如何在一次 SPI 傳輸中讀取連續(xù)寄存器地址的詳細(xì)信息,建議本應(yīng)用筆記的讀者查閱OPEN聯(lián)盟 TC6 文檔。


發(fā)送和接收以太網(wǎng)幀

OA-TC6 協(xié)議的設(shè)計(jì)不僅允許通過(guò) SPI 接口實(shí)現(xiàn)器件配置,而且還能利用同一接口以半雙工或全雙工方式雙向傳輸以太網(wǎng)幀,具體取決于上位機(jī)系統(tǒng)上運(yùn)行軟件的功能而定。但請(qǐng)注意,混合數(shù)據(jù)段上的實(shí)際以太網(wǎng)通信始終是半雙工的。 以太網(wǎng)幀以分塊(Chuck)的形式進(jìn)行雙向傳輸。


數(shù)據(jù)塊(Data Chunks)的概念

NCN26010 執(zhí)行 OA SPI 協(xié)議,通過(guò)“數(shù)據(jù)塊”(data chunks)與連接的上位機(jī)設(shè)備或系統(tǒng)傳輸以太網(wǎng)數(shù)據(jù)。


數(shù)據(jù)塊是以太網(wǎng)幀的一部分,或者在較短的幀中,它可以是整個(gè)以太網(wǎng)幀。在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)塊包含一個(gè)數(shù)據(jù)報(bào)頭,其后是預(yù)定義數(shù)量的有效(pay load)數(shù)據(jù)。NCN26010可以配置每個(gè)數(shù)據(jù)塊的pay load數(shù)據(jù)為8、16、32或64字節(jié),默認(rèn)設(shè)置為64字節(jié)。當(dāng)上位機(jī)從NCN26010 MACPHY接收數(shù)據(jù)時(shí),首先發(fā)送pay load數(shù)據(jù),之后跟隨一個(gè)32位的數(shù)據(jù)報(bào)尾,報(bào)尾向上位機(jī)指示:

  • 發(fā)送的數(shù)據(jù)中是否包含有效的以太網(wǎng)幀數(shù)據(jù)。

  • 在上一次傳輸中是否發(fā)現(xiàn)了錯(cuò)誤。

  • NCN26010 接收緩沖區(qū)中準(zhǔn)備讀取的數(shù)據(jù)塊的可用數(shù)量。

  • 當(dāng)前可用于 TX 數(shù)據(jù)傳輸?shù)目諗?shù)據(jù)塊的數(shù)量。


如果整個(gè)以太網(wǎng)幀的長(zhǎng)度超過(guò)了單個(gè)數(shù)據(jù)塊所能傳輸?shù)臄?shù)據(jù)量,則需要將其切割成適合數(shù)據(jù)塊的片段。只要 NCN26010 設(shè)備內(nèi)部的 4 k byte 發(fā)送和接收緩沖區(qū)有足夠的空間,這一概念就支持在 NCN26010 和上位機(jī)設(shè)備之間中斷以太網(wǎng)幀交換而不丟失數(shù)據(jù)。


以太網(wǎng)幀數(shù)據(jù)可能包含也可能不包含 4 字節(jié) FCS(幀校驗(yàn)序列),具體取決于如何配置。當(dāng)配置為計(jì)算并自動(dòng)附加 FCS 時(shí),由上位機(jī)設(shè)備向 NCN26010 發(fā)送數(shù)據(jù)時(shí)預(yù)計(jì)不會(huì)附加 FCS。同樣,當(dāng)啟用NCN26010內(nèi)部的FCS檢查時(shí),輸入幀無(wú)需提供FCS,因?yàn)闊o(wú)效幀(FCS校驗(yàn)錯(cuò)誤的幀)將不會(huì)存儲(chǔ)在RX緩沖區(qū)(即被丟棄)。


NCN26010 可配置為存儲(chǔ)轉(zhuǎn)發(fā)(Store and Forward)模式或直通(Cut Though)工作模式。


在“存儲(chǔ)轉(zhuǎn)發(fā)”模式下,完整的數(shù)據(jù)幀會(huì)在被發(fā)送到單對(duì)絞線(xiàn)以太網(wǎng)數(shù)據(jù)段或從以太網(wǎng)媒介接收之前,全部存儲(chǔ)在器件的緩沖區(qū)內(nèi)。


直通模式對(duì)上位機(jī)上運(yùn)行的軟件的延遲和吞吐量性能有更嚴(yán)格的要求,因?yàn)樯衔粰C(jī)必須始終跟上以太網(wǎng)數(shù)據(jù)的輸入和輸出速度。在使用多任務(wù)操作系統(tǒng)時(shí),長(zhǎng)時(shí)間的中斷服務(wù)例程或不適宜的任務(wù)切換會(huì)導(dǎo)致通信速度減慢,從而因TX緩沖區(qū)欠載(underruns)或RX緩沖區(qū)超限(overruns)而導(dǎo)致數(shù)據(jù)丟失。


本應(yīng)用筆記將不涉及使用NCN26010的“直通”模式進(jìn)行數(shù)據(jù)交換的內(nèi)容,而是主要聚焦于“存儲(chǔ)轉(zhuǎn)發(fā)”模式的操作。


在 "存儲(chǔ)轉(zhuǎn)發(fā) "模式下運(yùn)行時(shí),上位機(jī)需要時(shí)刻關(guān)注緩沖區(qū)的填充水平,尤其是 RX 端或下行(downstream)數(shù)據(jù)流。對(duì)于 TX 上行(upstream)數(shù)據(jù)流,上位機(jī)上運(yùn)行的軟件可以輕松地延緩數(shù)據(jù)發(fā)送,直到所需的足夠數(shù)據(jù)塊數(shù)量(即,與當(dāng)前計(jì)劃傳輸?shù)囊蕴W(wǎng)幀大小相匹配的數(shù)量) 由于 上位機(jī) 無(wú)法直接控制 RX ( downstream )數(shù)據(jù)流,若設(shè)備以半雙工方式交換數(shù)據(jù),應(yīng)優(yōu)先處理 RX 數(shù)據(jù)流 。


除其他配置選項(xiàng)外,數(shù)據(jù)塊大?。╟hunk size)的選擇會(huì)對(duì)將NCN26010連接到上位機(jī)MCU或系統(tǒng)的SPI接口施加最低速度要求。


在使用簡(jiǎn)單配置時(shí),只允許新的以太網(wǎng)幀從數(shù)據(jù)塊的開(kāi)頭開(kāi)始,所需的SPI速度取決于以太網(wǎng)幀的長(zhǎng)度以及數(shù)據(jù)塊的大?。阂韵聢D表說(shuō)明了這種關(guān)系。


圖9


從這張圖表中,這種方法的局限性變得顯而易見(jiàn)。當(dāng)應(yīng)用主要使用短幀時(shí),根據(jù)NCN26010的配置方式,較小的數(shù)據(jù)塊大小可能會(huì)帶來(lái)更高的吞吐量。在這種簡(jiǎn)單的配置中,極端情況是使用長(zhǎng)度為65字節(jié)的幀和64字節(jié)大小的數(shù)據(jù)塊。這將需要21 MHz的SPI速度。


NCN26010設(shè)計(jì)支持串行時(shí)鐘(SCLK)上的SPI速度高達(dá)25 MHz。因此即使在這種情況下,MACPHY 的速度也足以傳輸所需的數(shù)據(jù);然而,應(yīng)用程序或驅(qū)動(dòng)程序必須同時(shí)處理 RX 和 TX。隨著以太網(wǎng)幀大小的增大,默認(rèn)的 64 字節(jié)數(shù)據(jù)塊大小需要降低 SPI 接口的時(shí)鐘頻率,以保證數(shù)據(jù)傳輸。


在多點(diǎn)(multi?drop)傳輸環(huán)境中,我們可以假設(shè)大部分?jǐn)?shù)據(jù)流都在 RX 方向。由于 10Base-T1S 的半雙工特性,即使以半雙工方式處理 SPITX 和 RX 數(shù)據(jù)流,25 MHz SCLK 也能在大多數(shù)情況下提供穩(wěn)定的數(shù)據(jù)流而不會(huì)丟失數(shù)據(jù)。


當(dāng) NCN26010 需要在單對(duì)以太網(wǎng)數(shù)據(jù)段上傳輸數(shù)據(jù)時(shí),上位機(jī)需要發(fā)送一系列包含完整以太網(wǎng)幀數(shù)據(jù)的有效數(shù)據(jù)塊。


新的以太網(wǎng)幀將從數(shù)據(jù)報(bào)頭的 SV 標(biāo)志(起始有效)置 1 開(kāi)始。在簡(jiǎn)單情況下,幀只允許在CS(片選)信號(hào)被置位后的數(shù)據(jù)塊起始處開(kāi)始,起始字偏移量(Start Word Offset)將始終為0。如果以太網(wǎng)幀能夠容納在一個(gè)單獨(dú)的數(shù)據(jù)塊內(nèi),那么有效數(shù)據(jù)(payload)最后一個(gè)字節(jié)的EV(End Valid,結(jié)束有效)標(biāo)志也需要被設(shè)置。請(qǐng)注意,當(dāng)要傳輸?shù)囊蕴W(wǎng)幀數(shù)據(jù)短于以太網(wǎng)幀長(zhǎng)度(包括源地址/目的地址、長(zhǎng)度、字段/其他類(lèi)型和 FCS)的最小要求 64 字節(jié)時(shí),則NCN26010內(nèi)的MAC會(huì)自動(dòng)添加填充字節(jié),以將幀擴(kuò)展到其最小所需長(zhǎng)度。當(dāng)NCN26010被配置為不自動(dòng)添加FCS時(shí),填充字節(jié)以及FCS才需要由上位機(jī)提供。


與控制事務(wù)報(bào)頭的計(jì)算類(lèi)似,數(shù)據(jù)事務(wù)報(bào)頭也可按下面的示例代碼生成:

圖10


發(fā)送以太網(wǎng)幀

在這里,我們僅描述了被稱(chēng)為 "TX 幀在數(shù)據(jù)塊邊界結(jié)束 "和 "每個(gè) TX 幀都匹配數(shù)據(jù)塊 "的 TX 幀發(fā)送情況。詳見(jiàn) [2]"圖 8:發(fā)送數(shù)據(jù)塊案例"。

我們需要區(qū)分以三種不同方式處理的幀數(shù)據(jù)情況:

1.幀完全匹配一個(gè)數(shù)據(jù)塊

2.以太網(wǎng)幀匹配兩個(gè)數(shù)據(jù)塊

3.以太網(wǎng)幀需要兩個(gè)以上的數(shù)據(jù)塊


在第一種情況下,用戶(hù)需要發(fā)送一個(gè)數(shù)據(jù)報(bào)頭,緊隨其后的是實(shí)際的幀數(shù)據(jù)。該數(shù)據(jù)報(bào)頭需要設(shè)置以下這些位:

. SV = 1

. DV = 1

. EV = 1


EBO(End Byte Offset,結(jié)束字節(jié)偏移)指向有效數(shù)據(jù)的最后一個(gè)字節(jié)。需要注意的是,即使以太網(wǎng)數(shù)據(jù)沒(méi)有占滿(mǎn)整個(gè)數(shù)據(jù)塊(例如,ARP廣播幀長(zhǎng)度為46字節(jié),所以默認(rèn)的64字節(jié)數(shù)據(jù)塊并不會(huì)被完全利用),應(yīng)用程序仍然需要始終發(fā)送全長(zhǎng)數(shù)據(jù)塊。


在使用64字節(jié)數(shù)據(jù)塊且需要發(fā)送一個(gè)長(zhǎng)度為46字節(jié)的ARP廣播幀的情況下,EBO將指向第45個(gè)字節(jié),因?yàn)樵跀?shù)據(jù)塊中的第一個(gè)字節(jié)索引為0。


在第二種情況下,需要兩個(gè)數(shù)據(jù)塊來(lái)容納payload數(shù)據(jù),那么第一個(gè)數(shù)據(jù)報(bào)頭需要設(shè)置:

. SV = 1

. DV = 1

. EV = 0

. EBO = 0

. SWO = 0


而幀中的第二個(gè)也是最后一個(gè)數(shù)據(jù)報(bào)頭需要設(shè)置:

. SV = 0

. DV = 1

. EV = 1

. EBO = position of last valid pay load byte (最后一個(gè)有效payload字節(jié)的位置 )

. SWO = 0


如果向 NCN26010 MACPHY 傳輸payload數(shù)據(jù)時(shí)需要兩個(gè)以上的數(shù)據(jù)塊,則第一個(gè)報(bào)頭與前一種情況相似:

. SV = 1

. DV = 1

. EV = 0

. EBO = 0

. SWO = 0


在第一個(gè)數(shù)據(jù)塊之后和最后一個(gè)數(shù)據(jù)塊之前的所有報(bào)頭都需要:

. SV = 0

. DV = 1

. EV = 0

. EBO = 0

. SWO = 0

Or 0xA0200000.


最后一個(gè)報(bào)頭需要設(shè)置:

. SV = 0

. DV = 1

. EV = 1

. EBO = position of last valid pay load byte (最后一個(gè)有效payload字節(jié)的位置 )

. SWO = 0


由于在數(shù)據(jù)傳輸前要先傳輸報(bào)頭,因此向 MACPHY 發(fā)送數(shù)據(jù)塊的應(yīng)用程序總是要比數(shù)據(jù)塊的payload數(shù)據(jù)多發(fā)送 4 個(gè)字節(jié)。


由此,8 字節(jié)的數(shù)據(jù)塊需要 12 字節(jié),16 字節(jié)的數(shù)據(jù)塊需要 20 字節(jié),32 字節(jié)的數(shù)據(jù)塊需要 36 字節(jié),64 字節(jié)的數(shù)據(jù)塊需要 68 字節(jié)。


請(qǐng)注意,即使數(shù)據(jù)塊未全部使用,這些長(zhǎng)度也是固定的。在 EV=1 數(shù)據(jù)塊的 EBO 之后發(fā)送的數(shù)據(jù)為 "不關(guān)心 "數(shù)據(jù),可以是任何隨機(jī)數(shù)據(jù)。為方便使用,建議在數(shù)據(jù)塊中填入全為 0 的字節(jié)。


與發(fā)送控制事務(wù)一樣,數(shù)據(jù)事務(wù)也是雙向同時(shí)進(jìn)行的。 通過(guò) SPI 接口向 NCN26010 發(fā)送數(shù)據(jù)時(shí),上位機(jī)將通過(guò) NCN26010 的 MISO(主入從出,Master In Slave Out)引腳接收 MACPHY 返回的相同字節(jié)數(shù)。通常情況下,數(shù)據(jù)從一個(gè)足夠大的緩沖區(qū)發(fā)送和接收,該緩沖區(qū)可容納發(fā)送幀數(shù)據(jù)所需的所有數(shù)據(jù)塊。輸入的數(shù)據(jù)將進(jìn)入第二個(gè)(即接收)緩沖區(qū)。



接收以太網(wǎng)數(shù)據(jù)

發(fā)送到 MACPHY 的數(shù)據(jù)在每個(gè)數(shù)據(jù)塊之前帶有 32 位報(bào)頭信息,MACPHY 發(fā)送出的數(shù)據(jù)塊在實(shí)際數(shù)據(jù)之后有一個(gè) 32 位報(bào)尾信息。


報(bào)尾包含了上位機(jī)用來(lái)引導(dǎo)進(jìn)一步通信的信息,無(wú)論其是發(fā)送還是接收更多數(shù)據(jù)。報(bào)尾的各字段在文獻(xiàn)[2]的第7.3.7節(jié)中有詳細(xì)解釋。NCN26010器件不提供OPEN聯(lián)盟定義的可選時(shí)間戳功能,因此RTSA(位7)和RTSP(位6)字段將不使用,始終為0。


NCN26010 器件的數(shù)據(jù)報(bào)尾結(jié)構(gòu)如下:

圖11


這些字段可概括為以下功能:


以太網(wǎng)數(shù)據(jù)交換最簡(jiǎn)單但也最慢的方式是半雙工方式。在發(fā)送幀時(shí),如果在數(shù)據(jù)報(bào)頭中設(shè)置了 NORX 標(biāo)志,NCN26010 就會(huì)被指示在接收上位機(jī)發(fā)送的 TX 幀數(shù)據(jù)時(shí),不向上位機(jī)發(fā)送以太網(wǎng)數(shù)據(jù)。


同樣,當(dāng)數(shù)據(jù)報(bào)頭的 DV 標(biāo)志設(shè)置為零時(shí),上位機(jī)可在不提供 TX 數(shù)據(jù)的情況下接收幀數(shù)據(jù)。


在這種工作模式下,連接的上位機(jī)應(yīng)該優(yōu)先讀取幀而非發(fā)送幀,或者以“公平共享”的方式交替進(jìn)行發(fā)送和接收。建議是盡量快速地清空接收緩沖區(qū)。



關(guān)鍵詞: 安森美 NCN26010

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉