OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: 1209943162

SX1278芯片LoRa通信官方驱动源码详细讲解

  [复制链接]

17

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-11-7
在线时间
38 小时
发表于 2020-4-7 17:07:09 | 显示全部楼层
1209943162 发表于 2020-4-3 17:46
RxPacketRssiValue用来记录信号强度。
RegRssiValue是与信号强度相关的寄存器地址
RFLR_IRQFLAGS_CADDE ...

前辈你好,我看驱动程序 RxPacketRssiValue 和 SX1276LR->RegPktRssiValue 寄存器对应,
然后还有个寄存器SX1276LR->RegRssiValue  手册上面写的是绝对值取一半后是RSSI但是我看了下这个值和上面的RxPacketRssiValue相差很大。 目前理解是通过SX1276LR->RegRssiValue算出来的RSSI是自己lora的发射强度,RxPacketRssiValue 是接收强度。然后还想问下CAD功能是自动打开的吗 需要配置哪几个地方呢
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-4-8 09:03:51 | 显示全部楼层
NarcissusQAQ 发表于 2020-4-7 17:07
前辈你好,我看驱动程序 RxPacketRssiValue 和 SX1276LR->RegPktRssiValue 寄存器对应,
然后还有个寄存 ...

对,RxPacketRssiValue 和 SX1276LR->RegPktRssiValue 寄存器对应。
绝对值取一半那是因为你看的是FSK模式下映射的寄存器结构,而我代码用的是LORA模式下映射的寄存器结构。
SX1276LR->RegRssiValue算出来的RSSI,数据手册说的是电流Rssi,RxPacketRssiValue是 最后一个数据包的Rssi,
Rssi的中文意思是接收的信号强度指示。
回复 支持 反对

使用道具 举报

17

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-11-7
在线时间
38 小时
发表于 2020-4-8 15:01:31 | 显示全部楼层
1209943162 发表于 2020-4-8 09:03
对,RxPacketRssiValue 和 SX1276LR->RegPktRssiValue 寄存器对应。
绝对值取一半那是因为你看的是FSK模 ...

嗯嗯,大概懂了 谢谢
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-8-5
在线时间
14 小时
发表于 2020-4-10 11:44:04 | 显示全部楼层
本帖最后由 451279786x 于 2020-4-10 11:49 编辑

前辈你好,我这边有一个问题:开机第一次很大概率发送失败,我使用了看门狗,发送失败就停留在那,强制复位以后可以发送成功
分析了好久,还是无果首先数据确实没有发送出去(接收机没有收到数据),其次不管是读DIO0还是寄存器都没有置位,说明确实发送失败
case RFLR_STATE_TX_RUNNING:
        //if( DIO0 == 1 ) // TxDone
        SX1276Read(0x12,&regValue);
        if(regValue & (1<<3))
        {
            // Clear Irq
            SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_TXDONE  );
            RFLRState = RFLR_STATE_TX_DONE;   
        }


回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-4-10 15:31:21 | 显示全部楼层
451279786x 发表于 2020-4-10 11:44
前辈你好,我这边有一个问题:开机第一次很大概率发送失败,我使用了看门狗,发送失败就停留在那,强制复位 ...

不好意思啦,这个我就不晓得了,因为我没用到看门狗,所以我也不清楚实际到底是什么情况。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-8-5
在线时间
14 小时
发表于 2020-4-10 17:27:27 | 显示全部楼层
抛开看门狗
问题是第一次大概率发送失败,能不能帮看看?
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-4-10 17:33:42 | 显示全部楼层
451279786x 发表于 2020-4-10 17:27
抛开看门狗
问题是第一次大概率发送失败,能不能帮看看?

这个还是得靠你来调试的,一步一步打断点看是哪一步出了错。反正这也是一个学习的过程嘛。你也可以看看我帖子里放的那两个链接,链接里都是大佬们写的完整的能用的工程代码,你可以去参考参考。
回复 支持 1 反对 0

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2020-4-12 08:23:59 来自手机 | 显示全部楼层
451279786x 发表于 2020-4-10 17:27
抛开看门狗
问题是第一次大概率发送失败,能不能帮看看?

建议:
1、上电后加几个ms的延时,再进行初始化操作;
2、Lora的SPI驱动的NSS里面加10us的延时。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-11-1
在线时间
11 小时
发表于 2020-4-15 17:18:17 | 显示全部楼层
你好!可以加一下我的QQ吗 (1217260098) 最近在做LORA模块的一个项目,源码大部分都看懂了也差不多移植完了,但是有个问题阻塞好几天无法解决 能否指导一下 谢谢
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2020-4-14
在线时间
4 小时
发表于 2020-4-17 16:41:41 | 显示全部楼层
你好,想请教一下sx1278模块在树莓派上怎完成收发啊,官方驱动怎么用呀,程序需要怎么改呢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-4-24
在线时间
2 小时
发表于 2020-4-25 08:12:59 | 显示全部楼层
楼主你好,我用的是安信可提供的例程,一个主板每0.5秒发送,另一个主板接收,往往接收到几帧之后,接收板模块就会死机,不能接收数据,大概是哪里出错了?
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-4-25 12:49:04 | 显示全部楼层
皖宁港 发表于 2020-4-25 08:12
楼主你好,我用的是安信可提供的例程,一个主板每0.5秒发送,另一个主板接收,往往接收到几帧之后,接收板 ...

你试试把发送时间弄长点。
回复 支持 反对

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-5-4 18:21:12 | 显示全部楼层
无痕幽雨 发表于 2020-3-19 15:22
我下载下来了,上传下

您好  我想请教下这个驱动他的一个框架啥的有什么介绍吗,第一次接触SX12xx这种类型的芯片,平常编译都是用的keil,打开这个压缩包都有点蒙了,现在只能用source insight查看里面的.c和.h文件,想找到他的一个框架结构,但是看这个代码越看越晕......
回复 支持 反对

使用道具 举报

17

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-11-7
在线时间
38 小时
发表于 2020-5-18 15:22:20 | 显示全部楼层
前辈你好 ,我又来问问题了,现在实测中发现这样一个现象当我RX模式切换到TX模式再切换到RX模式这个过程中,第二次RX模式切换所需的时长受到第一次RX接收到的数据包影响,就比如我第一次收到20个字节那么第二次切换到RX能真正能接收数据要1s左右,假如第一次接收的字节是90第二次切换到RX能真正接收数据要3s左右。而且据多次测试发现,这个第二次切换RX模式的时间,与第一次发送模块发送准备的时间差不多,不知道前辈有没有遇到过这种现象,希望能交流一下
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-5-18 21:33:24 | 显示全部楼层
NarcissusQAQ 发表于 2020-5-18 15:22
前辈你好 ,我又来问问题了,现在实测中发现这样一个现象当我RX模式切换到TX模式再切换到RX模式这个过程中 ...

这种问题我没遇到过。这种问题的话可能还是需要你慢慢排错,毕竟我现在都不能确定是你硬件出了问题还是软件出了问题。我干脆上传一个我当初最写的第一个版本的例程吧。不过可能写的有点不好,但是那份代码实现了发送和接收之间的转换,你可以参考下。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2020-2-21
在线时间
7 小时
发表于 2020-5-19 11:56:23 | 显示全部楼层
我想请问一下楼主为什么你这个程序我在编译之后产生了一个错误呢
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-5-19 13:50:43 | 显示全部楼层
attitude 发表于 2020-5-19 11:56
我想请问一下楼主为什么你这个程序我在编译之后产生了一个错误呢

我这边下载编译了一下,是能成功编译的。
回复 支持 反对

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
发表于 2020-6-29 15:38:51 | 显示全部楼层
你好,楼主在吗?现在实现了两个sx1278 spi模块 的Lora的相互通讯,但是想实现多对一,就是多个Lora客户端发送,然后指定的Lora模块作为服务器负责接收并且会单独回复,客户与客户彼此独立不接收除了指定服务器以外的数据包,要怎么实现?能否给个大概的方案,谢谢啦
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2020-5-16
在线时间
37 小时
发表于 2020-6-30 14:46:13 | 显示全部楼层
历程上是sx1276,请问怎么设置sx1278 ?
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-6-30 22:55:30 | 显示全部楼层
FanJJK 发表于 2020-6-30 14:46
历程上是sx1276,请问怎么设置sx1278 ?

其实SX1276和SX1278的驱动源码几乎是通用的。源码上分类这么详细,也是为了到时好维护。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-1-22
在线时间
12 小时
发表于 2020-7-30 10:57:04 | 显示全部楼层
你好,请问你说的官网源码是在哪里下载的
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-11-20
在线时间
3 小时
发表于 2020-8-17 09:25:42 | 显示全部楼层
感谢楼主分享,学习学习。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-12-25
在线时间
1 小时
发表于 2020-8-23 13:33:16 | 显示全部楼层
楼主你好,我想做一对多通信,单向传输,也就是一个主机,多个从机,主机向多个从机下发数据,如果把把从机设置成一样的参数,是不是主机下发后从机都可以接收到呢
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-8-23 22:08:52 | 显示全部楼层
晨晓科创 发表于 2020-8-23 13:33
楼主你好,我想做一对多通信,单向传输,也就是一个主机,多个从机,主机向多个从机下发数据,如果把把从机 ...

可以的,网上其实也有关于lora一对多的资料。但是有个很关键的问题你得想办法解决,就是假如从机同时发送信息,怎么去解决主机接收数据冲突的问题。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2020-3-29
在线时间
7 小时
发表于 2020-9-2 10:35:09 | 显示全部楼层
前辈,请问一下,关于频设开关芯片,在程序中体现了引脚初始化,但是好像没有引出呀 。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-8-30
在线时间
1 小时
发表于 2020-9-3 16:04:55 | 显示全部楼层
fxm666 发表于 2020-6-29 15:38
你好,楼主在吗?现在实现了两个sx1278 spi模块 的Lora的相互通讯,但是想实现多对一,就是多个Lora客户端 ...

你好,请问如何实现互相通讯的呢,是基于stm32和两块sx1278模块吗?能请教一下具体的实现步骤吗,非常感谢,qq邮箱:1057831468@qq.com
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2020-3-29
在线时间
7 小时
发表于 2020-9-12 09:37:02 | 显示全部楼层
大佬请问一下程序中的开关芯片引脚是如何控制的呢?dio4映射控制?为什么我的dio0一直是低电平
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-9-21 18:40:01 | 显示全部楼层
欣然回忆 发表于 2020-9-12 09:37
大佬请问一下程序中的开关芯片引脚是如何控制的呢?dio4映射控制?为什么我的dio0一直是低电平

实在不好意思,时间过太久了,有些东西我也记不清了。关于映射方面的东西你可以去数据手册找找。
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-9-21 18:44:48 | 显示全部楼层
欣然回忆 发表于 2020-9-2 10:35
前辈,请问一下,关于频设开关芯片,在程序中体现了引脚初始化,但是好像没有引出呀 。

我也记不清了,当初好像我也纠结过这个问题,似乎是通过映射的方式来控制的。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-9-25
在线时间
0 小时
发表于 2020-9-25 08:51:05 | 显示全部楼层
非常感谢楼主及楼上的各位,学习了。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-9-25
在线时间
0 小时
发表于 2020-9-25 09:13:32 | 显示全部楼层
无痕幽雨 发表于 2020-3-19 14:54
不要用这个驱动了,原厂已经不维护了,建议升级到最新驱动,从这里下载:https://github.com/Lora-net/LoRa ...

gitee 上也有下载,速度快一点,但是比较旧。
回复 支持 反对

使用道具 举报

12

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1397
金钱
1397
注册时间
2013-8-6
在线时间
373 小时
发表于 2020-10-10 11:52:28 | 显示全部楼层
代码注释的很详细,很有学习价值
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-10-17
在线时间
1 小时
发表于 2020-10-17 17:04:20 | 显示全部楼层
yoka 发表于 2019-10-7 10:17
platform.h:这个文件主要是关于你平台的选择,比如你用的是SX1278呀还是SX1276呀啥的以及一些芯片的具体型 ...

同问,这里没有1278呀
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2020-10-18 22:03:57 | 显示全部楼层
的和个四 发表于 2020-10-17 17:04
同问,这里没有1278呀

都是类似的,之所以有这样一个头文件是为了到时好分类管理不同芯片 型号。但是实际上,SX1276和SX1278的驱动代码几乎类似,可以不用管选哪个。
回复 支持 反对

使用道具 举报

57

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2013-5-23
在线时间
46 小时
发表于 2020-12-25 09:52:56 | 显示全部楼层
学习下。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-8-2
在线时间
0 小时
发表于 2021-8-2 17:42:30 | 显示全部楼层
谢谢分享!!!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2021-7-29
在线时间
5 小时
发表于 2021-8-12 15:36:10 | 显示全部楼层
大佬你好,我用了你发的程序,现在发送端和接收端之间可以实现双向通讯了,但是还有一个问题就是只要发送的一帧数据中有0时,那么接收端收到的一帧数据就不完整了,也就是这一帧数据中数据0之后的数据都收不到了(都是0)。但是如果发送端发送的一帧数据中没有数据0的话,接收端收到的数据就是完整的
回复 支持 反对

使用道具 举报

15

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
金钱
1427
注册时间
2019-4-22
在线时间
272 小时
 楼主| 发表于 2021-8-13 11:15:57 | 显示全部楼层
thd666 发表于 2021-8-12 15:36
大佬你好,我用了你发的程序,现在发送端和接收端之间可以实现双向通讯了,但是还有一个问题就是只要发送的 ...

我的猜测哈,因为判断一个数组结束的标志就是'\0',所以你判断发送长度时,就计算到刚好有0的地方,自然而然后面的数据就发送不出去了。如果是这个原因,建议计算数据长度不要用strlen函数,你自己定义一个变量保存发送的数据长度就可以了。
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2018-1-5
在线时间
44 小时
发表于 2021-9-4 15:15:54 | 显示全部楼层
洋洋洒洒写了这么多 不回复都对不起设么多字
回复 支持 反对

使用道具 举报

28

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2021-8-13
在线时间
43 小时
发表于 2021-9-14 13:26:38 | 显示全部楼层
你好 我想问下如果想让传输时间在5ms左右应该如何设置参数
回复 支持 反对

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2021-11-14
在线时间
9 小时
发表于 2021-11-15 09:12:28 | 显示全部楼层
楼主你好,如果我用的硬件不是nrf,我应该从哪下手修改
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-1-1
在线时间
5 小时
发表于 2022-6-1 10:08:32 | 显示全部楼层
代码注释的很详细,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2020-11-2
在线时间
3 小时
发表于 2022-6-2 17:02:59 | 显示全部楼层

#define RXTX_IOPORT                                 
#define RXTX_PIN              FEM_CTX_PIN

//暂时不知道这一坨干嘛的
#define RXE_PORT                         GPIOA
#define RXE_PIN                            GPIO_Pin_2
#define RXE_CLOCK                            RCC_APB2Periph_GPIOA
#define RXE_HIGH()                   GPIO_SetBits(RXE_PORT,RXE_PIN)
#define RXE_LOW()                    GPIO_ResetBits(RXE_PORT,RXE_PIN)
#define RXE_STATE()                  GPIO_ReadOutputDataBit(RXE_PORT,RXE_PIN)

#define TXE_PORT                         GPIOA
#define TXE_PIN                            GPIO_Pin_3
#define TXE_CLOCK                            RCC_APB2Periph_GPIOA
#define TXE_HIGH()                   GPIO_SetBits(TXE_PORT,TXE_PIN)
#define TXE_LOW()                    GPIO_ResetBits(TXE_PORT,TXE_PIN)
#define TXE_STATE()                  GPIO_ReadOutputDataBit(TXE_PORT,TXE_PIN)

//单片机将射频开关芯片切换成发射状态
void Set_RF_Switch_RX(void)   
{
        RXE_HIGH();
        TXE_LOW();
}

//单片机将射频开关芯片切换成接收状态
void Set_RF_Switch_TX(void)     
{
        RXE_LOW();
        TXE_HIGH();
}


想问一下,SX1276芯片的发送和接收切换是通过一个引脚RXTX_MODE的高低电平来切换的,可是你例程里面发送接收使能是2个引脚控制呢?这个怎么修改?
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6077
金钱
6077
注册时间
2018-6-27
在线时间
524 小时
发表于 2022-6-27 14:35:54 | 显示全部楼层
谢谢分享,学习学习。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2019-7-17
在线时间
39 小时
发表于 2022-7-2 09:31:58 | 显示全部楼层
谢谢了,学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 12:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表