【Esp32】Spi接口驱动SX1268模块

news2024/11/17 16:00:06

【Esp32】Spi接口驱动SX1268模块

    • 1.硬件接线
    • 2. SX1268 模块的 SPI 时序分析
    • 3. 基于 ESP32 实现函数封装
      • 3.1 读寄存器
      • 3.2 写寄存器
    • 4. 实验结果

日期: 2023-01-13
项目需要用乐鑫的 ESP32开发板驱动 Lora 模块,用的是  深圳SX1268ZTR4-GC的lora模块,
由于网上的参考资料大部分都是基于STM32驱动的,
本文实现了基于ESP32的SPI3接口驱动 sx1268 模块实现数据的收发。
用两个 esp32 + sx1268 模块的形式

1.硬件接线

在这里插入图片描述

在这里插入图片描述

2. SX1268 模块的 SPI 时序分析

开始传输数据时,拉低NSS引脚(spi协议中的CS引脚),传输完之后,拉高引脚
Spi:模式0,全双工通信

在这里插入图片描述

3. 基于 ESP32 实现函数封装

封装读写字节函数:

bool spi_read_byte(uint8_t* rx_data, uint8_t* tx_data, size_t DataLength )
bool spi_write_byte(uint8_t* tx_data, size_t DataLength )

虽然叫 read_byte 但是可以当做读写使用。
当写字节时,rx_data = NULL;即可
当读字节时,先发送一个tx_data,再将读到的字节存到 rx_data中。为什么这么封装呢?

封装传输字节的函数:

uint8_t spi_transfer(uint8_t address)

当写字节时,参数address 表示写的内容,此时,函数的返回值无意义
当读字节时,address = 0,返回值表示,读取到的字

3.1 读寄存器

在这里插入图片描述

解释:NOP指的是空操作指令,相当于主机执行一次 write ,但是write的字节为0

读寄存器:比如读寄存器 addr 开始的2个字节,

spi_transfer(cmd)
spi_transfer(addr高四位)
spi_transfer(addr低四位)
spi_transfer(0)

rx_data[0] = spi_transfer(0);
rx_data[1] = spi_transfer(0);

3.2 写寄存器

在这里插入图片描述

spi_transfer(cmd)
spi_transfer(addr高四位)
spi_transfer(addr低四位)
spi_transfer(data[n]);     // n = 0……x

4. 实验结果

实现2个模块的数据收发,
实测距离10m左右,发数据太快会存在丢包现象
请添加图片描述
若有错误,希望提出批评指教,在评论区留言或者私聊均可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通行密钥,向无休止的修改密码说再见~

在上一期里《对称加密面临的那些挑战》中,我们提过密码,和多数人理解的不同,日常生活中用于保护账号安全的所谓“密码”,更贴切的称呼应该是“口令”密码。密码学中的密码,和我们日常生活中登录各类信息化系统所使用的…

Vue--》基于Vue的UI组件库,大家应该熟悉并会使用

目录 PC端UI组件库 Element UI IView UI 移动端UI组件库 Vant Cube UI Mint UI Nut UI UI组件库:它是设计系统的一部分,是在我们常规界面设计过程中可以直接用来制作交互图例和搭建页面的组件集合,它可以作为单个组件独立存在&#x…

Linux下的FrameBuffer驱动框架

一、RGB LCD经典显示器件介绍:1、LCD屏幕的重要属性参数:① 分辨率:也就是屏幕上的像素点的个数;② 像素格式:即单个像素点RGB三种颜色的表达方式,包括RGB888、ARGB8888和RGB565等。③ LCD屏幕硬件接口&…

全网最全的Linux中的内核级加强型火墙图文详解

目录 前言 一、Selinux的功能 二、Selinux的状态及管理 三、Selinux的安全上下文 四、SEBOOL 五、SEPORT 六、setrouble 前言 内核级加强型火墙主要是指系统中的selinux功能,该功能开启时,会对系统中的文件和程序产生影响,用户的…

SkyEye:针对飞行模拟器的仿真解决方案

01.飞行模拟器简介 飞行模拟器是一种由人工打造,能够尽可能真实地还原飞机飞行及空中环境的模拟系统,一般用于飞行员培训、飞机设计等工作。飞行模拟器能够模拟如何控制飞机飞行、模拟飞机应用系统的反应,还可模拟一些可能会对飞机系统造成影…

java图片压缩

1背景 查看各种文章,发现thumbnailator的压缩率和压缩效果都不错,thumbnailator又是使用java实现的,所以直接扒源码,找到了里面实现压缩的关键代码,封装成一个压缩工具类,有需要的同学可以参考。thumbnail…

Linux多线程Web服务器(C++实现)

本文实现的是基于Reactor模式epoll(边缘触发)非阻塞socket非阻塞IO线程池的Web服务器,可以处理GET、POST两种请求,完成展示主页、获取图片、获取视频、登录及注册共五种功能。原理图:上图为本文实现的服务器的原理图&a…

国产GPU芯片迎来突破,算力全球第一,中文编程也有好消息

苦,芯片久矣,终,迎来突破,实在振奋人心!最近,国产GPU芯片传来了好消息,国产自研首款通用芯片,以每秒千万亿次的计算能力,创全球算力记录,芯片领域实现跨越式的…

包体积优化 · 实战论 · 怎么做包体优化? 做好能晋升吗? 能涨多少钱?

“ 【小木箱成长营】包体积优化系列文章: 包体积优化 方法论 揭开包体积优化神秘面纱 包体积优化 工具论 初识包体积优化 BaguTree 包体积优化录播视频课 ”一、引言 Hello,我是小木箱,欢迎来到小木箱成长营系列教程,今天将分…

论文投稿指南——中文核心期刊推荐(农业工程)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

实战10:基于opencv的数字图像处理:边缘检测 (完整代码+详细教程)

给出“离散拉普拉斯算子”一般形式的数学推导 离散值的导数使用差分代替: 所以: 以(x, y)为中心点,在水平和垂直方向上应用拉普拉斯算子,滤波器(对应a=1的情况)为:

Spring Cloud Alibaba学习指南

文章目录背景介绍主要功能主要组件参考文档Spring Cloud Alibaba githubNacos官方文档Nacos运维手册Sentinel官方文档Spring Cloud Alibaba SentinelSeata官方文档Spring Cloud Alibaba 英语文档应用脚手架背景 由于在2018年Netflix公司宣布对其核心组件Hystrix、Ribbon、zuul…

远端连接服务器详解

昨天决定入手了一台腾讯轻量应用服务器,在连接的过程中遇到很多问题,浪费了很多时间,所以在这里对这些问题进行整理分享给大家!!!系统的安装OpenCloudOS是完全中立、全面开放、安全稳定、高性能的操作系统及…

JVM调优之GC日志分析及可视化工具介绍

JVM调优之GC日志分析及可视化工具介绍 文章目录JVM调优之GC日志分析及可视化工具介绍GC日志参数GC日志参数常用垃圾收集器参数GC日志分析日志的含义使用 ParNew Serial Old 的组合进行内存回收使用 Parallel Scavenge Parallel Old 的组合进行内存回收大对象回收分析日志分析…

药品溶出曲线数据库

药物在体外的溶出行为,可以用来预测体内的崩解、溶出和吸收情况,同时药物体外溶出行为能够在一定程度上反映出制剂的质量。而溶出曲线特别是不同溶出介质的多条溶出曲线,可更加全面、灵敏地反映出上述关键要素的变化。当药物溶出曲线中药物品…

电脑磁盘重新分配空间的简单步骤(无损数据空间转移)

目录 一、前言 遇到问题 解决方式 二、磁盘现状与实现目标 磁盘现状 实现目标 三、操作步骤 (一)关闭电脑磁盘加密 (二)下载安装分区助手 (三)分配空间教程 注意事项 磁盘空间移动成功 一、前…

芯片设计五部曲之二 | 图灵艺术家——数字IC

《芯片设计五部曲》:模拟IC、数字IC、存储芯片、算法仿真和总结篇(排名不分先后 上一集我们已经说了,模拟IC,更像是一种魔法。 我们深度解释了这种魔法的本质,以及如何在模拟芯片设计的不同阶段,根据常见的…

千万别乱用!Lombok不是万能的

背景 在使用Lombok构建无参构造器的时候,同事同时使用了Data和Builder,造成了编译不通过的问题! Data使用说明 Lombok的Data注解可以为我们生成无参构造方法和类中所有属性的Getter和Setter方法。这样在我们开发的过程中,我们就…

seaborn的调色板、刻度、边框、标签、数据集等的一些解释

文章目录前言数据集构建整体风格设置调色板x轴的刻度值设置sns.lineplot实例前言 seaborn是对matplotlib进一步封装的库,可以用更少的代码,画出更好看的图。 官网:https://seaborn.pydata.org/index.html 下面记录一下seaborn的基础用法 数…

【日常业务开发】策略+工厂模式优化 if...else判断逻辑

【日常业务开发】策略工厂模式优化 if...else判断逻辑场景策略工厂模式优化利用Spring自动注入的特点处理继承InitializingBean静态工厂方法调用处理注解CommandLineRunnerApplicationContextAware处理/ApplicationListener\<ContextRefreshedEvent>场景 业务中经常有支…