代码工程的GITHUB连接:点进进入GITHUB仓库
https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi

点击购买Marvell8801开发板

Marvell自己实现驱动系列文章分为几篇介绍:
SDIO wifi Marvell8801/Marvell88w8801 介绍(一) ---- 芯片介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(二) ---- SDIO协议介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- 寄存器介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(四) ---- 命令/事件/数据格式
SDIO wifi Marvell8801/Marvell88w8801 介绍(五) ---- TLV
SDIO wifi Marvell8801/Marvell88w8801 介绍(六) ---- 实现初始化功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(七) ---- 实现搜索功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(八) ---- 实现STA功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(九) ---- 实现AP功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(十) ---- 移植TCP/IP协议栈LWIP
SDIO wifi Marvell8801/Marvell88w8801 介绍(十一) ---- 自己编写LWIP没有的DHCP server
SDIO wifi Marvell8801/Marvell88w8801 介绍(十二) ---- MQTT介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(十三) ---- 百度云操作说明
SDIO wifi Marvell8801/Marvell88w8801 介绍(十四) ---- 上位机STA操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十五) ---- 上位机AP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十六) ---- 上位机UDP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十七) ---- 上位机TCP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十八) ---- 上位机PING操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十九) ---- 上位机云服务器(百度云)操作/代码

每篇更新打开专栏可以看到:打开Marvell8801/Marvell8801 专栏

1. SDIO header介绍

Marvell一共有三种类型的数据:
1)命令(command)/命令响应(command response):其中command用于host -> card,也就是wifi驱动给wifi芯片下发命令,比如搜索,连接之类的,command responses是
Host <- card,也就是wifi芯片收到wifi驱动下发的命令的响应动作,command和command reponse的格式是相同的,在2.3小节介绍
2)事件(event):方向是host <- card,也就是发生了一些特定的事情,芯片以事件的方式主动告知wifi驱动,比如AP关掉了之类的
3)数据(data):TCP/IP数据, host <–> card
所以Marvell针对以上三种做了4个byte的SDIO header,来驱动,并且告知数据包的大小,如图

再罗嗦几句:
command/command response的数据类型为0x01
event的数据类型为0x03
data的数据类型为0x00

2. 命令格式介绍

Command/command resonse的格式如下

其中command ID在fireware V14文档中有说明,在这个小节的最后会列出comand list,下面只是看下一个具体的command

再来个command response部分

由于牵扯到的command众多,后续分析Linux驱动和自己写驱动的时候会慢慢涉及到,这里你只需要知道command/command response的类型就行

最后列下command list




3 事件格式介绍

Event的格式只有前三个filed是确定的,其他都不确定(除了wifi direct,wifi direct暂时不做考虑范围内)

那一个命令举例

其中最后一个就是TLV(type-len-value)会在2.6小节介绍
最后列出event list


4. 数据格式介绍

在type数据就是tcp/ip的数据,其中TX,RX的格式还有点差异,我们先从TX说起,先来看下数据格式

4.1 TX数据


Flags如下

其中此部分处理有点小苗,牵扯到一个offset问题,我们先拿一个raw data分析下,正好也对前面的sdio header温故下,看下面的raw data
00000000h:42 00 00 00 01 00 2a 00 14 00 00 00 00 00 00 00
00000010h:00 00 00 00 00 00 00 00 ff ff ff ff ff ff 68 3e
00000020h:34 1d ec 3b 08 06 00 01 08 00 06 04 00 01 68 3e
00000030h:34 1d ec 3b c0 a8 01 64 00 00 00 00 00 00 c0 a8
00000040h:01 01
其中SDIO header为42 00 00 00,所以len为0x42=66个byte,type为0,代表data,也就是tcp/ip数据
往后的16byte,也就是TX的header为01 00 2a 00 14 00 00 00 00 00 00 00 00 00 00 00
01代表uap,也就是说我们是作为AP角色的
00 代表bss num为0
2a 00 代表tx payload len 0x2a=42,看到这里你可能有一个疑问,为什么是42呢,别急,配合下一个filed分析
14 00代表tx pkt offset,0x14=20,这个的意思是从header 便宜20个byte才是真正的tcp/ip数据,也就是从 ff ff ff ff ff ff之后,那么回过头,看下tx payload len你可能已经预感到什么了吧,没错,就是从 ff ff ff ff ff ff开始到最后的数据,刚好是42个byte
其他的filed就自行分析吧,所以这里就存在一个问题,就是这个封包中中间有4个byte的多余数据
剩下的从 ff ff ff ff ff ff就是tcp/ip数据,在后面自己写驱动的时候我们会了解到这个ethernet的header

6个全f,是代表dest mac,也就是广播地址,68 3e 34 1d ec 3b source mac,也就是我们本地的mac,08 06也就是ARP封包的type,好啦,就到这里吧,TCP/IP的东西后面会介绍

4.2 RX数据




同样来个raw data分析下,一切明了
00000000h:6c 00 00 00 01 00 2a 00 3e 00 02 00 0e 00 00 07
00000010h:36 53 01 11 24 98 77 11 70 20 00 93 00 00 00 00
00000020h:00 00 00 00 84 00 88 41 30 00 e0 b9 4d 21 f1 2c
00000030h:68 3e 34 1d ec 3b ff ff ff ff ff ff e0 00 00 00
00000040h:00 00 ff ff ff ff ff ff 68 3e 34 1d ec 3b 08 06
00000050h:00 01 08 00 06 04 00 01 68 3e 34 1d ec 3b c0 a8
00000060h:01 64 00 00 00 00 00 00 c0 a8 01 01
其中SDIO header为6c 00 00 00,所以len为0x6c=108个byte,type为0,代表data,也就是tcp/ip数据
往后的15byte,也就是RX的header为01 00 2a 00 3e 00 02 00 0e 00 00 07 36 53 01
01代表uap
00 代表bss num为0
2a 00 代表rx_pkt_len 0x2a=42,看到这里你可能有一个疑问,相信看了上面tx,你就知道这个意思了,就在自动找offset了
3e 00代表rx pkt offset,0x3e=62,这个的意思是从header 便宜62个byte才是真正的tcp/ip数据,也就是从 40h开始的ff ff ff ff ff ff之后的数据

SDIO wifi Marvell8801/Marvell88w8801 介绍(四) ---- Marvell8801/Marvell88w8801命令/事件/数据格式相关推荐

  1. 自己实现SDIO wifi Marvell8801/Marvell88w8801驱动 介绍(一) ---- 芯片介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  2. STM32F103+SDIO wifi Marvell8801/Marvell88w8801 介绍(九) ---- Marvell 8801/Marvell 88w8801 实现AP功能/实现热点功能

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  3. SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- Marvell8801/Marvell88w8801寄存器介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  4. SDIO wifi Marvell8801/Marvell88w8801 介绍(五) ---- Marvell8801/Marvell88w8801 TLV

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  5. STM32F103驱动SDIO wifi Marvell8801/Marvell88w8801 介绍(十一) ---- 编写LWIP DHCP server

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  6. SDIO wifi Marvell8801/Marvell88w8801 介绍(七) ---- Marvell8801/Marvell88w8801实现搜索功能

    在介绍SDIO wifi Marvell8801/Marvell88w8801之前先附上模块链接: 点击购买Marvell8801开发板 代码工程的GITHUB连接:点进进入GITHUB仓库 http ...

  7. STM32F103驱动SDIO wifi Marvell8801/Marvell88w8801 介绍(十) ---- 移植TCP/IP协议栈LWIP

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  8. SDIO wifi Marvell8801/Marvell88w8801 介绍(八) ---- Marvell 8801实现STA功能/连接open热点/连接wpa热点/连接wpa2热点

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  9. STM32驱动SDIO WIFI 介绍(十六) ---- 上位机UDP操作/代码

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

最新文章

  1. JVM中的垃圾收集器
  2. 比较两个文件夹图像相似度
  3. Win8Metro(C#)数字图像处理--2.24二值图像闭运算
  4. Lucene学习总结之二:Lucene的总体架构
  5. 前端学习(1921)vue之电商管理系统电商系统之绘制基本布局并且获取数据
  6. SQL SERVER自定义函数
  7. JTextAre 文字右对齐 JTextArea دىكى خەتلەرنى ئوڭدىن س...
  8. Ant Design Pro引入Echarts 报错Unexpected token
  9. java线程中断和终止线程运行
  10. 华为 “VRRP” 多备份组
  11. pb 应用 迁移 linux_将你的应用迁移到 Python 3 的三个步骤 | Linux 中国
  12. Abelssoft Undeleter(数据恢复软件)v5.01免费版
  13. 第一次使用MFC开发桌面小程序
  14. aloha仿真matlab,ALOHA协议的MATLAB仿真开题报告(参考).doc
  15. 查询IP归属地的接口
  16. QTest 命名空间
  17. win7计算机图标排列,win7文件夹内图标取消自动排列,取消自动排列
  18. 机械革命 无界16pro闪屏
  19. 与CVTE的完美“邂逅”
  20. 其实英语实在太简单了

热门文章

  1. 传说中的b站mac客户端(支持M1芯片、适配Big Sur)-bilibili mac客户端
  2. Pinia的简单使用
  3. 用Python+Moviepy+OpenCV制作灯光秀短视频
  4. 1267 老鼠的旅行 2012年CCC加拿大高中生信息学奥赛
  5. 深入理解for update 和 lock in share mode
  6. 嵌入式C++开发详解
  7. python小作业初版之信用卡交易
  8. 免费开源CDN jsDelivr使用
  9. 单片机c语言 软件抗干扰,单片机软件抗干扰的几种常见方法
  10. C#三大迷宫生成算法