LoRa---官方例程移植
SX1278芯片上移植Semtech官方PING-PONG例程
移植环境:keil5.20
硬件平台:stm32f051+sx1278
1、下载源码:Semtech官网下载最新例程链接:http://www.semtech.com/apps/filedown/down.php?file=sx12xxDrivers-V2.1.0.zip
2、准备文件: SX12xxDrivers-V2.1.0文件夹下只有src为我们需要使用的文件夹,src文件夹下有platform文件夹、radio文件夹和一个文件main.c,platform文件夹存放的是不同硬件平台的驱动,我们只需要sx12xxEiger文件夹和platform.h;另外,由于我用的是STM32F0,所以sx12xxEiger文件夹里面有关其他STM32硬件平台的文件也都不要,LoRa芯片使用的是SX1278,关于sx1272、sx1276、sx1232、sx1509的文件也都不要,还有一个radio文件夹,里面关于sx1272、sx1276、sx1232、sx1509的文件也都不要。
3、在KEIL里建工程,直接拿官方的固件库来建就行了,不再赘述。把步骤2整理后的文件加到工程中,基本框架就搭好了。
4、啥都不说,先编译一下,数不清的错误。从main.c文件开始捋一捋,程序过程很简单,先初始化stm32f0的时钟,初始化SPI,初始化LED等,初始化systick,接着再初始化6个GPIO口作为sx1278中断的检测口,STM32F0的初始化完成了;
5、再复位LoRa芯片sx1278,复位完成,然后是初始化LoRa模块;设置LoRa工作方式为睡眠模式,设置射频通信方式为LoRa模式,设置工作方式为待机模式,读取LoRa所有寄存器(111个寄存器,一共112个寄存器,0x00寄存器是读接收缓存区的,没收到数据,不用读)的值,这些值是LoRa寄存器的上电缺省值,有些在后面会用到,这里一次性读了;然后继续初始化,设置LoRa的参数,如:LNA放大增益、通信主频率、扩频因子、带宽、编码率、超时阈值、天线发射功率等等等等,了解全部参考datasheet即可。
6、初始化完成后,设置LoRa为接收模式,然后进入while循环,循环里面运行函数SX1276LoRaProcess(),这个函数最为重要,是整个程序的核心,函数里面类似于一个状态机,LoRa的个个状态下都有相应的实现代码,完成动作(比如完成一次接受)后,返回相应的值,通过调用这个函数,判断它的返回值,来确定下一步动作。
7、整个例程的工作流程到这里就结束了。例程有地方不太明白,就多看几遍,基本就理解了。
8、分析完了程序的工作流程,开始调试;先试一试SPI通信是否正常,SX1276ReadBuffer( REG_LR_OPMODE, &buff, 1 );,读取当前工作模式,通过查看返回值判断通信是否正常;然后就切换到接收模式,发送一个字符串;发送完成,切换到接收模式,接收到数据,再切换到发送模式,发送一个字符串,如此循环;
9、为了方便调试,用串口把接收到的数据打印出来,同时,接收到数据后,让LED1灯状态翻转一下,发送完成后,让LED2状态翻转一下。移植到此就完成了。
10、debug小技巧,官方给的源文件里面,有很多代码你都没有用到,建议把他们都屏蔽掉,还有宏也是,这样报错会少很多。
贴一下我的工程目录:

也有没用到的.c文件,把里面的内容注释了。
已上,完!
LoRa---官方例程移植的更多相关文章
- HarmonyOS(LiteOs_m) 官方例程移植到STM32初体验
HarmonyOS(LiteOs_m) 官方例程移植到STM32初体验 硬件平台 基于正点原子战舰V3开发板 MCU:STM32F103ZET6 片上SRAM大小:64KBytes 片上FLASH大小 ...
- Dapp开发petshop——truffle官方例程
truffle-pet-shop pet-shop是truffle的官方例程. 之前参考https://learnblockchain.cn/2018/01/12/first-dapp/的中文教程,但 ...
- [sklearn]官方例程-Imputing missing values before building an estimator 随机填充缺失值
官方链接:http://scikit-learn.org/dev/auto_examples/plot_missing_values.html#sphx-glr-auto-examples-plot- ...
- [sklearn] 官方例程-Imputing missing values before building an estimator 随机填充缺失值
官方链接:http://scikit-learn.org/dev/auto_examples/plot_missing_values.html#sphx-glr-auto-examples-plot- ...
- 第2季:从官方例程深度学习海思SDK及API
2.1.官方mppsample的总体分析2.1.sample的整体架构(1)sample其实是很多个例程,所以有很多个main(2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析 ...
- USB3.0 图像视频传输 开发 CYUSB3014开发基础(导入官方例程) 转
CYPREE提供的FX3_SDK开发包里面有很多基础的内容,除了前面提到的几个pdf文件外,还有三个文件夹,是官方提供的基础例程.学习CYUSB3014应该就从这里开始,从这几个例程开始.例程共有三个 ...
- KEIL5 使用STM32 官方例程
1. 安装keil5,破解 网上很多安装包/教程,跳过 2.下载官方固件库 https://www.st.com/content/st_com/en.html 在这里找微处理器,STM32 stand ...
- STM32F746G-DISCO官方例程烧写
1. 首先安装STM32 ST-LINK Utility v3.9.0.exe,必须V3.9版本(官方说的) 2. 打开软件,选择External Loader,选择N25Q128A_STM32F74 ...
- 第二章启程前的认知准备,2.1Opencv官方例程引导与赏析
1.在opencv安装目录下,可以找到opencv官方提供的示例代码,具体位于...\opencv\sources\samples目录下,如下所示 名为c的文件夹存放着opencv1.0等旧版本的示例 ...
随机推荐
- LeetCode题解之 Letter Case Permutation
1.题目描述 2.问题分析 可以使用递归的方法解决,参考了别人的答案才写出来的. 3.代码 vector<string> letterCasePermutation(string S) { ...
- webstorm使用过程中的一些问题与技巧
这一篇会随着使用逐渐更新: 1. 问题:string templates are not supported by current javascript version 解决 : setting &g ...
- python永久添加第三方模块,PYTHONPATH的设置
今天用pip安装pymysql后遇到了一个问题,在PyCharm中import pymysql模块时,运行却提示我找不到pymysql mudule 我先考虑的是pymysql没有安装成功,但是cmd ...
- Vue以CDN方式调用Swiper轮播异常
问题概览: 有一个小型单页应用项目,嫌用组件式调用vue-swiper麻烦,因此以CDN的方式调用swiper,结果轮播的图不动了! 爬了半天百度和谷歌都无解决方案,最后曲线救国的方式解决了问题. 解 ...
- tomcat8.5 Host-Manager配置访问的方法
1. 安装配置tomcat服务器,浏览器输入 localhost:8080,可正常访问主页,但访问localhost:8080/host-manager, localhost:8080/manager ...
- windows注册表
如何导入与导出注册表 进入注册表编辑器,选择“文件”“导出”命令,打开“导出注册表文件”对话框.选择保存位置并为其取名,单击保存即可完成注册表的备份. 打开注册表编辑器,选择“文件”“导入”命令,打开 ...
- Linux运维之--zabbix使用(实时更新)
之前安装的是zabbix3.x版本,今天尝试安装zabbix4.2版本,并做个总结.建议生产环境还是使用3.4版本比较好,因为4.2版本上可能语法又增加了一些,所以建议使用熟练的版本 1.首先是安装z ...
- Docker容器学习与分享03
Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...
- 启动android monitor报错解决办法
再这汇总一下这段时间使用android monitor新遇到的问题,特汇总对应问题解决办法如下: 1.确保JDK和Android studio位数相同,比如JDK使用的是64位,studio也要是64 ...
- Android常见UI组件之ListView(一)
使用ListView显示一个长的项列表 1.新建一个名为"BasicView5"的Android项目. 2.改动BasicView5.java文件.改动后的程序例如以下: pack ...