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等旧版本的示例 ...
随机推荐
- mongodb3.X权限配置
环境: CentOS6.8 mongodb3.4.1 1.连接mongodb数据库(如果mongo命令没有做环境变量配置,需要定位到有mongo命令的目录) [root@VM_118_34_cent ...
- OleDbConnection SqlConnection DB2Connection 区别
OleDbConnection适合于连接任何类型的数据库(如Oracle,SQL Server,ACCESS等),其命名空间为:using System.Data.OleDb;.而SqlConne ...
- Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造
(一)数据分页 可以参考 https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...
- Safari中的Date
在js中处理Date时,发现Safari和其他浏览器的支持方式不一致 1.例如:2017-01-01 12:00:00 在其他浏览器中,使用这个格式的字符串进行new Date操作没有问题,但是在Sa ...
- SQL Server 复制表结构、整表数据
1.将表1结构复制到表2 SELECT * INTO 表2 FROM 表1 WHERE 1=2 2.将表1内容全部复制到表2 SELECT * INTO 表2 FROM 表1
- fedora 开启 apache 并 开启目录浏览模式
在内网中 暂时需要一台 文件 服务器,所以准备安装一台 http服务器并开启目录访问权限.这次使用 apache 在 fedora 28 机器上: 因为 fedora 28 已经包含 httpd 软件 ...
- Hadoop HBase概念学习系列之HMaster服务器(四)
每台HRegion服务器都会和HMaster服务器通信,HMaster的主要任务就是告诉每个HRegion服务器它要维护哪些HRegion. 当一台新的HRegion服务器登录到HMaster服务器时 ...
- 写博的第一天 0x00
作为一个大学生,我觉得自己除了睡觉,打游戏,吃饭更应该做点有意义的事情,作为计算机专业的学生,更应该勤奋点,主动去学习.已经要大三了,我认识到这个暑假我必须学点什么了,为了更好的学习,我决定学语言的同 ...
- Beta阶段第一次冲刺
Beta阶段第一次冲刺 以后严格按照Git标准来,组员有上传Git的才有贡献分没有的为0 代码签入图 1.part1 -站立式会议照片 2.part2 -项目燃尽图 3.part3 -项目进展 1.正 ...
- python class根据配置自定义函数
今天看到了一种有趣的定义函数的方式: class Test(object): def define_get_methods(cls, method_name, path): def inner_get ...