99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

使用SPI驅(qū)動wiznet的網(wǎng)絡(luò)接口芯片W5xxx

331062281 ? 來源: RCSN嵌入式 ? 2023-11-01 10:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

本文應(yīng)用主要是使用SPI驅(qū)動wiznet的網(wǎng)絡(luò)接口芯片W5xxx,根據(jù)wiznet提供的ioLibrary_Driver庫支持W5100、W5100S、W5200、W5300、W5500。主要從以下幾點進行說明:

使用hpm_sdk的cmake框架對接wiznet的ioLibrary_Driver。

ioLibrary_Driver的底層讀寫相關(guān)操作接口注冊對接。

以ioLibrary_Driver庫測試wiznet的速率性能。

本文不做wiznet芯片相關(guān)寄存器闡述,只簡單闡述W5xxx的通信機制。

本文以W5500作為本文測試芯片。

29d6f21e-7859-11ee-939d-92fbcf53809c.png

二、流程

(一)使用hpm_sdk的cmake框架對接wiznet的ioLibrary_Driver

在一些開源項目上,可能并沒有使用cmake來進行搭建,而hpm_sdk基于cmake構(gòu)建,所以在移植的過程中,建議使用cmake框架加入開源項目。本文以對接wiznet的ioLibrary_Driver作為例子供開發(fā)者相關(guān)參考。

里面包含了w5xxx的驅(qū)動程序以及應(yīng)用程序協(xié)議,使用該庫基本可以很快能對接好相應(yīng)的功能實現(xiàn)。

需要關(guān)心的是Ethernet文件夾,里面包含了如W5500,W5300,W5200,W5100,W5100S的讀寫相關(guān)中間層,還提供了socket應(yīng)用層操作接口。

29f442c4-7859-11ee-939d-92fbcf53809c.png

1、芯片讀寫操作層加入

在此庫中,僅支持一款w5xxx,所以添加到工程,也只能是一個芯片讀寫操作的文件夾。在每個芯片上加入cmakelists文件,把對應(yīng)的頭文件包含以及添加對應(yīng)的C文件。

如以下:比如W5100文件夾,使用sdk_inc和sdk_src命令,把該文件下的所需的文件進行添加以及包含該文件夾的頭文件。

29fa5c54-7859-11ee-939d-92fbcf53809c.png

2、Ethernet文件加入

外層想使用文件夾的時候,可以通過set一個參數(shù)來判斷對應(yīng)的芯片操作選擇,然后再添加ethernet內(nèi)部的socket.c和config.c文件。

通過CONFIG_WIZNET參數(shù)來進行對不同芯片加入篩選,以及加入兩個宏定義,一個是給config表示目前使用的是哪個芯片,一個是讓app知道引用的是哪個頭文件。

2a1d656e-7859-11ee-939d-92fbcf53809c.png

3、APP加入ioLibrary_Driver相關(guān)文件。

在本文中,使用的芯片是W5500,需要用到DHCP和ioLibrary_Driver里面application的loopback的tcp client接口,那么在app的camkelist可以做以下操作:

(1)set(CONFIG_WIZNET "w5500") 設(shè)置CONFIG_WIZNET為w5500,這樣cmake到ioLibrary_Driver索引時候只添加w5500這個文件夾。

(2)add_subdirectory(ioLibrary_Driver) 加入ioLibrary_Driver文件目錄

(3)sdk_app_src sdk_inc 加入ioLibrary_Driver需要的相關(guān)文件和頭文件

2a3f0d22-7859-11ee-939d-92fbcf53809c.png

4、使用sdk_env的start_gui生成工程或者使用命令行生成都可以。這里使用start_gui

2a5e0f74-7859-11ee-939d-92fbcf53809c.png

可以看到ioLibrary_Drivers對應(yīng)的目錄和文件都已經(jīng)添加到SES。

2a80c672-7859-11ee-939d-92fbcf53809c.png

如此編譯也Ok

2a99d6a8-7859-11ee-939d-92fbcf53809c.png

(二)ioLibrary_Driver的底層讀寫相關(guān)操作接口注冊對接

在ioLibrary_Drivers的config上,需要接口注冊的主要是臨界區(qū)、CS片選操作、單字節(jié)收發(fā)、塊收發(fā)傳輸接口。在該庫中也有對應(yīng)的注冊接口wizchip_conf.h中。

2aaeaccc-7859-11ee-939d-92fbcf53809c.png

2ac25d76-7859-11ee-939d-92fbcf53809c.png

1、臨界區(qū)注冊

這里臨界主要做全局中斷的使能和禁止,可根據(jù)自身應(yīng)用添加

2acf8208-7859-11ee-939d-92fbcf53809c.png

2、CS片選信號操作注冊

在這里為了避免CS拉低后存在較高的間隔,實際的拉低在actual_cs_sel API操作,就是在開啟SPI傳輸?shù)臅r候調(diào)用,具體請詳見 玩轉(zhuǎn)先楫SPI外設(shè)系列 文章,這里不做闡述說明。

cs操作接口使用sdk對應(yīng)的board的cs操作API,可自行根據(jù)應(yīng)用更改。

2ada8c84-7859-11ee-939d-92fbcf53809c.png

3、讀寫單字節(jié)操作注冊

需要注意的是,這里為了方便快速操作,比如在讀接口SPI設(shè)置為只讀,然后設(shè)置傳輸長度,復(fù)位FIFO,開啟傳輸,等待數(shù)據(jù)接收完成后讀取數(shù)據(jù)。寫接口也是如此。具體請詳見 玩轉(zhuǎn)先楫SPI外設(shè)系列 文章,這里同樣不做闡述說明。

2af4acea-7859-11ee-939d-92fbcf53809c.png

4、塊讀寫傳輸操作注冊

DMA相關(guān)的操作請詳見 玩轉(zhuǎn)先楫SPI外設(shè)系列 文章,這里同樣不做闡述說明。

5、注冊相關(guān)操作接口

2b1cd4cc-7859-11ee-939d-92fbcf53809c.png

(三)以ioLibrary_Driver庫測試wiznet的速率性能。

W5500官方手冊中,雖然可以支持到80M的SPI SCLK,但官方的建議是33.3M推薦頻率,再高的頻率會出現(xiàn)些許采樣問題,在實際測試的過程中也是如此,hpm_sdk的Board.h默認為20M,本文SLCK的頻率調(diào)整為30M左右測試。

在性能上,wiznet官方也出了W5500對應(yīng)的MAX速率為15Mbps。如果需要更高的可以選擇W5100/s

2b3dc22c-7859-11ee-939d-92fbcf53809c.png

2b59b8e2-7859-11ee-939d-92fbcf53809c.png

2b77d4d0-7859-11ee-939d-92fbcf53809c.png

在本文所實現(xiàn)的例子實現(xiàn)中,可通過cmakelists開啟或者關(guān)閉DHCP,或者開啟和關(guān)閉tcp iperf測試。默認都是開啟。

2b939e86-7859-11ee-939d-92fbcf53809c.png

如果想靜態(tài)IP分配,那么直接在main.c中更改load_net_parameters API里面的ip值即可。

2ba1c5e2-7859-11ee-939d-92fbcf53809c.png

iperf測試軟件鏈接:

https://cloud.firebbs.cn/forum/201903/14/141408i20v8ny2i8tckkzy.zip?OSSAccessKeyId=LTAI4GJiLU8j9rPvpTDpqQKC&Expires=1698567700&Signature=JPFda8WE9%2BSZpIcf8JY8xOHd4xo%3D

這里iperf測試主要測試W5500作為Tcp client的發(fā)送性能。在SPI SCLK 30M下,可以達到17Mbps速度性能,與wiznet官方提供的15Mbsps速率相當(dāng),滿足性能需求。

2bb3cf62-7859-11ee-939d-92fbcf53809c.png

2bd02b9e-7859-11ee-939d-92fbcf53809c.png

目前ioLibrary_Driver庫性能還能繼續(xù)提升,比如修改socket的send和recv實現(xiàn)邏輯,減少查詢和等待;中間層少數(shù)據(jù)收發(fā)再次封裝等等。

在邏輯分析儀下,socket的發(fā)送接口send,在實際發(fā)送前,會查詢以及等待相關(guān)網(wǎng)絡(luò)狀態(tài)寄存器,占用了不少時間。wiznet提供的15mbps只有理論的一半性能也是這個時間所消耗引起。

2bf287b6-7859-11ee-939d-92fbcf53809c.png

2c19a918-7859-11ee-939d-92fbcf53809c.png

三、總結(jié)

在ioLibrary_Driver庫下,hpm的SPI驅(qū)動W5500的網(wǎng)絡(luò)性能可以達到17Mbps,與wiznet官方的15Mbps保持一致。

如果需要提高性能,可以選擇wetne其他芯片?;蛘咦陨韮?yōu)化wiznet的ioLibrary_Driver庫。比如socket的發(fā)送send邏輯。

對于HPM6200,HPM5300等先楫通用MCU沒有以太網(wǎng)接口,但是有實際以太網(wǎng)需求或者方案平替,可以選擇SPI驅(qū)動相關(guān)的芯片網(wǎng)絡(luò)接口。

審核編輯:湯梓紅

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650584
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124543
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1804

    瀏覽量

    96014
  • 接口芯片
    +關(guān)注

    關(guān)注

    0

    文章

    100

    瀏覽量

    17210

原文標(biāo)題:開發(fā)者分享|[hpm_application]先楫單片機使用SPI驅(qū)動網(wǎng)絡(luò)接口芯片W5xxx(wiznet)

文章出處:【微信號:HPMicro,微信公眾號:先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    2014 深圳Maker Faire — WIZnet展出預(yù)告

    allows 可使Arduino板連接網(wǎng)絡(luò).基于WIZ550io 網(wǎng)絡(luò)模塊,使用 WIZnet W5500 以太網(wǎng)芯片 (
    發(fā)表于 04-03 11:06

    第一輪 WIZnet - W5500EVB/模塊免費試用測評活動

    格式回復(fù)?;顒?:WIZ550io (WIZnet官方W5500模塊)免費試用申領(lǐng),3個名額 WIZ550io是一個自動配置網(wǎng)絡(luò)參數(shù)的以太網(wǎng)模塊,包含一個W5500以太網(wǎng)
    發(fā)表于 04-29 11:20

    WIZnet網(wǎng)絡(luò)產(chǎn)品如何選型

    的處理器系統(tǒng)要求較高。小編補充:W5500是繼W5100、W5200&W5300后,W5***系列新一款全硬件TCP/IP以太網(wǎng)
    發(fā)表于 07-09 17:18

    新華龍電子推出最新網(wǎng)絡(luò)開發(fā)板(W5100&W5500方案)

    方案?! ≤浖矫嫔钲谛氯A龍電子有限公司提供了豐富的代碼資源供用戶評估?! ?b class='flag-5'>網(wǎng)絡(luò)開發(fā)板布局:芯片特性:1、W5500全硬件TCP/IP協(xié)議棧網(wǎng)絡(luò)芯片
    發(fā)表于 12-17 17:22

    轉(zhuǎn)帖:ArduinoCN-WIZnet網(wǎng)絡(luò)專區(qū)開版有獎?wù)鞲寤顒?/a>

    的Arduino聯(lián)網(wǎng)了嗎?Arduino 官方以太網(wǎng)板 網(wǎng)絡(luò)部分采用了WIZnet 全硬件TCP/IP協(xié)議棧芯片W5100,自推出后,得到了眾多用戶的肯定與支持。而后,眾多開源廠商紛紛
    發(fā)表于 12-22 16:30

    wiznet芯片客戶常見問題的技術(shù)問題

    子網(wǎng)中使用,應(yīng)具備唯一的MAC地址,唯一的IP地址,因為不在同一塊網(wǎng)絡(luò)芯片,IP地址、MAC地址不一樣,因此可以設(shè)置成一樣的端口號。 WIZnet網(wǎng)絡(luò)
    發(fā)表于 03-06 13:55

    WIZnet相關(guān)產(chǎn)品介紹

    ` 本帖最后由 Katrina_WIZnet 于 2015-7-10 15:39 編輯 WIZnet自1998年在韓國創(chuàng)立以來,一致專注研發(fā)全硬件TCP/IP協(xié)議棧芯片,同時開發(fā)設(shè)計相關(guān)網(wǎng)
    發(fā)表于 07-10 15:29

    在RT -Thread下怎樣去驅(qū)動W5500網(wǎng)絡(luò)芯片

    RT -Thread Studio V2.0.0芯片STM32F407VGT6網(wǎng)絡(luò)芯片W5500硬件連接第一步,打開SPI設(shè)備
    發(fā)表于 05-17 17:23

    添加w5500找不到Wiznet chip是什么原因呢?

    添加以太網(wǎng),spi成功掛載,w5500也掛載上了,自動初始化.c文件也添加了,然后下載顯示找不到網(wǎng)絡(luò)芯片。[E/wiz] Wiznet ch
    發(fā)表于 01-10 17:06

    基于SPI總線的醫(yī)療儀器網(wǎng)絡(luò)接口設(shè)計

    本文給出了一種基于SPI 總線的醫(yī)療儀器網(wǎng)絡(luò)接口的設(shè)計方法。網(wǎng)絡(luò)接口由PIC 單片機和W5100
    發(fā)表于 12-23 17:09 ?39次下載

    WIZnet發(fā)布最新單片式以太網(wǎng)控制芯片W7100

    WIZnet發(fā)布最新單片式以太網(wǎng)控制芯片W7100 WIZnet HK Ltd 宣布推出嶄新的芯片W
    發(fā)表于 01-27 08:36 ?1353次閱讀

    WIZnet宣布推出嶄新的芯片W7100

    WIZnet宣布推出嶄新的芯片W7100  WIZnet HK Ltd 宣佈推出嶄新的芯片W7
    發(fā)表于 01-27 09:54 ?1604次閱讀

    Wiznet W5300 應(yīng)用的FPGA硬件原理圖

    Wiznet W5300 應(yīng)用的FPGA硬件原理圖,F(xiàn)PGA芯片為Altera Cyclone II EP2C5T144C8N。
    發(fā)表于 05-04 14:20 ?102次下載

    SPI子系統(tǒng):SPI設(shè)備驅(qū)動

    SPI 設(shè)備驅(qū)動 【設(shè)備】聲明在設(shè)備樹中 注意:設(shè)備的聲明,slave device node 應(yīng)該包含在你所要掛載的 } /* remove 函數(shù) */ static int xxx
    的頭像 發(fā)表于 07-25 11:05 ?1384次閱讀
    <b class='flag-5'>SPI</b>子系統(tǒng):<b class='flag-5'>SPI</b>設(shè)備<b class='flag-5'>驅(qū)動</b>

    先楫單片機使用SPI驅(qū)動網(wǎng)絡(luò)接口芯片W5xxx(wiznet)

    一、概述本文應(yīng)用主要是使用SPI驅(qū)動wiznet網(wǎng)絡(luò)接口芯片
    的頭像 發(fā)表于 11-01 08:18 ?2415次閱讀
    先楫單片機使用<b class='flag-5'>SPI</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>接口</b><b class='flag-5'>芯片</b><b class='flag-5'>W5xxx</b>(<b class='flag-5'>wiznet</b>)