关于沃进科技无线模块demo软件移植问题

devtools/2024/9/19 7:43:01/ 标签: 科技, c语言, 硬件工程, 驱动开发, 射频工程

文章目录

    • 一、无线模块开发测试准备
    • 二、开发板硬件
    • 三、开发板默认功能
      • 上电默认界面
      • 功能选择界面
        • 数据包发送界面
        • 数据包接收显示界面
        • 射频性能测试界面
        • 参数设置界面
        • 固件信息显示界面
    • 四、软件开发
      • 软件SDK框图
        • 1、射频硬件驱动(详见./radio/myRadio_gpio.c)
        • 2、无线底层驱动API(详见./radio/其他.c)
        • 3、无线操作API(详见./radio/myRadio.c)
      • 软件移植
      • 软件架构说明

一、无线模块开发测试准备

  • 开发板:2套,包含主板、模块转接板、无线模块
    • 用于做收发测试
    • 默认出厂烧录 adapterBoardDriver_xxxxxxxxxxxxxxx工程的固件
  • 模块转接板:模块转接板可以焊接不同型号的无线模块,然后通过金手指与开发板连接
  • 开发软件包:
    • adapterBoardDriver_xxxxxxxxxxxxxxx,带屏幕显示的工程,可以选择更多的功能操作
    • VGKitBoard_xxxxxxx_easyDemo_V01,不带屏幕显示,收发测试有LED指示灯指示
    • radio,无线模块驱动库
      在这里插入图片描述

二、开发板硬件

供电:

  • 支持3种供电方式:可以通过拨动开关选择
    1. 3节5号电池
    2. USB数据线供电
    3. 2.54端子外接

显示屏: JLX19296G-382

按键: 5个功能操作按键,1个主控复位按键

  1. S1按键:向上移动光标
  2. S3按键:向下移动光标
  3. S2按键:返回上一个界面
  4. S4按键:预留
  5. S5按键:进入下一个界面,设置确定,开始
  6. RST按键:主控复位

金手指连接器P1: PCIE连接器52PINH5.2
可以通过主板上的排针选择输出到转接板的供电

USB座子P7: Micro-B座子

  • 供电
  • 串口转USB:连接电脑,可通过串口进行无线数据收发固件更新升级(按住S5按键上电即可进入固件升级模式)

SWD烧录接口P5: 可以接J-link仿真器、DAP仿真器或其他烧录器

三、开发板默认功能

  开发板出厂默认烧录带屏幕显示的工程的固件,用户拿到开发板后可以进行无线模块的收发测试,可以设置不同的频点信道、发射功率、无线波特率等。

上电默认界面

功能选择界面

数据包发送界面
数据包接收显示界面
射频性能测试界面
参数设置界面
固件信息显示界面

四、软件开发

软件SDK框图

在这里插入图片描述
  根据框图可知,与无线操作有关的软件主要集中在无线操作API无线底层驱动API射频硬件驱动,只要熟悉了这3个部分,无线应用的开发就可以如鱼得水了,SDK里的其他部分都是为了项目的功能实现而来的,需要根据不同的MCU平台和项目需求来实现和调用。
接下来详细介绍下这3部分的软件实现:

1、射频硬件驱动(详见./radio/myRadio_gpio.c)

  大部分的无线模块要想运行起来都是通过SPI接口驱动,SPI接口又分3线和4线,模块操作的时候基本是通过操作寄存器,所以对于SPI接口,只需要把SPI的字节操作接口封装好,对于寄存器操作来说3线或者4线基本没有区别,比如台湾笙科的A7169支持3线和4线SPI驱动,如果有省IO口的需求可以在3线和4线SPI选择方面做优化。
  射频硬件驱动操作一般包括:SPI接口初始化无线响应触发中断IRQ信号辅助IO(比如磐启的PAN3020有模式控制脚CE,CMOSTEK的CMT2300A有内存访问片选脚CSB和FCSB)

SPI接口初始化 注意事项:

  • 数据长度(DataSize):一般是8bit
  • 极性(Clock_Polarity):极性是指SPI的时钟脚clk空闲时的电平,是低电平还是高电平,这个每个无线模块的要求可能会不一样
  • 边沿(Clock_Phase):即是在clk的上升沿还是下降沿收发数据
  • 片选(Slave_Select_management):一般如果是使用硬件SPI的时候要特别注意。由于SPI通讯是一种总线通讯,即总线上可以并联多个SPI设备,所以可以将多个无线模块的spi引脚并联接在一起,然后通过片选脚选择不同的模块进行操作,这时每个模块的片选择都要独立控制,MISO、MOSI、CLK这三个脚可以都并联接一起。

无线响应触发中断IRQ信号 注意事项:
  一般的无线模块都有一个引脚用来做一些状态响应的中断信号,虽然有些无线模块可以通过寄存器查询的方式查询状态响应,但是这种做法是不够明智的,特别是在接收模式下,频繁操作SPI会影响无线的底噪,对于无线通讯来说这是很致命的,通讯距离会大打折扣。
  这个信号可以通过外部中断来接收或者查看电平的方式。比如发送数据时,发送完成或者发送出错模块都会通过这脚输出一个电平翻转信号出来,知道用户操作了SPI或者清除相关中断寄存器。翻转为高电平或者低电平可查看对应的芯片引脚说明。

辅助IO 注意事项:

2、无线底层驱动API(详见./radio/其他.c)

  这部分代码一般是基于SPI驱动封装一些无线模块的寄存器操作(比如寄存器的读写)和一些无线模块的基本功能操作(比如射频寄存器的初始化、PLL校准等),这部分驱动基本是要射频芯片原厂来提供,一颗无线模块性能的好坏,7分看原厂提供的这部分SDK的优化程度。

3、无线操作API(详见./radio/myRadio.c)

  这部分API是同时对接应用层和底层驱动层用的,可以说是起到承上启下的作用,更是为了方便应用层兼容不同厂家的射频芯片的驱动。因为每个芯片厂家提供驱动的封装都基本不一样,所以封装这一层API是为了给用户提供更好的API操作,统一应用层的无线操作API

软件移植

  对于单片机嵌入式开发,每个项目的开发环境都不尽相同,这时要想模块在对应的项目平台上跑起来,就需要将相应的驱动移植过来

软件架构说明

..\adapterBoardDriver_xxxxxxxxxxxxxxx_Vxx
├──app \\常用应用模块封装
|  └──
├──core    \\MCU内核文件
|  └──
├──STM32F10x_FWLib \\MCU官方库函数└──
├──image   \\md文件显示用的图片
|  └──
├──keil_v5 \\keil编译器工程文件,包含编译生成的HEX文件
|  └──Object  \\编译生成的HEX文件在此文件夹
├──peripheral  \\项目用到的MCU外设
|  └──
├──project \\项目的主函数和GPIO定义包含文件
|  └──main.c
├──radio   \\射频底层驱动文件
|  ├──myRadio_gpio.c  \\射频驱动接口硬件初始化
|  └──myRadio.c   \\为无线应用通用封装API
|  └──其他.c   \\为无线底层封装API

http://www.ppmy.cn/devtools/3395.html

相关文章

Java基础知识总结(64)

** * FileOutputStream练习 */ public class FileOutputStreamDemo { public static void main(String[] args) { String path "D:\\IoDemo\\test2.txt"; //如果文件不存在,则自动创建 //append:是指是否在原有内容后追加,默认为FALSE try(Ou…

网络攻击离你有多近?

2024年4月15日是第九个全民国家安全教育日,今年的主题是“总体国家安全观创新引领10周年”。这一主题旨在强调总体国家安全观的重要性,以及其在过去十年中对国家安全的创新引领作用。 全民国家安全教育日的设立是为了提高全民对国家安全的认识和意识&am…

【LeetCode热题100】【图论】岛屿数量

题目链接:200. 岛屿数量 - 力扣(LeetCode) 考察图的遍历,从岛上上下左右能到达的地方都是这个岛 首先需要判断图的边界,然后再上下左右继续深度遍历,并把遍历到的标记为已访问,可以原地修改图…

VSCode断点调试(ROS)

0、安装ros插件 在扩展商店中安装ROS插件(Microsoft) 1、修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release") // 注释Release模式 set(CMAKE_BUILD_TYPE "Debug") // 设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE &…

月球地形数据介绍(LOLA)

月球地形数据介绍 LOLA介绍LOLA数据的处理与发布数据类型和格式投影坐标系SIMPLE CYLINDRICALPOLAR STEREOGRAPHIC 数据下载与浏览 LOLA介绍 目前最新的月球地形高程数据来源于美国2009年发射的LRO探测器。 “月球勘测轨道器”(Lunar Reconnaissance Orbiter,LRO)…

哈希封装unordered_map和unordered_set

目录 一. 哈希表的改造 二. 迭代器的封装 三. 哈希表整体代码 四. unordered_set和unordered_map具体实现 3.1 unordered_set具体实现 3.2 unordered_map具体实现 一. 哈希表的改造 咱们这里还是跟Map和Set的封装一样的道理,没有必要为了unord…

cdp集群Hbase组件HRegionServer服务停止原因以及排查

前言:重启集群后某一节点HRegionServer服务停止,重启前所有服务均正常 去查看日志: 日志报错 ERROR HRegionServer Master rejected startup because clock is out of sync org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.h…

如何用idm下载迅雷文件 idm怎么安装到浏览器 idm怎么设置中文

如果不是vip用户使用迅雷下载数据文件,其下载速度是很慢的,有的时候还会被限速,所以很多小伙们就开始使用idm下载迅雷文件,idm这款软件最大的优势就是下载速度快,还有就是具备网页捕获功能,能够下载网页上的…

OpenHarmony鸿蒙南向开发案例:【智能门铃】

样例简介 智能门铃通过监控来访者信息,告诉主人门外是否有人按铃、有陌生人靠近或者无人状态。主人可以在数字管家中远程接收消息,并根据需要进行远程取消报警和一键开锁。同时,也可以通过室内屏幕获取门外状态。室内屏幕显示界面使用DevEco…

Objective-C网络数据捕获:使用MWFeedParser库下载Stack Overflow示例

概述 Objective-C开发中,网络数据捕获是一项常见而关键的任务,特别是在处理像RSS源这样的实时网络数据流时。MWFeedParser库作为一个优秀的解析工具,提供了简洁而强大的解决方案。本文将深入介绍如何利用MWFeedParser库,以高效、…

redis清理缓存接口开发

文章目录 1 用户注册1.1 简要描述1.2 请求URL1.3 请求方式1.4 参数1.5 返回示例1.6 返回参数说明1.7 备注 2 用户登录2.1 简要描述2.2 请求URL2.3 请求方式2.4 参数2.5 返回示例2.6 返回参数说明2.7 备注 3 权限校验3.1 简要描述3.2 请求URL3.3 请求方式3.4 参数3.5 返回示例3.…

AVM 环视拼接方法介绍

0. 简介 关于车辆的全景环视系统网上已经有很多的资料,然而几乎没有可供参考的代码,这一点对入门的新人来说非常不友好。全景环视系统,又称AVM。在自动驾驶领域,AVM属于自动泊车系统的一部分,是一种实用性极高、可大幅…

Mongodb

常用命令 1、查看有哪些数据库 show databases; // show dbs;2、 使用某个数据库 use database 3、插入数据 db.users.insertOne({name:“wwww”}) 4.查看 db.users.find() 5、插入多条数据 db.users.insertMany([{name:“王五”,age:18},{name:“赵六”,age:22}]…

身份证实名接口和身份证OCR接口的组合使用

随着网络技术的快速发展以及对个人信息保护意识的提升,身份证实名认证已成为诸多在线业务中不可或缺的一环。身份证实名接口与身份证OCR接口的有机结合,为用户提供了一种快速、精准、安全的身份信息核验方式。 首先,用户在应用程序或网站界面…

搭建Appium工具环境

1、安装Java Development Kit(JDK) 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本,并根据指示下载安装程序。 安装JDK。运行下载的安…

计算机网络1-TCP和UDP

TCP与UDP 同:都工作在传输层,目标都是在程序间传输数据(文本、视频等等),都是2进制数据; 区别: TCP:电话,基于连接, UDP:书信,基于非…

【iOS】——SDWebImage源码学习

文章目录 一、SDWebIamge简介二、SDWebImage的调用流程SDWebImage源码分析1.UIImageViewWebCache层2.UIViewWebCache层3.SDWebManager层4.SDWebCache层5.SDWebImageDownloader层 一、SDWebIamge简介 SDWebImage是iOS中提供图片加载的第三方库,可以给UIKit框架中的控…

关于ResNet的假说

ResNet 最核心的思想就是 恒等映射吧 那么现在来提出几个问题: 为什么deeper 以后train L 会增加?恒等映射会解决什么问题?能否解决梯度非常陡峭的问题?你想到了什么模型有类似的问题,如何进行改进的? as…

用例设计-微信发红包

功能 1、输入正确的金额,正确的祝福语,给单人发红包,支付成功发送红包后,好友能够正常接收 2、输入正确的金额,正确的祝福语,群发红包,支付成功发送红包后,好友能够正常接收 3、输入…

centos搭建yum源

目录 1.createrepo简介 2.repo搭建思路 3.安装 4.使用 1.createrepo简介 createrepo 是一个用于创建 RPM 包的工具,它可以帮助你创建一个本地的 YUM 仓库。createrepo 并不是用于运行 YUM 仓库服务的软件,而是用来生成仓库的元数据,使得…