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

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

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

基于SDIO協(xié)議的WiFi模塊實(shí)現(xiàn)指南

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:未知 ? 2022-12-20 09:05 ? 次閱讀
WiFi模塊可以封裝成多種不同的接口,如SDIO、PCIe。SDIO接口的WiFi也是最常見(jiàn)的一種。SDIO接口最先被應(yīng)用在存儲(chǔ)卡上,后來(lái)其命令模式衍生到攝像頭、WiFi等設(shè)備上。SDIO接口協(xié)議作是一種應(yīng)用廣泛的接口協(xié)議,其功能被集成在linux 的driver/mmc目錄下,其中core目錄封裝了sdio的協(xié)議框架,定義接口。host目錄則為具體的產(chǎn)品設(shè)備用到的接口函數(shù)的實(shí)現(xiàn)。現(xiàn)具體的分析SDIO總線(xiàn)通信原理:SDIO總線(xiàn) 和 USB總線(xiàn) 類(lèi)似,SDIO也有兩端。當(dāng)中一端是HOST端,還有一端是device端。通信時(shí)HOST端驅(qū)動(dòng)時(shí)鐘線(xiàn)發(fā)送命令,Device端需要解析命令并給出應(yīng)答,從而實(shí)現(xiàn)互相通信。通信總線(xiàn):
CLK信號(hào):HOST給DEVICE的 時(shí)鐘信號(hào),每個(gè)時(shí)鐘周期傳輸一個(gè)命令或數(shù)據(jù)位 。

CMD信號(hào):命令在 CMD 線(xiàn)上串行傳輸,是
雙向半雙工的(命令從主機(jī)到從卡,而命令的響應(yīng)是從卡發(fā)送到主機(jī))。

DAT0-DAT3 信號(hào):四條用于快速傳送數(shù)據(jù)的數(shù)據(jù)線(xiàn),由CLK同步的信號(hào)。
20abd65a-8002-11ed-8abf-dac502259ad0.png ?1、設(shè)備驅(qū)動(dòng)的注冊(cè)與匹配
[Drivers/net/wireless/libertas/if_sdio.c]
/* sdio function device driver*/


struct sdio_driver {
char *name;  //設(shè)備名
const struct sdio_device_id *id_table; //設(shè)備驅(qū)動(dòng)ID
int (*probe)(struct sdio_func *, const struct sdio_device_id *);//匹配函數(shù)
void (*remove)(struct sdio_func *);
struct device_driver drv;
};
數(shù)據(jù)的接收,通過(guò)中斷的方式來(lái)解決 網(wǎng)絡(luò)設(shè)備接收數(shù)據(jù)的主要方法是由中斷引發(fā)設(shè)備的中斷處理函數(shù),中斷處理函數(shù)推斷中斷的類(lèi)型,假設(shè)為接收中斷。則讀取接收到的數(shù)據(jù)。分配sk_buff數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)緩沖區(qū)。并將接收的數(shù)據(jù)拷貝到數(shù)據(jù)緩存區(qū)。并調(diào)用netif_rx()函數(shù)將sk_buff傳遞給上層協(xié)議。 搜索if_sdio_interrupt,可知道它是在if_sdio.c文件里if_sdio_probe()函數(shù)中sdio_claim_irq(func, if_sdio_interrupt) ,func->irq_handler = if_sdio_interrupt。當(dāng)s3cmci_irq中斷處理函數(shù)的S3C2410_SDIIMSK_sdioIRQ 中斷被觸發(fā)時(shí)將調(diào)用if_sdio_interrupt()函數(shù),進(jìn)行接收數(shù)據(jù)。
static void if_sdio_interrupt(struct sdio_func *func)
數(shù)據(jù)發(fā)送維護(hù)了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),是比較重要的調(diào)試接口,可以由此獲得全部的輸出數(shù)據(jù)信息。
//IP層通過(guò)dev_queue_xmit()將數(shù)據(jù)交給網(wǎng)絡(luò)設(shè)備協(xié)議接口層,網(wǎng)絡(luò)接口層通過(guò)netdevice中的注冊(cè)函數(shù)的數(shù)據(jù)發(fā)送函數(shù)int dev_queue_xmit(struct sk_buff *skb)
移除函數(shù)當(dāng)sdio卡拔除時(shí)。驅(qū)動(dòng)會(huì)調(diào)用該函數(shù)。完畢對(duì)應(yīng)操作。 拔除后,首先是管腳電平發(fā)生變化,從而觸發(fā)管腳中斷,程序由此得到消息,執(zhí)行了釋放函數(shù) 如釋放占有的資源。禁止func功能函數(shù)。釋放host。
if_sdio_remove(struct sdio_func *func)
---->lbs_stop_card(card->priv);
lbs_remove_card(card->priv);
     ---->kthread_stop(priv->main_thread);  //終止內(nèi)核線(xiàn)程


lbs_free_adapter(priv);
lbs_cfg_free(priv);
free_netdev(dev);


flush_workqueue(card->workqueue);  //刷新工作隊(duì)列
destroy_workqueue(card->workqueue);
sdio_claim_host(func);
sdio_release_irq(func);
sdio_disable_func(func);
sdio_release_host(func);
本文介紹了基于SDIO接口協(xié)議的WiFi模塊,簡(jiǎn)單闡述了SDIO總線(xiàn)通信原理,列舉了設(shè)備驅(qū)動(dòng)的注冊(cè)、匹配中使用到的重點(diǎn)接口函數(shù)的作用,包含數(shù)據(jù)接收,發(fā)送,以及資源的釋放。讓用戶(hù)在一些設(shè)備上使用SDIO接口協(xié)議開(kāi)發(fā)時(shí),更清晰方便的了解其工作原理和重點(diǎn)接口函數(shù)的使用,幫助用戶(hù)提升開(kāi)發(fā)效率。 更多熱點(diǎn)文章閱讀
  • 粵港澳大灣區(qū)國(guó)際人工智能機(jī)器人高峰會(huì)2022重磅來(lái)襲!
  • 搜電充電:創(chuàng)新“服務(wù)卡片”,讓即時(shí)充電更便捷
  • ArkUI框架,更懂程序員的UI信息語(yǔ)法
  • 全球首個(gè)港口全面數(shù)字孿生技術(shù)底座“津鴻”系統(tǒng)發(fā)布
  • 一個(gè)在線(xiàn)閱讀OpenHarmony全量代碼的網(wǎng)站

提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來(lái)源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


原文標(biāo)題:基于SDIO協(xié)議的WiFi模塊實(shí)現(xiàn)指南

文章出處:【微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

原文標(biāo)題:基于SDIO協(xié)議的WiFi模塊實(shí)現(xiàn)指南

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析SDIO協(xié)議V2和V3版本的區(qū)別

    SDIO(Secure Digital Input/Output)協(xié)議V2和V3在多個(gè)方面存在顯著的區(qū)別,這些區(qū)別主要體現(xiàn)在功能支持、硬件要求、安全性以及支持的協(xié)議等方面。以下是對(duì)這些區(qū)別的詳細(xì)分析
    發(fā)表于 09-18 08:32

    HART協(xié)議基本指南

    電子發(fā)燒友網(wǎng)站提供《HART協(xié)議基本指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 10:31 ?2次下載
    HART<b class='flag-5'>協(xié)議</b>基本<b class='flag-5'>指南</b>

    FPGA實(shí)現(xiàn)SDIO訪(fǎng)問(wèn)需要注意的問(wèn)題

    FPGA實(shí)現(xiàn)SDIO訪(fǎng)問(wèn)時(shí),需要注意以下幾個(gè)關(guān)鍵問(wèn)題和細(xì)節(jié): 初始化過(guò)程: SDIO總線(xiàn)的初始化是確保FPGA與SD卡能夠正常通信的第一步。這包括設(shè)置時(shí)鐘頻率、配置數(shù)據(jù)傳輸模式以及校驗(yàn)協(xié)議
    發(fā)表于 06-27 08:38

    WiFi模塊和藍(lán)牙模塊怎么區(qū)分?

    近些年,物聯(lián)網(wǎng)技術(shù)越來(lái)越先進(jìn),給人類(lèi)生活帶來(lái)了巨大的便利。智能家居、智能家電點(diǎn)點(diǎn)滴滴都是科技進(jìn)步的寫(xiě)照。物聯(lián)網(wǎng)離不開(kāi)WiFi藍(lán)牙技術(shù),不少設(shè)備廠(chǎng)商在藍(lán)牙模塊wifi模塊之中猶豫不定,
    的頭像 發(fā)表于 05-29 10:14 ?662次閱讀
    <b class='flag-5'>WiFi</b><b class='flag-5'>模塊</b>和藍(lán)牙<b class='flag-5'>模塊</b>怎么區(qū)分?

    SDIO總線(xiàn)啟動(dòng)失敗, whd_kso_enable失敗的原因?

    我們?cè)谛庐a(chǎn)品中移植了 WIFI 協(xié)議棧,但出現(xiàn)了 WIFI 穩(wěn)定性問(wèn)題,主要是顯示 SDIO 總線(xiàn)通信錯(cuò)誤,出現(xiàn)該問(wèn)題時(shí)我們重啟了協(xié)議棧,但
    發(fā)表于 05-28 07:26

    國(guó)產(chǎn)ARM + FPGA的SDIO通信開(kāi)發(fā)介紹!

    SDIO(Secure Digital lnput and Output),即安全數(shù)字輸入輸出接口。SDIO總線(xiàn)協(xié)議是由SD協(xié)議演化而來(lái),它主要是對(duì)SD
    的頭像 發(fā)表于 05-17 14:26 ?568次閱讀
    國(guó)產(chǎn)ARM + FPGA的<b class='flag-5'>SDIO</b>通信開(kāi)發(fā)介紹!

    技術(shù)分享!國(guó)產(chǎn)ARM + FPGA的SDIO通信開(kāi)發(fā)介紹!

    SDIO總線(xiàn)介紹 SDIO(Secure Digital lnput and Output),即安全數(shù)字輸入輸出接口。SDIO總線(xiàn)協(xié)議是由SD協(xié)議
    的頭像 發(fā)表于 05-14 14:02 ?552次閱讀
    技術(shù)分享!國(guó)產(chǎn)ARM + FPGA的<b class='flag-5'>SDIO</b>通信開(kāi)發(fā)介紹!

    技術(shù)分享!國(guó)產(chǎn)ARM + FPGA的SDIO通信開(kāi)發(fā)介紹!

    SDIO總線(xiàn)介紹SDIO(SecureDigitallnputandOutput),即安全數(shù)字輸入輸出接口。SDIO總線(xiàn)協(xié)議是由SD協(xié)議演化
    的頭像 發(fā)表于 05-14 08:05 ?356次閱讀
    技術(shù)分享!國(guó)產(chǎn)ARM + FPGA的<b class='flag-5'>SDIO</b>通信開(kāi)發(fā)介紹!

    串口WiFi模塊簡(jiǎn)介、工作原理、工作方式等8大知識(shí)點(diǎn)

    WiFi模塊又名串口WiFi模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或TTL電平轉(zhuǎn)為符合WiFi無(wú)線(xiàn)網(wǎng)絡(luò)通信標(biāo)準(zhǔn)的嵌入式
    的頭像 發(fā)表于 01-25 10:00 ?1106次閱讀
    串口<b class='flag-5'>WiFi</b><b class='flag-5'>模塊</b>簡(jiǎn)介、工作原理、工作方式等8大知識(shí)點(diǎn)

    關(guān)于WiFi協(xié)議的調(diào)制方式詳解

    WiFi協(xié)議,也稱(chēng)為無(wú)線(xiàn)保真技術(shù),是一種允許電子設(shè)備通過(guò)無(wú)線(xiàn)方式在局域網(wǎng)(WLAN)和互聯(lián)網(wǎng)上進(jìn)行通信的技術(shù)標(biāo)準(zhǔn)?;贗EEE 802.11系列協(xié)議,這是一種由電氣和電子工程師協(xié)會(huì)制定的無(wú)線(xiàn)局域網(wǎng)
    的頭像 發(fā)表于 01-19 18:22 ?1852次閱讀

    WiFi協(xié)議技術(shù)詳解概述

    WiFi協(xié)議是一種廣泛應(yīng)用的無(wú)線(xiàn)通信技術(shù)標(biāo)準(zhǔn),它通過(guò)多個(gè)層次和協(xié)議實(shí)現(xiàn)了高效的無(wú)線(xiàn)數(shù)據(jù)傳輸、安全管理、移動(dòng)性支持等功能。隨著技術(shù)的發(fā)展和應(yīng)用場(chǎng)景的不斷擴(kuò)大,
    的頭像 發(fā)表于 01-19 17:27 ?1310次閱讀

    數(shù)據(jù)透?jìng)鬟x擇低功耗WiFi模塊還是選擇低功耗藍(lán)牙模塊

    WiFi模塊和藍(lán)牙模塊,針對(duì)部分領(lǐng)域的低功耗數(shù)據(jù)透?jìng)餍枨?,工程師是該選擇低功耗WiFi模塊還是低功耗藍(lán)牙
    的頭像 發(fā)表于 01-10 18:44 ?601次閱讀
    數(shù)據(jù)透?jìng)鬟x擇低功耗<b class='flag-5'>WiFi</b><b class='flag-5'>模塊</b>還是選擇低功耗藍(lán)牙<b class='flag-5'>模塊</b>?

    WiFi模塊和藍(lán)牙模塊怎么區(qū)分?

    近些年,物聯(lián)網(wǎng)技術(shù)越來(lái)越先進(jìn),給人類(lèi)生活帶來(lái)了巨大的便利。智能家居、智能家電點(diǎn)點(diǎn)滴滴都是科技進(jìn)步的寫(xiě)照。物聯(lián)網(wǎng)離不開(kāi)WiFi藍(lán)牙技術(shù),不少設(shè)備廠(chǎng)商在藍(lán)牙模塊wifi模塊之中猶豫不定,
    的頭像 發(fā)表于 01-05 09:21 ?3154次閱讀
    <b class='flag-5'>WiFi</b><b class='flag-5'>模塊</b>和藍(lán)牙<b class='flag-5'>模塊</b>怎么區(qū)分?

    MS-WB212F WiFi通信模塊如何實(shí)現(xiàn)低功耗工作

    MS-WB212F系列是2.4G頻段的WIFI模塊,基于ESP32-C2工業(yè)級(jí)藍(lán)牙芯片為核心處理器,并符合IEEE 802.11 b/g/n(HT20)協(xié)議規(guī)范。
    的頭像 發(fā)表于 12-21 11:23 ?500次閱讀

    SDIO接口的WIFI模塊和SPI接口的WIFI模塊速度差的很多嗎?

    SDIO接口的WIFI模塊和SPI接口的WIFI模塊速度差的很多嗎。感覺(jué)SDIO接口的驅(qū)動(dòng)更難吧
    發(fā)表于 11-06 06:23