前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于G-MAXTEX GS881的接收机

关于G-MAXTEX GS881的接收机

作者头像
云深无际
发布于 2022-02-09 03:49:13
发布于 2022-02-09 03:49:13
1.3K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

29.90g裸机就30g,我一开始以为很小的机器,结果拿回来发现很大只。

和我的Pixel 2比较

单手握

全网高清2.4G芯片

一次三架

大图细节

细节

飞机使用的接收机芯片是BK2423:

比较nrf24l01的数据手册和BK2423数据手册很多内容(包括寄存器库)完全相同,不同的大概是nrf24l01的datasheet更详细。所以,以下内容通用。都是使用的SPI接口 datasheet里的“channel”:信道,信息的通道。当然,实际上芯片是向四面八方发射电磁波的。

Low Power High Performance 2.4 GHz GFSK Transceiver,这个是芯片数据手册的标题,低功耗高新性能2.4G 高斯频移键控发接受机。 低功耗,芯片支持1.9v~3.6v,超过3.6v瞬间烧毁。我在这遇到个电源的问题。是在单片机的USB公头松了,我换了一个公头出现供电问题。表现出来的是,对通信芯片初始化时,寄存器值读写都不成功。单片机的vcc引脚,经测量是3.3V,就是读写不了。后来我用另一个单片机的vcc引脚同时供两个芯片(我只是学习),了事。如果大家发现初始化时,寄存器写不进去,可以检测下电源。 GFSK(高斯频移键控),就是把输入数据经高斯低通滤波器预调制滤波后,再进行FSK调制的数字调制方式。 芯片之间通信,发送、接收数据,本质上都是传输一串0和1数字。芯片以某个频率为基础(载波),发射电磁波,在这个基础上可以发射的快一些(电磁波频率高些),也可以慢一些(电磁波频率低些)。FSK调制把某一段固定时间内电磁波频率较高的认为是0,电磁波频率低的是1。原理见下图:

原理

图中把时间等分,这个固定的时间,假设它为T,T时间可以发送一个bit,那1/T不就是波特率吗。

前面我们说过,相同频道(也就是电磁波频率或者说波特率)的电磁波会彼此干扰,那自然要错开彼此的波特率。你用2.4G,我用2.4001G,行不行呢?不行的。

bk2425芯片对电磁波的分辨率为1MHz。这段时间波特率f1,要比另一段时间波特率f2,大或者小1MHz,芯片才能比较出大小来。 芯片发射电磁波的频率可以由使用者设置,被叫做射频信道频率(RF channel frequency),公式:射频信道频率 F0= 2400 + RF_CH (MHz),RF_CH是使用者设置的信道。射频信道频率是BK2425所使用的信道的中心。例如,我们使用信道0x01,F0=2401,用2400.5MHz的频率表示电平1,用2401.5MHz的频率表示电平0,它们之间相差1MHz,就能分辨出来了。所以你用2.400G,我用2.401G倒是可以的。 射频信道频率射频信道频率决定了两个单片机交换数据的快慢。一方快,一方慢,就不能通信了。所以,MCU的晶振频率可以不一样,spi的读写速度可以不一样。但每时每刻,MCU对通信芯片设置的信道都必须一样。 为什么我说每时每刻呢,因为变频(不断变换电磁波频率)。若使用单个信道,如果旁边有个设备,信道重叠了,就会通信失败。若使用几十个信道,每十毫秒变一次,就不容易受其他设备干扰。

bk2423是9个引脚(QFP封装):GND、IRQ、MISO、MOSI、SCK、CSN、CE、VDD、GND。 GND引脚有两个,把其中一个连接MCU的GND就行。 VDD连接MCU的vcc引脚,在1.9V~3.6V之间就行。 IRQ引脚表示中断,有3种中断情况。当BK2425数据发送成功,或成功接收到数据,或数据重发送到最大次数,就会把这个引脚拉低。

拉低的同时,芯片会对状态寄存器的对应标志位写1。清除标志位也很有意思,只需要使用者对状态寄存器写1。bit4,bit5,bit6分别对应最大重发中断标志,最大发送中断标志,最大接收中断标志,只需对这个寄存器写0x70,就可以清除这三个可能存在的中断标志(为“1”时清除,为“0”时也不会写入)。 CSN引脚就是SPI需要的四个引线(MISO、MOSI、SCK、CSN)之一,也就是我们常说的SS或者说CS。CSN拉低代表芯片被选中。对芯片的寄存器读写数据,都需要把CSN拉低,操作完后,再把CSN拉高。

就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CSN = 0;
SPI_RW(reg);
SPI_RW(value);
CSN = 1;

MOSI,MISO,SCK是SPI需要的的四根引线,若是硬件SPI,就连接到MCU对应引脚,SPI模式选择模式0(空闲时SCK为低电平,上升沿采样)。模拟SPI就随便找几个引脚。SPI向芯片写入数据也是需要时间的,不能太快,不要超过8MHz.

CE引脚则和芯片的所处的模式有关。芯片有5个模式。见下图。

CE=0时,Power Down(掉电模式)和Standby-I(待机l模式)。

CE=1时,Standby-II(待机II模式),TX(发送模式),RX(接受模式)。

这个是发送方(PTX)的。接收方(PRX)也是一样的。

我本来想找个遥控器看看有没有什么资料的,结果就知道是4通道的。

原装遥控器的样子,下面就是找的一些Symax的协议:

这个UP主,嫖文章,还写的自己总结的,真nm恶心

Symax 协议:

使用10字节数据包每4毫秒传输一次数据。 跳频用于绑定和数据阶段。四个不同的频道被使用。在数据阶段使用了32个不同的4个通道,具体实现了组别 在数据包地址上。

自动绑定:

初始化后,发送器发送绑定数据包约1.4秒。tx地址在前5个字节发送,后跟0xaa的3个字节,然后0x00 ,然后是一个字节的验证和。 发送绑定数据包后,tx更改其地址并开始发送数据包。

数据包

每一个通道都是8位的符号加幅度格式。修剪值以三个单独的字节发送。修剪值为6位符号加幅度。SYMAX实现驱动修剪值与通道数据并行以实现额外的控制范围。通过设置数据包中的各种位来启用功能。

一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Btye   Function
  0    throttle
  1    elevator
  2    rudder
  3    aileron
  4    bit 7    video on/off
       bit 6    take picture
       bit 5-0  0
  5    bit 7    high rates (always set 1 by SymaX)
       bit 6    1
       bit 5-0  elevator trim
  6    bit 7    0
       bit 6    auto-flip
       bit 5-0  rudder trim
  7    bit 7-6  0
       bit 5-0  aileron trim
  8    00
  9    checksum (所有字节异或加到0x55)

X5C协议变体

原来的 X5C 协议也是类似的。主要区别是:

-数据包长度为16字节

-通道值采用二进制补码格式

- 始终使用相同的 tx 地址

- 不使用跳频

某个节点在同一区域飞行的模型会干扰 彼此。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/DeviationTX/deviation/blob/master/doc/SymaX.txt

以上内容是华科尔的多协议模块文档

这是多协议文档,下面也是在说这个协议的一些情况(反正这个协议挺垃圾)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Protocol Number:  10
Autobind:  Yes
Channel Re-mapping:  Yes
Extended Limits:  No
Failsafe Support:  No
Receiver Match:  No
Telemetry:  No
Option Value:  N/
  1. Aaileron
  2. Eelevator
  3. Tthrottle
  4. Rrudder

这是AETR的内涵

Symax还有一共变种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.multi-module.org/basics/radio-compatibility

我只有一共I6X的遥控器,只能用PPM的多协议:

默认PPM设置为 8 个通道,帧周期为 22.5 毫秒(有时称为帧速率)。如果想优化性能,应该将通道更改为模型所需的实际通道数。

对应的帧周期应设置为(通道数+1)*2.5 ms。

例如:

4 通道模型的帧周期为 (4 + 1)*2.5 = 12.5 ms

6 通道模型的帧周期为 (6 + 1)*2.5 = 17.5ms

如果绑定该怎么做?

在 PPM 模式下遵循标准的发射器 - 接收器绑定过程:

1.关闭发射器

2.在绑定模式下打开接收设备(如果它尚未自动绑定)。

3.为发射器通电时,按住模块背面的绑定按钮。按住按钮直到发射器为模块通电。模块上的红色 LED 应该以大约 5Hz 的频率闪烁 - 表示绑定模式。

4.观察接收者是否完成绑定过程。

这是一个支持自动绑定的模型(每次开机时都绑定)那么你应该准备好了

对于具有绑定存储器的传统RC接收器 - 关闭接收器和Tx,然后打开 Tx 和 Rx 以确认绑定。

这里意外的找到了gitbook,一个可以自己写书的地方!!!我要写本书。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://app.gitbook.com/welcome
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档