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

    文章

    546

    浏览量

    32359
  • 开源社区
    +关注

    关注

    0

    文章

    92

    浏览量

    342

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

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

收藏 人收藏

    评论

    相关推荐

    串口WiFi模块简介、工作原理、工作方式等8大知识点

    WiFi模块又名串口WiFi模块,属于物联网传输层,功能是将串口或TTL电平转为符合WiFi无线网络通信标准的嵌入式
    的头像 发表于 01-25 10:00 338次阅读
    串口<b class='flag-5'>WiFi</b><b class='flag-5'>模块</b>简介、工作原理、工作方式等8大知识点

    WiFi模块和蓝牙模块怎么区分?

    近些年,物联网技术越来越先进,给人类生活带来了巨大的便利。智能家居、智能家电点点滴滴都是科技进步的写照。物联网离不开WiFi蓝牙技术,不少设备厂商在蓝牙模块wifi模块之中犹豫不定,
    的头像 发表于 01-05 09:21 924次阅读
    <b class='flag-5'>WiFi</b><b class='flag-5'>模块</b>和蓝牙<b class='flag-5'>模块</b>怎么区分?

    WiFi蓝牙二合一模块实现智能工业控制

    ,也在物联网智能家居/家电领域中有着广阔应用前景。 WiFi蓝牙二合一模块 实现智能工业控制   基于WiFi+蓝牙二合一模块智能控制方案的
    的头像 发表于 01-03 09:24 313次阅读
    <b class='flag-5'>WiFi</b>蓝牙二合一<b class='flag-5'>模块</b><b class='flag-5'>实现</b>智能工业控制

    SDIO接口的WIFI模块和SPI接口的WIFI模块速度差的很多吗?

    SDIO接口的WIFI模块和SPI接口的WIFI模块速度差的很多吗。感觉SDIO接口的驱动更难吧
    发表于 11-06 06:23

    AT32 MCU SDIO入门指南

    AT32 MCU SDIO入门指南本应用入门指南主要介绍以下几部分内容:1.基于雅特力提供V2.x.x 的BSP板级支持包来进行SD 存储卡、多媒体卡(MMC的命令和数据通信的配置及操作针对该存储卡
    发表于 10-25 08:08

    wifi模块的工作原理 wifi模块的优点

    WiFi模块是一种无线通信设备,其工作原理基于无线局域网技术,可连接到无线路由器,通过无线信号传输数据。其主要组成部分包括天线、射频电路、调制解调器和芯片。   WiFi模块的工
    的头像 发表于 10-05 15:59 2887次阅读

    如何在英飞凌开发板上使用cyw43012模块进行WIFI通讯

    cyw43012 模块 是由英飞凌基于 CYW43012 开发的 SDIO 高速 wifi&&蓝牙 模块
    的头像 发表于 09-20 15:01 1450次阅读
    如何在英飞凌开发板上使用cyw43012<b class='flag-5'>模块</b>进行<b class='flag-5'>WIFI</b>通讯

    AT32 MCU SDIO入门指南

    电子发烧友网站提供《AT32 MCU SDIO入门指南.pdf》资料免费下载
    发表于 09-19 16:18 1次下载
    AT32 MCU <b class='flag-5'>SDIO</b>入门<b class='flag-5'>指南</b>

    什么是SDIO wifi模块SDIO接口wifi模块WG244功能介绍

    上文提到的这款2T2R嵌入式SDIO接口wifi6+蓝牙二合一模块WG244现块需求的厂商们咨询,咨询电话:0755-83408210。
    的头像 发表于 08-16 12:08 1083次阅读
    什么是<b class='flag-5'>SDIO</b> <b class='flag-5'>wifi</b><b class='flag-5'>模块</b>,<b class='flag-5'>SDIO</b>接口<b class='flag-5'>wifi</b><b class='flag-5'>模块</b>WG244功能介绍

    WIFI模块通过TCP协议发送HTTP的详细资料说明

    本文档的主要内容详细介绍的是WIFI模块通过TCP协议发送HTTP的详细资料说明。
    发表于 08-14 10:45 42次下载

    什么是SDIO wifi模块SDIO接口wifi模块WG244功能介绍

    SDIO接口WiFi模块WG244将为客户实现通过嵌入式硬件SDIO 接口高效快捷的扩展出无线局域网通信功能,是一种符合国际标准的简单、低成
    的头像 发表于 08-01 11:55 1044次阅读
    什么是<b class='flag-5'>SDIO</b> <b class='flag-5'>wifi</b><b class='flag-5'>模块</b>,<b class='flag-5'>SDIO</b>接口<b class='flag-5'>wifi</b><b class='flag-5'>模块</b>WG244功能介绍

    SDIO接口wifi蓝牙二合一系列模块选型参考和外围电路参考设计-WG225/WG244

    SDIO接口是一种可用于连接外部设备的接口,其中包括wifi模块、蓝牙模块wifi+蓝牙二合一模块
    的头像 发表于 07-21 17:25 923次阅读
    <b class='flag-5'>SDIO</b>接口<b class='flag-5'>wifi</b>蓝牙二合一系列<b class='flag-5'>模块</b>选型参考和外围电路参考设计-WG225/WG244

    SDIO接口wifi蓝牙二合一系列模块选型参考和外围电路参考设计-WG225/WG244

    SDIO接口是一种可用于连接外部设备的接口,其中包括wifi模块、蓝牙模块wifi+蓝牙二合一模块
    的头像 发表于 07-21 16:54 689次阅读
    <b class='flag-5'>SDIO</b>接口<b class='flag-5'>wifi</b>蓝牙二合一系列<b class='flag-5'>模块</b>选型参考和外围电路参考设计-WG225/WG244

    单片机通信协议有哪些 单片机和wifi模块间怎么通信

    单片机和WiFi模块通信的方法有以下几种: 1. 串口通信:将单片机与WiFi模块通过串口连接,单片机通过串口发送命令给WiFi
    的头像 发表于 06-13 17:56 1.1w次阅读

    如何访问Lolin Node mcu Wifi模块中的SDIO slave?

    我试图通过将 wifi 板上的 S0、S1、S2、S3、SK、SC 引脚连接到外部 SDIO 主机来访问 Wifi 模块中的 SDIO 从设
    发表于 05-08 06:09