前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自制SBUS接收端代码分析.上

自制SBUS接收端代码分析.上

作者头像
云深无际
发布2021-09-14 15:50:49
8190
发布2021-09-14 15:50:49
举报
文章被收录于专栏:云深之无迹

看这篇文章前先看下面这篇

自制S-Bus接收器(控制dji EP车)

我们继续看这个,这个是发射端的数结构包

使用这段代码发送出去

接收端的代码,多了一个舵机的库

代码语言:javascript
复制
int ch_width_1 = 0, ch_width_2 = 0, ch_width_3 = 0, ch_width_4 = 0, ch_width_5 = 0, ch_width_6 = 0;

这里使用int的类型,声明几个通道

代码语言:javascript
复制
Servo ch1;
Servo ch2;
Servo ch3;
Servo ch4;
Servo ch5;
Servo ch6;

初始化几个舵机的控制类

然后再配置代码里面写应该调用那些引脚

作为PWM输出的信号脚

回中的函数在这里

完整的配置代码

代码语言:javascript
复制
CE:模块控制线,CSN为低时,CE协同CONFIG寄存器共同决定NRF24L01状态
CSN:SPI片选线
SCK:SPI时钟线
MOSI:SPI数据线(主机输出从机输入)
MISO:SPI数据线(主机输入从机输出)
IRQ:中断信号线。中断时变为低电平,在以下三种情况变低:Tx FIFO发完并且收到ACK(使能ACK情况下)、Rx FIFO收到数据、达到最大重发次数
代码语言:javascript
复制
const uint64_t pipeIn = 0xBBBBBBBBB; //与发射端地址相同

发送端的地址,就好像是个管道一样

代码语言:javascript
复制
const uint64_t pipeOut = 0xBBBBBBBBB; //为何这么多B币?与接收器中相同的地址进行通信

接收的时候也要这个东西

先开始

然后发射端,把这个地址发出去

stop,发射模式

也好理解,就管发射,就不听周遭环境的其它信号了

在接收端,对偶的接收这个地址

开始听环境中的信号

代码语言:javascript
复制
radio.setPALevel(RF24_PA_MIN);

也可以设置发射的电平

radio.stopListening()函数,它将模块设置为发送器,

radio.startListening()函数,它将模块设置为接收器。

在接收端,专门写了一个接收使用的函数

在循环里面

先执行接收函数,顺便把发送时间拿到手

接着做一个简单的判断,来看看信号是不是不可以用了

使用时间来判断,同时也显式的控制LED的亮暗

然后对数据进行数据范围的转换

将0~255映射到1000~2000,即1ms~2ms/20ms的PWM输出

代码语言:javascript
复制
Serial.print("\t");
Serial.print(ch_width_1);
Serial.print("\t");
Serial.print(ch_width_2);
Serial.print("\t");
Serial.print(ch_width_3);
Serial.print("\t");
Serial.print(ch_width_4);
Serial.print("\t");
Serial.print(ch_width_5);
Serial.print("\t");
Serial.println(ch_width_6);

处理完,打印一下。完全可以可视化的绘图。

最后输出去

PWM版本的接收机代码就是这样,真简单。

SBUS是硬件级别的取反

就是高电平变低,反之这样的

前面是SBUS只有一个线传输数据

后面是只接在串口的Tx引脚

波特率为100000、8个数据位,偶数奇偶校验位和2个停止位的反向串行逻辑。

代码语言:javascript
复制
SERIAL_8E2 

这样的

协议(要用到位操作)

数据头(1字节)+数据(22字节)+标志位(1字节)+数据尾(1字节)

同时也要知道通道之间的转换

SBUS有高速和低速的发送模式:

a.高速模式:每4ms发送一次

b.低速模式:每14ms发送一次

100Khz不是标准的串口速率,不好用电脑接收

下篇文章继续讲解代码问题以及协议问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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