OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9493|回复: 19

关于sx1278 DIO0-DIO5的映射要怎么理解

[复制链接]

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
发表于 2020-7-1 15:13:41 | 显示全部楼层 |阅读模式
2金钱
请问大佬们,关于sx1278 DIO0-DIO5的映射要怎么理解?我的MCU没有连接这几个管脚,但是看到代码中需要对其RegDioMapping1和RegDioMapping2进行配置,看了datasheet关于lora模式下DIO的映射,还是不太懂几个引脚的作用,也不理解映射是什么意思,尝试把RegDioMapping1和RegDioMapping2相关寄存器配置代码删除,结果数据包内容是部分乱码,所以想请大佬们帮我解答一下DIOx映射的意思和作用,谢谢啦

最佳答案

查看完整内容[请看2#楼]

可以配置成中断的,因为这个一般工作在低功耗阶段,需要给cpu中断信号
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2020-7-1 15:13:42 | 显示全部楼层
fxm666 发表于 2020-7-1 16:20
谢谢大佬回答,一直有在看数据手册,但是我比较想问的是,比如:在lora模式下,在配置接收模式的时候,配 ...

可以配置成中断的,因为这个一般工作在低功耗阶段,需要给cpu中断信号
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2020-7-1 15:58:00 | 显示全部楼层
看数据手册,不能只看代码,这个就是通过两个寄存器配置DIO不同的模式,看你需要工作在什么模式下就配置成什么样子
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-1 16:20:06 | 显示全部楼层
三叶草 发表于 2020-7-1 15:58
看数据手册,不能只看代码,这个就是通过两个寄存器配置DIO不同的模式,看你需要工作在什么模式下就配置成 ...

谢谢大佬回答,一直有在看数据手册,但是我比较想问的是,比如:在lora模式下,在配置接收模式的时候,配置DIO0为RXDone(问题1:管脚和中断信号有这样搭配的吗,印象中管脚不是用来输入输出的吗),会对接收这个过程有起什么作用(问题2),不配置的话会造成什么影响(问题3)?手册看了很久,只知道映射,但是不知道IO映射具体有什么意思,麻烦你可以再给我解答一下吗
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-2 09:10:18 | 显示全部楼层
三叶草 发表于 2020-7-1 15:13
可以配置成中断的,因为这个一般工作在低功耗阶段,需要给cpu中断信号

,也就是说配置成接收或者发送,这两个寄存器都需要配置是吧?
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-7-2 09:35:12 | 显示全部楼层
DIO引脚的话可以理解为他引出来的中断脚,可以将RX_IRQ配置到DIO0,crc错误的中断配置到DIO1,我在sx1280,sx1262上都只用到了一个DIO0,将他配置为0x0003,就是发送完数据,和接收到数据都会将这个引脚拉高,然后单片机将这个引脚配置为中断,这样发送完成和接收到数据就可以进入中断了
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-2 14:20:39 | 显示全部楼层
chenyuan 发表于 2020-7-2 09:35
DIO引脚的话可以理解为他引出来的中断脚,可以将RX_IRQ配置到DIO0,crc错误的中断配置到DIO1,我在sx1280,sx ...

谢谢老哥解答,感觉快懂了,但还是想弄明白:
1.现在假设按你说的方式,当发送完或者接收到数据后,引脚拉高,那进入了中断后,下一步是要做什么?是进入了这个引脚的外部中断服务函数(如果是那需要在服务函数做什么)?还是进入了sx1278相应(比如数据手册38页左右显示的发送流程)流程的下一步?

2.目前我没有将单片机和它的DIOx等引脚连接,然后,利用RegDioMapping1和RegDioMapping2寄存器配置了DIO0-DIO5相应中断信号后,作用是为了什么?(还是上面同一个疑问)
    虽然实现了两个lora模块数据的收发,还是想弄懂原理。
麻烦老哥解开我的疑惑
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-7-2 14:37:08 | 显示全部楼层
fxm666 发表于 2020-7-2 14:20
谢谢老哥解答,感觉快懂了,但还是想弄明白:
1.现在假设按你说的方式,当发送完或者接收到数据后,引脚 ...

在SX1280官方的例程中有一个函数
  1. SX1280ProcessIrqs( );//当发送完一包数据或接收到一包数据后模块的DIO1脚产生一个上升沿
复制代码

我是将这个函数放在中断服务函数中,这个函数就是获取IRQ状态,根据IRQ状态来判断是发送完成,还是接收到数据,他会将这个AppState赋值,那么当AppState=APP_TX的时候,说明发完了一包,那么根据这个状态发送下一包数据。如果将这个函数放在while(1)中的话那就要轮询来了,这样时间上就会有问题,因为他发送一包数据需要一定的时间。
1278上应该也是类似这种功能
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-2 14:53:20 | 显示全部楼层
chenyuan 发表于 2020-7-2 14:37
在SX1280官方的例程中有一个函数

我是将这个函数放在中断服务函数中,这个函数就是获取IRQ状态,根据I ...

哦哦,懂你的意思啦,谢谢老哥啦嘻嘻,后续可能还有到你的帖子看看还有提问,希望你经常在线哈哈
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-7-2 15:03:28 | 显示全部楼层
fxm666 发表于 2020-7-2 14:53
哦哦,懂你的意思啦,谢谢老哥啦嘻嘻,后续可能还有到你的帖子看看还有提问,希望你经常在 ...

一起学习吧    我也是最近接触了SX1262  SX1280,对这两个芯片LORA的一些配置要了解一些
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-2 15:56:35 | 显示全部楼层
chenyuan 发表于 2020-7-2 15:03
一起学习吧    我也是最近接触了SX1262  SX1280,对这两个芯片LORA的一些配置要了解一些

嗯嗯
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2020-7-2 18:49:57 | 显示全部楼层
其实说白了,就是为了获得当前芯片的状态(有很多,这里略写),比如收到一包数据,那么MCU怎么知道现在收到一包数据?有两种方案:一种是MCU主动查询RF状态,可以是通过查询RF的IO口状态,也可以通过查询RF的寄存器,其实他们的效果是一样的;第二种方案就是RF主动告知MCU,现在收到数据了,这个只能通过RF的IO电平状态变化告知;发送也是一样,比如发送完成后,要切换到接收模式,那么MCU把数据给RF后,能立即切换RF状态吗?显然不可以,你要判断RF发送完成后才能切换为RX状态。
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-3 12:14:22 | 显示全部楼层
无痕幽雨 发表于 2020-7-2 18:49
其实说白了,就是为了获得当前芯片的状态(有很多,这里略写),比如收到一包数据,那么MCU怎么知道现在收 ...

哇!清晰明了,明白了,感谢大佬的解答,3Q@无痕幽雨
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2020-1-2
在线时间
9 小时
发表于 2020-7-27 13:57:22 | 显示全部楼层
老哥,能加个QQ么?我也在学习这个,就我自己感觉很无助,1085153686
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-7-29 10:13:20 | 显示全部楼层
abystander 发表于 2020-7-27 13:57
老哥,能加个QQ么?我也在学习这个,就我自己感觉很无助,1085153686

我也是刚学 ,一起交流哈
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2020-10-6
在线时间
10 小时
发表于 2020-10-9 15:16:59 | 显示全部楼层
本帖最后由 xiaoshigua 于 2020-10-9 15:18 编辑

老哥,我最近也在搞sx1278,我DIO是不是没有必要一定连接的呢?我看网上有的代码例程中没有用到DIO,直接判断寄存器的值来判定是否中断。刚接触,这东西感觉有点难,希望可以一块交流下
回复

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2020-10-6
在线时间
10 小时
发表于 2020-10-18 10:41:57 | 显示全部楼层
配置中断用的,手册里有对应的DIOx映射,我点对点通讯只使用了DIO0连接单片机的引脚作为发送完成和接收完成中断信号判断(sx1278的DIO0引脚返回值),其他的没有设置,根据自己的需要进行配置其他DIO
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-3-10
在线时间
14 小时
 楼主| 发表于 2020-11-3 14:39:11 | 显示全部楼层
谢谢提醒啦。这个项目也过去几个月了,没及时回复,不好意思啊
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-8-7
在线时间
12 小时
发表于 2020-11-10 11:15:30 | 显示全部楼层
三叶草 发表于 2020-7-1 15:58
看数据手册,不能只看代码,这个就是通过两个寄存器配置DIO不同的模式,看你需要工作在什么模式下就配置成 ...

大佬你好,我想请问可以通过配置CadDone来达到唤醒mcu的目的吗?
lora模块在休眠模式下可以接收到数据吗?
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2013-4-29
在线时间
16 小时
发表于 2021-2-21 22:55:53 | 显示全部楼层
2021-02-21_224949.png 根据自身情况,可以考虑只连接IO0,只判断RxDone和TxDone。
如果MCU不连接此IO,也可以通过查询对应映射地址,但这种查询显然比直接判断IO的效率要低。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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