一、什么是wifi 模块百度百科上这样定义:

Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。

二、WiFi 模块主要分类Wi-Fi模块可分为三类:

a -- 通用Wi-Fi模块比如手机、笔记本、平板电脑上的USBorSDIO接口模块,Wi-Fi协议栈和驱动是在安卓、Windows、IOS的系统里跑的,是需要非常强大的CPU来完成应用;

b -- 路由器方案Wi-Fi模块典型的是家用路由器,协议和驱动是借助拥有强大Flash和Ram资源的芯片加Linux操作系统;

c -- 嵌入式Wi-Fi模块32位单片机,内置Wi-Fi驱动和协议,接口为一般的MCU接口如UART等。适合于各类智能家居或智能硬件单品。

我觉得这里有必要了解一下普通Wi-Fi模块与嵌入式Wi-Fi模块的区别:

我们都知道笔记本、手机、平板电脑等这类产品具有强大的CPU和大容量的存储器进行网络通信数据的处理和存储,因此在使用WIFI时不需要额外的MCU,完全借助其高速处理器和庞大的软件系统。但是对于家电,仪表,LED灯等智能家居产品,因为该类产品的主控芯片可能是成本很低、功能简单的MCU,因此这类产品无法支持普通Wi-Fi的功能。同时,还有一个重要的原因就是普通WIFI的功耗比较高,而嵌入式WIFI在功耗上做了很大的改善,比较适合对功耗要求高的无线家电设备。

基于上述原因,各个无线厂商相继推出了嵌入式WIFI模块。嵌入式WIFI模块的特点是软硬件集成度高,整个嵌入式WIFI模块集成了射频收发器、MAC、WIFI驱动、所有WIFI协议、无线安全协议、一键连接等。总之,一句话:嵌入式WIFI应物联网而生!

下面我们针对嵌入式WIFI与普通WIFI来进行对比,通过下表的对比,我们大致上可以理解到什么是嵌入式WIFI

嵌入式WIFI模块   普通WIFI模块

适用范围   无线家电、仪表、智能灯泡等智能家居设备   笔记本、手机、平板电脑等

主控芯片   模块上集成的MCU   x86 CPU、ARM等高速微处理器

接口   UART、SPI、I2C、SDIO   USB、SDIO

功耗   低   高

产品   TI的CC3200系列、MXCHIP系列、ASIX系列

、Atheros的HF-LPA系列等   瑞昱RTL81xx系列、威盛VT系列、雷凌RT系列、

博通BCM、Marvell、高通Atheros等

开发设计   内置WIFI驱动、MAC、WIFI协议、无线安全协议等,

所有的网络软件封装成一个UART或SPI接口的设备,

使用简单,只需要往UART或者SPI收发数据即可。

从整体软件层面上看,不属于网络设备。   需要在主机添加WIFI驱动、同时需要依赖主机的网络协议栈等软件平台资源,

从整体软件层面上看,属于网络设备,使用时需要遵循网络相关的协议。

下面是笔者所用一款USB接口的WiFi模块原理图:

三、WiFi模块主要功能

Wifi 模块 包括两种类型的拓扑形式:基础网(Infra)和自组网(Adhoc),要说明无线网络的拓扑形式,首先要了解两个基本概念:a -- AP

也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。

b -- STA站点每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。

1、基于AP组建的基础无线网络(Infra)

Infra:也称为基础网,是由AP创建,众多STA加入所组成的无线网络,这种类型的网络的特点是AP是整个网络的中心,网络中所有的通信都通过AP来转发完成。附:

笔者所用WiFi模块有两种系统设置:无线网类型AP 和InfraAP是将wifi模块当路由器使用,这样手机和电脑就可以直接连接wifi模块了。

Infra 是将wifi模块当基础设备使用,用于连接别的路由器。

wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析相关推荐

  1. 【linux驱动分析】之dm9000驱动分析

    [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动 ...

  2. 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析

    [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9 ...

  3. 【SemiDrive源码分析】【MailBox核间通信】46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化、数据收发流程分析

    [SemiDrive源码分析][MailBox核间通信]46 - Android侧 RPMSG_IPCC_RPC驱动分析(下) 之 RPMSG_IPCC_RPC驱动初始化.数据收发流程分析 三. rp ...

  4. Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)

    一.W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下: 1.1.基本特性 该芯片最大支持10 ...

  5. linux spidev 应用_Linux下SPI驱动的移植和应用程序的测试

    Linux2.6.32下SPI驱动的移植如下图所示: 下面需要修改部分内核代码,具体操作如下: 1.  修改arch/arm/mach-s3c2440/mach-mini2440.c文件 在inclu ...

  6. 【linux驱动分析】misc设备驱动

        misc设备驱动.又称混杂设备驱动. misc设备驱动共享一个设备驱动号MISC_MAJOR.它在include\linux\major.h中定义:         #define MISC_ ...

  7. 孟宁的Linux内核分析,Linux内核分析-MOOC小结

    Linux内核分析课程小结 目录: 在学习内核时一定要不断动手实验,才能更好的理解内核中的运作,之后才能学以致用. Linux内核分析(孟宁老师)课件列表: 短短几周过去了,但是内核学习却才开始... ...

  8. 免费分享:5本安卓开发经典书籍,Android 7编程入门经典(第4版),Android底层驱动分析和移植,底层驱动分析和移植

    1.Android 7编程入门经典(第4版) 使用Android Studio 2  PDF 下载 下载地址: http://www.askwinds.com/r-c/down-info-02/579 ...

  9. linux前景分析,linux运维发展前景分析

    原标题:linux运维发展前景分析 linux运维是随着近年来互联网的快速发展,相关岗位的需求量不断在增加,想从事相关行业的朋友也越来越多.很多人在选择学习linux运维之前,都会担心未来前景问题.上 ...

最新文章

  1. 二极管7种应用电路详解之五
  2. “金星生命论”乌龙事件新进展:那只是二氧化硫而已
  3. Linux C编程--进程间通信(IPC)5--System V IPC 机制2--信号量
  4. 树——通用树结点数目、高度和度数的实现
  5. 安装JDK时提示 IllegalArgumentException:Invalid characters in hostname的解决方法
  6. 隐马尔可夫模型中的Viterbi算法zz
  7. 穷举 百文百鸡
  8. 多核编程与单核多线程编程
  9. common lisp 学习第三天 函数、注释
  10. java uipath_10.3 UiPath如何调用Java
  11. 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
  12. u-boot之添加一块新板子的支持
  13. UVA750 UVALive5358 8 Queens Chess Problem题解
  14. python 生成嵌套字典
  15. 贝叶斯网络在疾病预测诊断中的应用与优化
  16. MDM页面UI升级介绍
  17. 解决elementui中多层弹窗el-dialog遮挡现象
  18. 对链表进行插入排序。从第一个元素开始,该链表可以被认为已经部分排序。每次迭代时,从输入数据中移除一个元素,并原地将其插入到已排好序的链表中。
  19. Clojure学习03:数据结构(集合)
  20. the unfamiliar words and sentences of《The Great Gatsby》1

热门文章

  1. html5仿浏览器,前端H5-仿QQ浏览器for mac之动画效果(一)
  2. 8086汇编4位bcd码_逆向工程——汇编基础[一]
  3. selenium定位方法(java实例)
  4. linux快速还原oracle,linux下恢复误删除oracle的数据文件
  5. java 2维数据便利_计算机等级考试二级java数组辅导
  6. python在实际中的作用_Python面向对象中__init__的实际作用是什么?
  7. 表变量是什么_为什么要使用二级指针?
  8. 【设计思想解读开源框架】java监听模式和观察者模式
  9. 升职加薪必看!如何试出一个Java开发者真正的水平
  10. 使用Pytorch从零搭建高精准度实时目标检测框架