0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于SDIO协议的WiFi模块实现指南

电子发烧友开源社区 来源:未知 2022-12-20 09:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

WiFi模块可以封装成多种不同的接口,如SDIO、PCIe。SDIO接口的WiFi也是最常见的一种。SDIO接口最先被应用在存储卡上,后来其命令模式衍生到摄像头、WiFi等设备上。SDIO接口协议作是一种应用广泛的接口协议,其功能被集成在linux 的driver/mmc目录下,其中core目录封装了sdio的协议框架,定义接口。host目录则为具体的产品设备用到的接口函数的实现。现具体的分析SDIO总线通信原理:SDIO总线 和 USB总线 类似,SDIO也有两端。当中一端是HOST端,还有一端是device端。通信时HOST端驱动时钟线发送命令,Device端需要解析命令并给出应答,从而实现互相通信。通信总线:
CLK信号:HOST给DEVICE的 时钟信号,每个时钟周期传输一个命令或数据位 。

CMD信号:命令在 CMD 线上串行传输,是
双向半双工的(命令从主机到从卡,而命令的响应是从卡发送到主机)。

DAT0-DAT3 信号:四条用于快速传送数据的数据线,由CLK同步的信号。
20abd65a-8002-11ed-8abf-dac502259ad0.png  1、设备驱动的注冊与匹配
[Drivers/net/wireless/libertas/if_sdio.c]
/* sdio function device driver*/


struct sdio_driver {
char *name;  //设备名
const struct sdio_device_id *id_table; //设备驱动ID
int (*probe)(struct sdio_func *, const struct sdio_device_id *);//匹配函数
void (*remove)(struct sdio_func *);
struct device_driver drv;
};
数据的接收,通过中断的方式来解决 网络设备接收数据的主要方法是由中断引发设备的中断处理函数,中断处理函数推断中断的类型,假设为接收中断。则读取接收到的数据。分配sk_buff数据结构和数据缓冲区。并将接收的数据拷贝到数据缓存区。并调用netif_rx()函数将sk_buff传递给上层协议。 搜索if_sdio_interrupt,可知道它是在if_sdio.c文件里if_sdio_probe()函数中sdio_claim_irq(func, if_sdio_interrupt) ,func->irq_handler = if_sdio_interrupt。当s3cmci_irq中断处理函数的S3C2410_SDIIMSK_sdioIRQ 中断被触发时将调用if_sdio_interrupt()函数,进行接收数据。
static void if_sdio_interrupt(struct sdio_func *func)
数据发送维护了网络传输的数据,是比较重要的调试接口,可以由此获得全部的输出数据信息。
//IP层通过dev_queue_xmit()将数据交给网络设备协议接口层,网络接口层通过netdevice中的注冊函数的数据发送函数int dev_queue_xmit(struct sk_buff *skb)
移除函数当sdio卡拔除时。驱动会调用该函数。完毕对应操作。 拔除后,首先是管脚电平发生变化,从而触发管脚中断,程序由此得到消息,执行了释放函数 如释放占有的资源。禁止func功能函数。释放host。
if_sdio_remove(struct sdio_func *func)
---->lbs_stop_card(card->priv);
lbs_remove_card(card->priv);
     ---->kthread_stop(priv->main_thread);  //终止内核线程


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


flush_workqueue(card->workqueue);  //刷新工作队列
destroy_workqueue(card->workqueue);
sdio_claim_host(func);
sdio_release_irq(func);
sdio_disable_func(func);
sdio_release_host(func);
本文介绍了基于SDIO接口协议的WiFi模块,简单阐述了SDIO总线通信原理,列举了设备驱动的注册、匹配中使用到的重点接口函数的作用,包含数据接收,发送,以及资源的释放。让用户在一些设备上使用SDIO接口协议开发时,更清晰方便的了解其工作原理和重点接口函数的使用,帮助用户提升开发效率。 更多热点文章阅读
  • 粤港澳大湾区国际人工智能机器人高峰会2022重磅来袭!
  • 搜电充电:创新“服务卡片”,让即时充电更便捷
  • ArkUI框架,更懂程序员的UI信息语法
  • 全球首个港口全面数字孪生技术底座“津鸿”系统发布
  • 一个在线阅读OpenHarmony全量代码的网站

提示:本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


原文标题:基于SDIO协议的WiFi模块实现指南

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电子发烧友
    +关注

    关注

    33

    文章

    584

    浏览量

    33978
  • 开源社区
    +关注

    关注

    0

    文章

    95

    浏览量

    771

原文标题:基于SDIO协议的WiFi模块实现指南

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DL/T645协议瓶颈突破:瑞银充电桩电表协议配置指南

    DL/T645协议瓶颈突破:瑞银充电桩电表协议配置指南
    的头像 发表于 12-02 17:13 1214次阅读
    DL/T645<b class='flag-5'>协议</b>瓶颈突破:瑞银充电桩电表<b class='flag-5'>协议</b>配置<b class='flag-5'>指南</b>

    什么是WiFi远程控制模块?技术特点和应用场景有哪些?

    便捷和高效。无论是通过手机APP、电脑终端,还是智能语音助手,WiFi远程控制模块都能够帮助用户实现实时、远程操作,提升生活质量与工作效率。 什么是WiFi远程控制
    的头像 发表于 11-29 14:10 88次阅读
    什么是<b class='flag-5'>WiFi</b>远程控制<b class='flag-5'>模块</b>?技术特点和应用场景有哪些?

    SD NAND 接口协议解析:SPI 与 SDIO 模式区别及适配方法

    SD NAND 之所以能被 STM32、GD32 等 MCU 控制,核心是通过 “接口协议” 建立沟通规则 —— 就像两个人交流需要共同语言,SPI 和 SDIO 就是 SD NAND 与 MCU
    的头像 发表于 10-31 14:46 473次阅读
    SD NAND 接口<b class='flag-5'>协议</b>解析:SPI 与 <b class='flag-5'>SDIO</b> 模式区别及适配方法

    LoRa模块WiFi对比:哪个是最佳选择?

    您的项目是否需要比WiFi所能提供的更广的覆盖范围?对于许多物联网设备而言,WiFi往往力不从心。本指南将帮助您做出选择。我们将并排审视这两种技术,帮助您为您的需求找到最佳的LoRa模块
    的头像 发表于 10-31 12:03 2137次阅读
    LoRa<b class='flag-5'>模块</b>与<b class='flag-5'>WiFi</b>对比:哪个是最佳选择?

    智能音箱蓝牙与WiFi模块的ESD防护方案

    在智能音箱的日常使用中,高度依赖无线连接功能,其中WiFi与蓝牙模块是其实现远程操控、语音交互及多设备联动的基础。而这类高频通信模块对静电放电(ESD)极为敏感,ESD可能直接导致无线
    的头像 发表于 09-24 14:55 4363次阅读
    智能音箱蓝牙与<b class='flag-5'>WiFi</b><b class='flag-5'>模块</b>的ESD防护方案

    SDIO SD卡电路设计速成攻略:核心步骤+调试技巧 !

    针对时间紧迫的开发者,本攻略直击SDIO外接SD卡电路设计的核心步骤,并补充实用调试技巧,帮助你在最短时间完成从理论到可用的电路实现。 今天一起来聊聊 SDIO外接SD卡: SDIO
    的头像 发表于 08-15 14:32 494次阅读
    <b class='flag-5'>SDIO</b> SD卡电路设计速成攻略:核心步骤+调试技巧 !

    AIC8800DL双频WiFi6模块sdio接口解锁极速未来

    在万物互联的时代,网络速度与稳定性已成为智能生活的核心需求。无论是智能家居、远程办公,还是4K影音、在线游戏,传统无线技术已难以满足高速、低延迟的应用场景。而WiFi6模块的诞生,正是为了打破瓶颈
    的头像 发表于 07-28 15:18 617次阅读
    AIC8800DL双频<b class='flag-5'>WiFi</b>6<b class='flag-5'>模块</b>,<b class='flag-5'>sdio</b>接口解锁极速未来

    请问下WHD driver支持CYW55573 SDIO接口的WIFI吗?

    请问WHD driver支持CYW55573 SDIO接口的WIFI吗?
    发表于 07-08 07:32

    从驱动到应用:RT-Thread环境下的SDIO开发指南

    目录硬件介绍搭建开发环境配置SDIO驱动挂载文件系统文件读写测试演示视频源码工程总结本文主要讲述RT-Thread环境下的SDIO开发指南,基于MCXN947开发板。1硬件介绍本次测评的是SD
    的头像 发表于 06-28 09:02 2468次阅读
    从驱动到应用:RT-Thread环境下的<b class='flag-5'>SDIO</b>开发<b class='flag-5'>指南</b>

    涂鸦各WiFi模块原理图加PCB封装

    涂鸦各WiFi模块原理图加PCB封装
    发表于 06-04 16:36 94次下载

    STM32WB5MMG模块能否支持Thread转WIFI

    请帮忙推荐一款可以WIFI转Sub-G/Zibber协议的芯片,希望做了无线认证。非常感谢。 1.STM32WB5MMG模块能否支持Thread转WIFI; 2.Nucleo-WBA5
    发表于 06-04 07:21

    基于RV1126开发板的WiFi+蓝牙硬件电路设计

    核心板的WiFi模块采用的是正基的AP6212,集2.4GHz WiFi和蓝牙4.2于一体。WiFi和蓝牙信号都是通过天线接口J8进行射频信号的收发。
    的头像 发表于 04-16 18:00 725次阅读
    基于RV1126开发板的<b class='flag-5'>WiFi</b>+蓝牙硬件电路设计

    WiFi模块选购必看:2025年全球十大品牌推荐及WiFi方案选型指南

    随着物联网(IoT)、智能家居、工业自动化等领域的快速发展,WiFi模块作为无线通信的核心组件,其市场需求持续增长。根据最新市场研究,2024年全球WiFi模块市场规模约为589.4亿
    的头像 发表于 03-28 15:09 2687次阅读
    <b class='flag-5'>WiFi</b><b class='flag-5'>模块</b>选购必看:2025年全球十大品牌推荐及<b class='flag-5'>WiFi</b>方案选型<b class='flag-5'>指南</b>

    浅谈CAN协议转换模块

    转换模块实现数据在不同系统间的无缝传输,提升系统的灵活性和可扩展性。 一、基本概念 CAN协议转换模块,简而言之,将CAN总线上的数据转换为其他通信
    的头像 发表于 02-05 16:37 740次阅读

    CW32模块使用 ESP01S WIFI模块

    为现有的设备添加联网功能,也可以构建独立的网络控制器。即使在不了解其原理的情况下,只要有一定的串口知识理解,那么就可以轻松上手该模块,进而实现手机WiFi操作。功能特点:基于ESP8266芯片开发,模组集成了透传功能,即买即用,
    的头像 发表于 01-23 13:08 1169次阅读
    CW32<b class='flag-5'>模块</b>使用 ESP01S <b class='flag-5'>WIFI</b><b class='flag-5'>模块</b>