文章目录
- 一、无线模块开发测试准备
- 二、开发板硬件
- 三、开发板默认功能
- 上电默认界面
- 功能选择界面
- 数据包发送界面
- 数据包接收显示界面
- 射频性能测试界面
- 参数设置界面
- 固件信息显示界面
- 四、软件开发
- 软件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种供电方式:可以通过拨动开关选择
- 3节5号电池
- USB数据线供电
- 2.54端子外接
显示屏: JLX19296G-382
按键: 5个功能操作按键,1个主控复位按键
- S1按键:向上移动光标
- S3按键:向下移动光标
- S2按键:返回上一个界面
- S4按键:预留
- S5按键:进入下一个界面,设置确定,开始
- 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