打印

求教关于sx1280的配置问题

[复制链接]
2114|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大佬好,请教一下关于sx1280的配置问题     
问题:sx1280的FLRC编码中的报文格式有两种:固定长度和可变长度,在可变长度中有个Header部分包含7bit的Length来表示payload的长度。在传输的时候Master发送的数据较长,而Slave只需要回复一个ack信息即可。所以两侧应该设置不同的长度参数。
现象:
1. 两侧设置相同的长度参数,可以正常传输,但是速率太低不满足要求(Slave回应ack长度过长)
2. 两侧设置不同的长度参数,无法正常传输,这个手册上有说明原因
3. 在slave端根据发送和接收设置不同的长度参数,传输异常

请教指导:
sx1280能不能单独设置Header中的Length??  如何设置(手册上没有相关操作)
连续设置长度参数后是不是需要等待一段时间才可以生效??

使用特权

评论回复

相关帖子

沙发
chenyuanjiyi| | 2020-9-16 11:15 | 只看该作者
本帖最后由 chenyuanjiyi 于 2020-9-16 11:16 编辑

我用的SX1280的LORA模式,像这个显性或隐性包头,只能选择打开显性(可变)或隐性(固定)。FLRC下刚看了也是只能开启或关闭Header Mode,也就是显性和隐性。

SX1280的通讯,是要等发射端产生了一个发射完成中断,接收端才会接收到接收中断。另外发射机发发射数据的时候需要时间的,就是手册那个计算   Time On Air  的时间,这个时间是根据你选择的参数和负载大小有关的,数据越大,那么需要的时间自然也就越大了

使用特权

评论回复
板凳
xiaojie112|  楼主 | 2020-9-16 11:18 | 只看该作者
chenyuanjiyi 发表于 2020-9-16 11:15
我用的SX1280的LORA模式,像这个显性或隐性包头,只能选择打开显性(可变)或隐性(固定)。FLRC下刚看了也 ...

大佬,你的意思是这个Header中的Length是不能进行修改的?  对于通信来说回复ACK是必要的,这ACK太长也不是个事啊

使用特权

评论回复
地板
chenyuanjiyi| | 2020-9-16 11:26 | 只看该作者
本帖最后由 chenyuanjiyi 于 2020-9-16 11:31 编辑
xiaojie112 发表于 2020-9-16 11:18
大佬,你的意思是这个Header中的Length是不能进行修改的?  对于通信来说回复ACK是必要的,这ACK太长也不 ...

可以修改那些同步字的长度啊,不过也改不了多少,可以理解为FLRC模式下,这些东西就是他规定好了必须写在数据里的东西,但是我算了下发送40多个字节,空传时间也才3-4ms,也就是说当你准备发送了,大概4ms就发完了。但是在lora模式下,发送10几个字节,空传时间都要这么长时间了
这两张图片是在LORA 和 FLRC下的数据包格式,LORA看着数据格式比较简单,但是他耗时比较长


2.png (39.19 KB )

2.png

1.png (37.78 KB )

1.png

使用特权

评论回复
5
xiaojie112|  楼主 | 2020-9-16 14:52 | 只看该作者
chenyuanjiyi 发表于 2020-9-16 11:26
可以修改那些同步字的长度啊,不过也改不了多少,可以理解为FLRC模式下,这些东西就是他规定好了必须写在 ...

我再描述一下我的问题吧,咱俩说的不是一个问题了~
我的意思是:
Master发送数据(520bit)的数据给Slave,Slave接收到后回复ACK(6字节,FLRC协议要求最少是6字节);
这样呢,如果Slave想接收Master的数据,就需要配置Payload的参数是65字节(520bit)。在配置成65字节的时候,Slave回复ACK,底层会自动填充0使ACK达到65字节(520bit)。这样会造成传输速率下降。

然后就设置Slave在接收Master的时候payload设置成65字节,Slave在发送ACK的时候设置Payload为6字节。但是这样造成的结果是两边完全不能通信。
我想有没有办法直接设置Header中的Length,告知Master或者Slave,这是常规的操作才对,但是sx1280似乎不支持这样做~

使用特权

评论回复
6
chenyuanjiyi| | 2020-9-16 15:45 | 只看该作者
xiaojie112 发表于 2020-9-16 14:52
我再描述一下我的问题吧,咱俩说的不是一个问题了~
我的意思是:
Master发送数据(520bit)的数据给Slave ...

在正常通讯时,主机配置怎样的参数,从机就要配置怎样的参数。
主机发送65字节--------->(从机配置的是65字节)这样才能收到主机发过来的数据,从机修改配置为6字节,从机发送6字节--------->(主机修改成6字节)这样才能收到从机发过来的数据

你是想实现这样的功能吗?

使用特权

评论回复
7
xiaojie112|  楼主 | 2020-9-16 17:10 | 只看该作者
chenyuanjiyi 发表于 2020-9-16 15:45
在正常通讯时,主机配置怎样的参数,从机就要配置怎样的参数。
主机发送65字节--------->(从机配置的是65 ...

是的,这个功能我已经实现了原本是想单独修改Slave的配置6字节---->65字节----->6字节    Master始终是65字节,这样不用来回该配置可以提升传输速率,但没能成功~


现在修改成你说的那种方式
Master和Slave同时配置的方式,这种方式可以,并且速率提升了不少(从之前的270K提升到了340K)

现在得出来的结论是:sx1280必须要求Master和Slave两侧的配置是一致的------>payload的负载长度一致

我现在还是在提升速率,速率还是不够~~
不过这个问题是已经解决了的,谢谢大佬
以后有问题还找大佬进行交流~

使用特权

评论回复
8
chenyuanjiyi| | 2020-9-16 17:50 | 只看该作者
xiaojie112 发表于 2020-9-16 17:10
是的,这个功能我已经实现了原本是想单独修改Slave的配置6字节---->65字节----->6字节    Master始终是65 ...

如果是负载一定了的话,想要再提高速率的话,可以修改 Raw Bit Rate  、带宽 、编码率之类的,就我上面发给你的那个图片,可以去官网下一个sx1280的计算器,可以更方便的计算他发送这些数据需要多长的时间

使用特权

评论回复
9
xiaojie112|  楼主 | 2020-9-18 11:47 | 只看该作者
chenyuanjiyi 发表于 2020-9-16 17:50
如果是负载一定了的话,想要再提高速率的话,可以修改 Raw Bit Rate  、带宽 、编码率之类的,就我上面发 ...

大佬,求教一个问题,是我目前急需要解决的,实在是不清楚是不是硬件本身的问题
在sx1280开发的时候,我使用的是官方的demo(pingpong),现在遇到的问题是,sx1280自身配置时间太长了!!
这个是中断和BUSY针脚的关系:


这个是SPI的NSS和BUSY针脚的关系:


问题1:sx1280触发中断前(图一黄线拉高),BUSY为什么会有68us的拉高??
问题2:spi配置完成,调用发送函数SX1280SetTx(),BUSY竟然有100us的拉高 ??
问题3:在Master发送完成后,slave返回ack;  ack发送时间是150us(这个时间是正确的),但是sx1280自身的BUSY针脚再次拉高再拉低,中间用了100us呀!!  这个状态代码和手册中根本就没有任何体现!!!

使用特权

评论回复
10
chenyuanjiyi| | 2020-9-18 15:35 | 只看该作者
xiaojie112 发表于 2020-9-18 11:47
大佬,求教一个问题,是我目前急需要解决的,实在是不清楚是不是硬件本身的问题
在sx1280开发的时候,我 ...

这个busy都是SX1280给出的一个状态,当他在通过SPI读写时,他就是忙状态的,并且我测试发现在CS拉低前,他就处于忙状态了,我是这样理解的,是RF芯片处理的时候需要一定的时间来准备吧,并且有时候SPI写完后,CS拉高后,BUSY还是会有一段时间是忙的,我是理解成他在进行处理指令。至于问题3的现象我也不清楚了,我也碰到过,不过不清楚是什么影响的。
总的来说,这个BUSY引脚我们只是读取他,具体他是一个怎样的电平,都是RF芯片给出的。

使用特权

评论回复
评论
chenyuanjiyi 2020-9-18 15:36 回复TA
你看他的代码 在进行SPI读写前后 都会读取BUSY的状态 
11
xiaojie112|  楼主 | 2020-9-18 15:46 | 只看该作者
chenyuanjiyi 发表于 2020-9-18 15:35
这个busy都是SX1280给出的一个状态,当他在通过SPI读写时,他就是忙状态的,并且我测试发现在CS拉低前, ...

和大佬说的是一样的,但是按照这样来搞,速率实在是太低了,只能达到340K~370K,如果再加个什么跳频之类的   那这个就没法玩了~

使用特权

评论回复
12
chenyuanjiyi| | 2020-9-18 16:06 | 只看该作者
xiaojie112 发表于 2020-9-18 15:46
和大佬说的是一样的,但是按照这样来搞,速率实在是太低了,只能达到340K~370K,如果再加个什么跳频之类 ...

你这即使去掉他忙状态的时间,让他快速响应,那也快不了多少啊

而且我测试了lora模式,他时间更长...   
就是相对于FSK这些更稳定,距离更远点

使用特权

评论回复
13
qigege| | 2021-11-25 15:01 | 只看该作者
您好 我有sx1280的问题需要解决 可以有偿 可以加我一下嘛 vx15830257730

使用特权

评论回复
14
qigege| | 2022-5-11 09:18 | 只看该作者
chenyuanjiyi 发表于 2020-9-18 15:35
这个busy都是SX1280给出的一个状态,当他在通过SPI读写时,他就是忙状态的,并且我测试发现在CS拉低前, ...

您好 关于sx1280休眠后busy一直忙状态,您遇到过么,或者   
uint8_t sleep = ( sleepConfig.WakeUpRTC << 3 ) |
                    ( sleepConfig.InstructionRamRetention << 2 ) |
                    ( sleepConfig.DataBufferRetention << 1 ) |
                    ( sleepConfig.DataRamRetention );
这个RTC不用的话 休眠结束我发送指令 通过逻辑分析仪就看不到通讯了 应该是1280 休眠没结束 或者busy一直忙

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝