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等旧版本的示例 ...
随机推荐
- Problem2-Project Euler
Even Fibonacci numbers Each new term in the Fibonacci sequence is generated by adding the previous ...
- TMOUT优化终端超时
有时候,管理员终端登陆了系统,如果离开没有退出账户,则会有安全隐患存在,因此需要优化终端超时. 设置终端超时: export TMOUT=10 永久生效: echo "export TMOU ...
- windows服务器安装telnet的方法指引
摘要: 1.telnet是一种网络排查的工具 2.当发现一台服务器异常的时候,通常有两个cmd命名做排查 3.ping 服务器ip,看网络是否联通 4.telnet 服务器ip 端口 看该服务器指定端 ...
- PHP支付宝支付开发流程
支付宝开发流程 1.首先我们先谈谈第三方支付 所谓第三方支付就是和一些各大银行签约,并具备一定实力和信誉保障的第三方独立机构提供的交易平台 目前市面上常见的有支付宝,财付通,网银,易宝支付等,网站 ...
- Springboot连接MySQL8.0出现的问题
以前用的是5.7版本的MySQL,在学习实践Springboot的时候顺带升级了一下8.0,遇到了一些坑,在这记录一下,有碰到同类问题的童鞋需要自取. 使用 navicat连接发现报错1251- Cl ...
- [python] 私有变量和私有方法
1.在Python中要想定义的方法或者变量只在类内部使用不被外部调用,可以在方法和变量前面加 两个 下划线 #-*- coding:utf-8 -*- class A(object): name = ...
- html简单介绍(一)
什么是html HTML 是用来描述网页的一种语言.HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup ...
- php 两个二维数组重组新数组,数组下标不同
Array ( [0] => Array ( [PosNum] => 27025008 [start_time] => 20180328164929 [type] => 0 ) ...
- .netcore部署Linux并结合Nginx反向代理 get started
一..NetCore网站准备与发布 首先准备好一个ASP.NET Core Web应用程序,我这里就使用新建的示例站点作为demo演示,使用dotnet publish 命令发布网站. 或者使用VS的 ...
- linux ssh 应用
linux 服务器 连接另一个linux服务器 ssh 用户名@IP地址 linux 服务器传输文件到另一个linux服务器 scp 文件名(可多个) 用户名@IP地址:传到的目录 /home