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

文章目录

    • 一、无线模块开发测试准备
    • 二、开发板硬件
    • 三、开发板默认功能
      • 上电默认界面
      • 功能选择界面
        • 数据包发送界面
        • 数据包接收显示界面
        • 射频性能测试界面
        • 参数设置界面
        • 固件信息显示界面
    • 四、软件开发
      • 软件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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/546574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux_iptables防火墙学习笔记

文章目录 iptables 概述四表五链iptables 安装启动iptables 配置详解iptables配置文件iptables配置语法iptables常用实例查看规则修改默认规则保存和备份规则恢复备份的规则清空规则放行SSH服务在ubuntu14.04中iptables规则持久化 iptables 概述 主机型 对主机进行保护 网络型…

CSS基础:margin属性4种值类型,4个写法规则详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集 268篇…

pnpm 使用 workspace 报错 ERR_INVALID_THIS

有时候真的感觉如果有一个老师指路,那么遇到的坑真的会少很多。 错误示例: GET https://registry.npmjs.org/rollup%2Fplugin-typescript error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.原因是什么?原因就是 pnpm 的…

Web中使用Weblogic用户

WebLogic用户,组设置 1. 登录weblogic console, domain结构中选择Security Realms,显示安装时默认创建的Realm : myrealm 2. 点击myrealm, 选择 users and Group, 追加用户和组 选择既存的权限组追加到新规的组中,赋予…

pyenv-win管理windows上多个版本python

pyenv是一款管理多个python版本的工具,可以便捷的切换使用的python版本,但是不支持windows环境,在windows环境需要使用pyenv-win pyenv-win安装 官方介绍的安装方式比较多,在此主要记录一下我习惯的安装方式 下载pyenv-win,可以…

2024-04-15_[UPnP]:详细解析

UPnP 一、论文阅读 1.2 Theory 1.2.1 Geometry of the absolute pose problem α i f i v i R p i t , i 1.. n . \alpha_i \mathbf{f}_i \mathbf{v}_i \mathbf{R} \mathbf{p}_i \mathbf{t} ,i1..n. αi​fi​vi​Rpi​t,i1..n. 其中: P i ∈ R 3 P_i \i…

javaWeb项目-闲置二手物品交易平台功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Spring Boot框架 …

PHP:IntelliJ IDEA 配置 PHP 开发环境及导入PHP项目

在创建PHP项目之前我们需要安装PHP插件,安装步骤如下:Windows:IntelliJ IDEA Ultimate 安装 PHP 插件-CSDN博客 1、导入已有PHP项目,导入之后选择,File > Setting 选择对应 CLL Interpreter,如果没有操…

麒麟服务器操作系统安装TFTP服务

原文链接:麒麟服务器操作系统安装TFTP服务 Hello,大家好啊!今天我们将讨论如何在麒麟服务器操作系统上安装和配置TFTP(Trivial File Transfer Protocol)服务。TFTP是一种简单的文件传输协议,通常用于无盘工…

9. Spring Boot 日志文件

本篇文章源码位置延续上个章节:SpringBoot_demo 本篇文章内容源码位于上述地址的com/chenshu/springboot_demo/logging包下 1. 日志的作用 发现和定位问题: 日志是程序的重要组成部分,它在系统、程序出现错误或异常时提供诊断和解决问题的线…

07 SQL进阶 -- 集合运算 -- 表的加减法

1. 表的加减法 1.1 什么是集合运算 集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。 在标准 SQL 中, 分别对检索结果使用 UNION, INTERSECT, EXCEPT 来…

使用 Tranformer 进行概率时间序列预测实战

使用 Transformers 进行概率时间序列预测实战 通常,经典方法针对数据集中的每个时间序列单独拟合。然而,当处理大量时间序列时,在所有可用时间序列上训练一个“全局”模型是有益的,这使模型能够从许多不同的来源学习潜在的表示。…

神经网络学习笔记——大白话直观理解!

B站梗直哥、梗直哥丶的个人空间-梗直哥丶个人主页-哔哩哔哩视频 什么是神经网络模型?神经网络模型是一种由大量互相连接的神经元构成的算法模型,它受到生物神经元网络的启发,擅长对输入数据进行分类和模式识别。 神经网络模型最擅长的就是个各种分类问题。 神经网络模型最擅…

RN向上向下滑动组件封装(带有渐变色)

这段组件代码逻辑是出事有一个View和下面的块,下面的块也就是红色区域可以按住向上向下滑动,当滑动到屏幕最上面则停止滑动,再向上滑动的过程中,上方的View的背景色也会有个渐变效果,大概逻辑就是这样 代码如下 import React, {useEffect, useRef, useState} from react; impo…

第18天:信息打点-APP资产知识产权应用监控静态提取动态抓包动态调试

第十八天 本课意义 1.如何获取到目标APP信息 2.如何从APP信息中提取资产 一、Web&备案信息&单位名称中发现APP 1.通过查询网站去查询APP信息 https://www.xiaolanben.com/ https://aiqicha.baidu.com/ https://www.qimai.cn/ https://app.diandian.com/ 2.其他…

嵌入式学习day16-22(2024.04.06-13)

文章目录 C语言网络编程socket主机与网络字节序转换inet_addr、inet_aton(ip转换)inet_ntoa 网络字节序转换为IP字符串端口转换为网络字节序网络字节序转换为端口atoi (字符串转换为整数) UDP通信流程UDP多进程并发服务器服务端客…

沐风老师3DMAX物品摆放插件ObjectPlacer安装和使用方法详解

3DMAX物品摆放插件ObjectPlacer安装和使用教程 3DMAX物品摆放插件ObjectPlacer,一键在曲面上摆放对象,如摆放家具物品、种植花草树木、布设电线杆交通标志等。它的功能是将对象与几何体对象(网格、多边形、面片或NURBS)的面法线对…

RISCV指令集体系简读之RV32I

RV32I 指令格式 用于寄存器-寄存器操作的R类型指令用于短立即数和访存load操作的I型指令用于访存store操作的s型指令用于条件跳转操作的B类型指令用于长立即数的U型指令用于无条件跳转的J型指令 特点: 所有指令都是32bits, 简化了指令解码;…

LangChain学习笔记与样程

LangChain 是一个开源的机器学习工具库,专门用于构建和部署基于语言的应用程序。这个库提供了一系列工具和接口,使开发者能够轻松地整合和使用大型语言模型,例如 OpenAI 提供的 GPT。LangChain 的核心特点包括模块化设计、灵活性和易用性&…