当前位置: 首页 > article >正文

物联网低功耗广域网LoRa开发(二):LoRa开发环境搭建及驱动移植

一、STM32CubeMX加载固件库

将F0固件库添加进来在这里插入图片描述

二、IAR介绍、安装及快捷操作

(一)IAR介绍

1、简介

在这里插入图片描述

·C/C++编译器和调试器
·集成开发环境(IDE)
·实时操作系统和中间件
·开发套件
·硬件仿真器以及状态机建模工具

2、IAR与Keil对比

·MDK默认只创建工程,工作区是不会直接创建。如果想多个工程聚合,则首先需要创建一个工作区,然后再添加相应的工程。  
·IAR默认是创建工程和工作区,如果想多个工程并存,直接添加即可。
·MDK编译时,只有level的选择;IAR有debug和Release的快速选择。
·默认状态,MDK的工具栏功能比较多,有点繁杂;IAM的比较简洁,但相对,也比较单薄。
·MDK的程序文件,最后必须要有一个新的空行,否则会有编译警告。

(二)IAR安装

通过百度网盘分享的文件:IAR-ARM 7.80.zip
链接:https://pan.baidu.com/s/1mJdwIhej1dZdBRQtU_VYng?pwd=vwqc 
提取码:vwqc

在这里插入图片描述

(三)IAR快捷操作

CTRL+B 括号匹配 选择括号内的多行代码; 
CTRL+T 自动缩进,格式化选中代码 
CTRL+K 快注释,屏蔽选中的代码
CTRL+SHIFT+K 取消快注释,取消屏蔽选中的代码

三、M0工程建立

(一)IO端口配置

请添加图片描述

看懂原理图
建立IO功能映射表
通过STM32Cubemx配置IO工作模式

(二)时钟配置

在这里插入图片描述

选择时钟源
配置倍频
使能锁相环配置系统主时钟为48M

(三)外设配置

1、USART

在这里插入图片描述

选择异步通信
无硬件流控
设置波特率115200
设置DMA接收

2、SPI

在这里插入图片描述

选择全双工主机模式
硬件片选不使能
设置波特率为1.5MBit/s
时钟极性为低电平驱动
时钟相位为第一个边沿

(四)Printf函数重定向

#include <stdio.h>
int fputc(int ch, FILE *f) 
{
	while((USART1->ISR & 0X40)==0);
	USART1->TDR = (uint8_t)ch;
	return ch;
}

四、LoRa驱动源码分析

(一)驱动源码文件说明

1、驱动源码文件结构

在这里插入图片描述

2、SRC目录

在这里插入图片描述

3、 Platform目录

在这里插入图片描述

·包含几个不同的硬件平台的源码
·sx12xxEiger是操作 LoRa 芯片相关的接口platform.h 中包含驱动库的配置选项

4、Radio目录说明在这里插入图片描述

·包含几个不同的硬件平台的源码
·只需要关心Sx1276相关源码即可

5、驱动框架

在这里插入图片描述

(二)硬件抽象层分析

1、硬件接口设计

在这里插入图片描述

·数字IO
·SPI串行总线
·硬件复位

2、硬件接口函数

在这里插入图片描述
在这里插入图片描述

五、LoRa驱动移植

(一)驱动文件移植

在这里插入图片描述

复制粘贴一份M0Project,改名为LoRa。
在其目录下新建一个Sx1278文件。
将sx12xxdrivers-v2.1.0/src文件下的radio、platform复制到LoRa/Sx1278下。

(二)IAR工程文件添加

在这里插入图片描述

在IAR Embedded Workbench软件中的工程下添加.c文件

(三)驱动源码修改 !!重点难点,反复看

1、修改硬件平台

在这里插入图片描述
在这里插入图片描述

2、修改包涵路径

在这里插入图片描述

3、修改sx12xxEiger.c

在这里插入图片描述

4、修改led.c

在这里插入图片描述
在这里插入图片描述

5、修改sx1276-Hal.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、修改spi.c在这里插入图片描述

7、修改sx1276-Hal.h

在这里插入图片描述

(四)LoRa模块上电自检

在这里插入图片描述

上电通过SPI总线读取芯片版本
判断读取值是否为0x12,并打印模块版本号

http://www.kler.cn/a/395897.html

相关文章:

  • 如何在 Ubuntu 上 部署 OceanBase
  • 卡尔曼滤波:从理论到应用的简介
  • element plus的表格内容自动滚动
  • 新手小白学习docker第八弹------实现MySQL主从复制搭建
  • 高美GULMAY高压发生器维修X射线源维修CF160
  • Jupyter Book 快捷键总结大全
  • CSS基础知识01
  • 论文 | On Second Thought, Let’s Not Think Step by Step!
  • 【澜舟科技-注册/登录安全分析报告】
  • 蓝桥杯每日真题 - 第12天
  • 刷别的学校oj—河工大oj1073-1099
  • linux 下调试 bmp280 气压传感器
  • jmeter常用配置元件介绍总结之逻辑控制器
  • 【笔记】关于git和GitHub和git bash
  • Neo4j Desktop 和 Neo4j Community Edition 区别
  • CAN编程示例之socket CAN
  • 人工智能大模型即服务时代:在网络安全中的应用
  • 使用runtime/pprof包进行Go程序性能调优的实战教程
  • 博物馆实景复刻:开启沉浸式文化体验的新篇章
  • HMSC联合物种分布模型在群落生态学中的贝叶斯统计分析
  • 性能测试类型
  • pom.xml和spring-config.xml
  • nginx反向代理上游服务器主从配置
  • python面向对象基础入门
  • RK3568平台开发系列讲解(设备树篇)device_node 转换成 platform_device
  • 《译文》2024年11月数维杯国际大学生数学建模挑战赛题目