LoRa终端节点开发之旅⑥ - - LoRa关键驱动文件SX1276.c(2)

6.1前言

时光过得可快、虽然心里一直想着写博客、但是一直没动笔;今天抽点时间、回顾下博客、也相当于回顾下自己最近的工作吧!
《LoRa终端节点开发之旅》是写得有点懵圈、感觉一直往下强行写下去、更是不知所云、所以趁着还在做LoRa的时候、期待有始有终、把事情做完、可能事情无法达到完美、幸运我不是怀有强迫症的完美主义者、但是把事情做完!

6.2SX1276.C

总的来说、SX1276就是和芯片本身寄存器关联的函数,驱动SX1276、换句话说就是学会使用这个驱动函数就了!而SX1276的工作特征、有【发送模式】、【接收模式】、【睡眠模式】、【待机模式】、【CAD模式】、【连续载波模式】(fck发送连续载波,用作调频用途)
继续往下走,有之前提到的,超时中断函数、配置函数;还有对数据读写的函数封装;实际上,LoRa并不难,可能只是需要你一些时间!

6.3LoRa通信

在这里插入图片描述
实际上,软件只需要处理Preamble和Payload,Header和Payload是硬件能够处理的事情,所以我们【一般】只需要关注Preamble和Payload、就是前导码和要发送的内容!

6.4Preamble

前导码–【标准LoRaWAN】的默认设置参数为8,但是很多朋友测试的时候,可以延长,延长前导码的作用是可提高接收成功率(理论上可以),但是不能提高通信距离,(PS:我们QQ群:304350312里的博士大佬说的)!
Preamble一共占两个字节,可设置范围是6-65535;
前导码和发送包关联!假设前导码设置越长、接收端的反应时间也会加长、但是有什么作用呢?
首先我们得先知道,发送一个正常的包,需要多少时间?
假设在FSK模式下:Lpreamble=8、
发送数据5000bps:相当于发送一个位的时间是:1/5000s=0.2ms
Header=2
Header CRC=1
Payload=8
Payload=2
一个包多长:8+2+1+8+2=21(bytes)
那么一个包时间:0.2*21=4.1(ms)

如果前导码变成2000;那么一个包就是:2000+2+1+8+2=2013
这个包的时间是:0.2*2013=402.6(ms)

那么什么时候用到大前导码呢?常见是自定义的私有协议的时候,B在睡眠和醒来监听的状态下工作,为了避免B设备不会漏掉信息,那么A发送前导码的时间就要覆盖B设备的睡眠时间,如下图
在这里插入图片描述

A发送数据的长度必须把B的睡眠时间覆盖了、否则就会造成睡眠丢失的情况,由于加长了这个A的前导码时间,那么B设备的相应时间也会相对应的延长

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_翩翩少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值