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---官方例程移植的更多相关文章

  1. HarmonyOS(LiteOs_m) 官方例程移植到STM32初体验

    HarmonyOS(LiteOs_m) 官方例程移植到STM32初体验 硬件平台 基于正点原子战舰V3开发板 MCU:STM32F103ZET6 片上SRAM大小:64KBytes 片上FLASH大小 ...

  2. Dapp开发petshop——truffle官方例程

    truffle-pet-shop pet-shop是truffle的官方例程. 之前参考https://learnblockchain.cn/2018/01/12/first-dapp/的中文教程,但 ...

  3. [sklearn]官方例程-Imputing missing values before building an estimator 随机填充缺失值

    官方链接:http://scikit-learn.org/dev/auto_examples/plot_missing_values.html#sphx-glr-auto-examples-plot- ...

  4. [sklearn] 官方例程-Imputing missing values before building an estimator 随机填充缺失值

    官方链接:http://scikit-learn.org/dev/auto_examples/plot_missing_values.html#sphx-glr-auto-examples-plot- ...

  5. 第2季:从官方例程深度学习海思SDK及API

    2.1.官方mppsample的总体分析2.1.sample的整体架构(1)sample其实是很多个例程,所以有很多个main(2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析 ...

  6. USB3.0 图像视频传输 开发 CYUSB3014开发基础(导入官方例程) 转

    CYPREE提供的FX3_SDK开发包里面有很多基础的内容,除了前面提到的几个pdf文件外,还有三个文件夹,是官方提供的基础例程.学习CYUSB3014应该就从这里开始,从这几个例程开始.例程共有三个 ...

  7. KEIL5 使用STM32 官方例程

    1. 安装keil5,破解 网上很多安装包/教程,跳过 2.下载官方固件库 https://www.st.com/content/st_com/en.html 在这里找微处理器,STM32 stand ...

  8. STM32F746G-DISCO官方例程烧写

    1. 首先安装STM32 ST-LINK Utility v3.9.0.exe,必须V3.9版本(官方说的) 2. 打开软件,选择External Loader,选择N25Q128A_STM32F74 ...

  9. 第二章启程前的认知准备,2.1Opencv官方例程引导与赏析

    1.在opencv安装目录下,可以找到opencv官方提供的示例代码,具体位于...\opencv\sources\samples目录下,如下所示 名为c的文件夹存放着opencv1.0等旧版本的示例 ...

随机推荐

  1. iOS 开发多线程 —— NSOperation

    本文是根据文顶顶老师的博客学习而来,转载地址:http://www.cnblogs.com/wendingding/p/3809042.html 一.NSOperation简介 1.简单说明 NSOp ...

  2. "System.OutOfMemoryException" exception when you execute a query in SQL Server Management Studio (转自MSDN)

    Symptoms When you use Microsoft SQL Server Management Studio (SSMS) to run an SQL query that returns ...

  3. for之于while的优势

    前言 for与while各有功效,下面就只列举for之于while的优势有哪些 优势 1.循环中提供了特殊的机会来将变量的作用域最小化.(无论是传统的还是for-each形式的)for循环,都允许声明 ...

  4. VMware虚拟机打开后不兼容

    在版本VMware Workstation10.0设置兼容性,在编辑——首选项——工作空间——设置EXS兼容.计算机工作区域打开虚拟机,右键管理.兼容性从新配置

  5. 2.3Python基础语法(三)之输入输出

    返回总目录 目录: 1.input输入 2.print输出 (一)input输入 1.input的处理方式 # 输入input string = input("请输入一个字符串:" ...

  6. 【10】python窗口控制[隐藏,移动]

    步骤一:下载小软件,如下图 该软件用于提取需要控制程序窗口的具体信息 二.程序代码 #__author:"**佳" #date: 2018/10/20 0020 #function ...

  7. [工具]StarUML

    前些日子整理文档,需要补充程序结构流程图,一直没有想到怎么样能够清晰直观描述清楚现在的解决方法,直到我知道了 UML 语言.最早对于 UML 的了解也只是停留在一本书上,他们开发使用 UML 分解任务 ...

  8. 用ASP.NET Web API技术开发HTTP接口

    开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...

  9. Android开发之自定义局部导航菜单

    如今,要实现导航功能方案有很多.比如: 1.用3.0+自带的Toolbar + Fragment导航. 2.用Tabhost实现导航.小弟学浅,就只用过这两种方案实现导航. 但是这两种方案都有一个很明 ...

  10. php 导出导入excel

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 链接: https://pan.baidu ...