【嵌入式】基于SPI的M8266WIFI模块调试

  • 前言
  • 背景
  • 模块上手
  • 使用

前言

之前接触过UART8266模块,但是它本质上是串口转wifi,带宽瓶颈都被串口给限制死了,不符合我的需求。在正点原子网站上无意间发现一款基于SPI的8266模块广告,果断入手回来摆弄试试。官方给出的数据是,能够达到M级的传输速率,可以应用在图传等领域。我是在STM32F405上使用它,经过一段时间的摆弄,基本达到了可用的阶段。

SPI的通信机制在之前捣腾的SPI双机通信里熟悉的差不多了,而且这个模块本身已经做了很完善的封装,卖家提供了比较详细的例程,所以很快就实现了通信。我要做的就是把例程看懂,并且在此基础上进行一些开发。

背景

模块上手


前面说过模块进行了很完善的封装,提供了丰富的API。所以刚拿到的时候只需要注意硬件的连接,还要修改配置文件中的一些宏定义即可。在使用例程实现通信中,主要有以下几个内容:

  1. 片选引脚和复位引脚的选定:这里之所以这么重要是因为模块本身会调用一个复位函数,其中涉及到一些片选和复位引脚的电平操作时序,所以要确定自己的主板上使用哪两个引脚作为片选和复位引脚,并且在例程的配置文件中作相应的修改;
  2. 对于我选择的探索者开发板,例程配置文件中已经做好了LED,KEY以及SPI的初始化,所以程序部分没什么需要修改的,主要还是硬件连接,MISO和MOSI不能接错;
  3. 上述硬件连接没问题后,下一步就是去修改STA/AP模式,STA需要修改目标热点的SSID和PSWD,AP模式需要修改自己的SSID和PSWD;
  4. 选择通信方式为UDP/TCP,只是一个宏定义。麻烦的地方是IP和端口的指定,这一块很容易搞混;
  5. 选择例程测试模式:收/发/收发
  6. 对于讲究模块数据接收的实时性,则需要用一个GPIO口配置为外部中断与模块的指定引脚连接;

上手测试基本上没什么难度,主要就是有很多小细节不注意就会很浪费时间。只要把说明书好好看一边这些都不是问题。

使用

我的使用场景中决定了该模块应当配置为:STA,UDP,一对多模式。

  • STA(Station)和AP(Access Point)其实是局域网中很常见的两个概念,简单的说,平常我们连接的路由器就可以理解为AP模式,而手机、电脑等设备则都是STA模式。
  • UDP和TCP这两个比较常见的协议,UDP是无连接、不可靠但低延时的协议,而TCP则是可靠但延时不稳定的协议。此外,UDP支持广播而TCP只能点对点
  • 一对多的模式也决定了只能使用UDP而不能使用TCP

剔除掉例程初始化过程中的无关紧要的部分以及最后的测试代码。最终的效果就是模块在上电连接到指定的AP后保持该状态。我不是很喜欢在代码中把IP和PORT写死,这样每次更换热点的时候会很麻烦,所以在这个过程中我做了如下工作:

  1. 开启一个连接服务,使用模块的一个固定端口:ListeningPort,远端IP和端口为随意指定。该服务不向外发送数据,仅仅起到监听的作用;
  2. PC在接入相同的AP后,使用本地的端口开启一个UDP服务,向255.255.255.255:ListeningPort发送一帧请求接入数据帧;
  3. 模块接收中断触发后,接收数据并且提取出数据帧的源IP和PORT(模块API提供了相关函数);
  4. 在请求帧解包正确的情况下,根据源信息以及本地的一个新端口,开启一个新的连接服务,发送一个响应数据帧返回给PC;
  5. PC接收到后同样可以解析出模块的IP和PORT,将先前开启的广播服务修改为面向模块的服务;

至此,PC和模块完成了连接。在这个过程中优点是不需要对IP进行管理,可以很方便的实现模块和PC的通信,同时对于一对多的情况也很方便;缺点就是牺牲了一个监听端口,使得原本就只能支持同时开启4个服务的模块又少了一个。
上面提到的服务数限制,也就要求模块本身需要对接入请求以及已建立的服务进行一个管理。我设计了一个简单的抢占以及优先级机制,可以理解为是偷学的ucos。。但是实际上要简陋好多。。不过至少是实现了对接入设备的一个可控的管理。具体逻辑如下:

目前使用的板子已经实现了上述功能,当然接下来才是重头戏,通信协议的设计。本身UDP就是无连接的,如果没有心跳包之类的机制,模块也无法知道PC是否还在正常工作。还有一个问题是:模块的服务数有限,是否考虑使用广播机制,使得模块只需要开启一个广播就可以实现对所有设备的通信,所有的通信压力都交给路由器来做。此外,,上述调试过程中PC端都是使用的网络调试助手,后面自己还得写个PC端的测试软件配合使用,也许心血来潮试试写个安卓程序?路漫漫…

【嵌入式】基于SPI的M8266WIFI模块调试相关推荐

  1. 第十三届蓝桥杯嵌入式备赛-STM32G431-基础模块调试①LED/LCD调试

    目录 0.前言 时钟设置 项目设置 1.功能要求 电路原理图 2.STM32Cubemx初始化 3.程序实现 LCD LED 编写LED灯亮灭的相关函数 LED关闭函数 LEDx开启函数 LEDx关闭 ...

  2. 第十三届蓝桥杯嵌入式备赛-STM32G431-进阶模块调试⑦RTC时钟

    目录 0.前言 1.功能要求 2.STM32Cubemx初始化 3.程序实现 main.c相关初始化 RTC函数 RTC_CalendarGet()日期时间获取函数 设置日期RTC_SetDate和时 ...

  3. 【嵌入式】STM32基于SPI通信协议OLED屏显示

    STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...

  4. 基于spi FLASH的嵌入式文件系统 littlefs(转)

    基于spi FLASH的嵌入式文件系统 littlefs 转载于:https://www.cnblogs.com/LittleTiger/p/10737640.html

  5. 基于SPI通信方式的OLED显示

    基于SPI通信方式的OLED显示 文章目录 基于SPI通信方式的OLED显示 1.SPI简介 2.OLED屏幕介绍 3.OLED显示屏显示数据 4.总结 5.参考文献 1.SPI简介 SPI 协议是由 ...

  6. 物联网常用模块_工业级SPI接口WiFi模块WG228助力工业物联网数据传输

    工业物联网简单来说就是工业领域的物联网技术,物联网架构可分为三层:感知层.网络层和应用层,主要涵盖了数据的采集.传输及分析应用.物联网应用都有一个共同点:收集数据并将其发送到服务器或其他系统中,在数据 ...

  7. 基于matlab的dsp调试方法,基于Matlab7.0的DSP调试

    基于Matlab7.0的DSP调试 通过Matlab7.0中的CCSLink与CCS3.3软件连接,实现对DSP程序的调试. CCSLink的主要特点:在MATLAB环境下完成对DSP器件的调试.数据 ...

  8. 基于SPI的数据报过滤原理与实现

    基于SPI的数据报过滤原理与实现 作者: TOo2y 一)个人防火墙技术概述 随着网络安全问题日益严重,广大用户对网络安全产品也越来越关注.防火墙作为一种网络安全工具,早已受到大家的青睐.在PC机上使 ...

  9. android spi串口调试,PIC入门3,SPI通信和串口调试实验

    原标题:PIC入门3,SPI通信和串口调试实验 MSSP模块工作于SPI主控方式,这个可以直接在实验板上执行. 程序: //适合3EPIC实验板,配置PIC的MSSP模块工作于SPI主控方式下, // ...

  10. 基于STM32与GSM模块发送中英文短信

    基于STM32与GSM模块发送中英文短信 最近在做毕业设计有用到GSM模块进行短信报警,模块的功能比较多这里就不介绍了,一般的拨打电话都很简单就只需要一条指令即可,发送英文短信也很简单也只要几条命令也 ...

最新文章

  1. 软件行业项目经理主要的职责是什么?(转)
  2. lucene构建同义词分词器
  3. 客户端连接不到服务器上MySQL数据库 解决方法
  4. 随机森林RandomForest回归生物标记预测时间序列
  5. jackson/fastJson boolean类型问题
  6. SQL Server 中字符串中包含字符串变量的表示方法
  7. POJ 2478:Farey Sequence
  8. FTP文件传输神器:8uftp
  9. 宝妈群体又一次遭受职场歧视?公司要求怀孕即离职?或许抖音小店是突破口
  10. 微信小程序支付和退款(微信公众号和微信小程序支付和退款属于一个爹妈)
  11. k8s——通过暴漏端口实现外部访问服务
  12. 使用Mapper代理开发解决硬编码问题
  13. maven项目转gradle
  14. matlab中的strfind和findstr函数
  15. cmd中的循环语句for
  16. 蚂蚁监控平台 - antmonitor架构设计
  17. 用python做出我的世界Minecraft
  18. Linux Nginx启动报错:Failed at step EXEC spawning /etc/rc.d/init.d/nginx: Exec format error.
  19. 机器视觉灯光选型指南
  20. 使用ffmpeg将YUV420P图像压缩到jpg图片

热门文章

  1. multisim14安装与卸载
  2. java图形用户界面设计
  3. Java中定时任务的6种实现方式,你知道几种?
  4. 【WinMTR】Windows上winmtr的安装使用方法
  5. win10系统realtek高清晰音频管理器有什么用
  6. 纬地道路纵断面设计教程_中铁城际总结公路设计应掌握的知识要领解答
  7. java:单例模式的五种实现方式
  8. c语言程序中不能表示数制的是,2017计算机c语言二级考试题库及答案
  9. matlab读取excel、text文件 || xlsread textread
  10. 【ParaView教程】2.14 选择