前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Arduino-SBUS协议构建.上

Arduino-SBUS协议构建.上

作者头像
云深无际
发布于 2021-12-08 12:01:33
发布于 2021-12-08 12:01:33
1.1K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

我在前些日子买了个遥控器,下面是关于遥控器的文章:

Tiny X8M遥控器全解

Tiny X8M遥控器源码解读.1

我就在想,我是不是能做个解码SBUS的东西,可以方便的解码来着接收机的RC信号,毕竟遥控是每个男孩子都喜欢的东西。 FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备

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

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

关于SBUS写过几篇文章,但是一直没有很深刻的认识一下这个协议。先搜索一下相关的内容再写也不迟。

S-BUS其实是一种串口通信协议,采用100000的波特率,数据位点8bits,停止位点2bits,偶效验,即8E2的串口通信。可以传输16个比例通道和2个数字(bool)通道。其硬件上基于RS232协议,采用TTL电平,但高位取反(负逻辑,低电平为“1”,高电平为“0”)采用的是反向电平传输,也就是说,在S-BUS的发送端高低电平是反向的,协议中的所有高电平都被转换成低电平,协议中的所有低电平都被转换成高电平。通信波特率为100K(不兼容波特率115200)。

这点是我们要注意的的事情,还有一点是关于电平反向问题。

通信接口:USART(TTL)

通信参数:1个起始位+8个数据位+偶校验位+2个停止位,波特率=100000bit/s,电平逻辑反转。

通信速率:每14ms(模拟模式)或7ms(高速模式)发送,即数据帧间隔为 11ms(模拟模式)或4ms(高速模式)。

数据帧格式:[1]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
字节位 byte1 byte2-23 byte24 byte25

类型 开始字节 通道数据字节(含16个脉宽通道) 标志位字节(含2个数字通道) 结束字节

数据 0x0F 通道数据范围11Bits = [0,2047] 2个数字通道位+2个状态位 0x00

byte1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
startbyte = 0000 1111b (0x0F)

byte2-23:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
databytes = 22bytes = 22 x 8Bits = 16 x 11Bits(CH1-16)

通道数据低位在前,高位在后,每个数据取11位,具体协议如下:

读取的databyte值:

byte 2 3 4 5 6 7 etc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
内容 12345678 12345678 12345678 12345678 12345678 12345678 etc

转化后的通道值:

通道 CH01 CH02 CH03 CH04 etc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
内容 67812345678 34567812345 81234567812 56781234567 etc

byte24:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Bit 7 6 5 4 3 2 1 0

含义 数字通道CH17 数字通道CH18 帧丢失位 故障保护激活位 N/A N/A N/A N/A

byte25:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
endbyte = 0000 0000b (0x00)

大概看了这么多,就懂了,开始写。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【虐心】统计符合条件的不重复单元格个数
昨天有个网友在公众号留言问我~ 统计符合B列条件的A列不重复的计数(多个重复算一个) 我读了两边,领悟了他的问题,就是统计符合条件的另外一列的不重复单元格个数! 这个问题有三个关键点 1、符合条件
用户1332619
2018/03/08
5K0
【虐心】统计符合条件的不重复单元格个数
Excel: 对单元格区域中不重复的数字计数
文章背景: 工作中,有时需要计算某一单元区域内不重复数字的个数。可以借助COUNTA和UNIQUE函数完成这一需求。下面介绍两种场景。
Exploring
2023/08/17
3.1K0
Excel:  对单元格区域中不重复的数字计数
Excel公式练习32: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格
本次的练习是:如下图1所示,单元格区域A1:D6中是一系列数据,其中包含空单元格,现在要将它们放置到一列中,并删除空单元格,如图中所示的单元格区域G1:G13,如何使用公式实现?
fanjy
2020/02/18
2.5K0
Excel公式练习40: 从单元格区域的字符串中提取唯一值
导语:继续研究来自于excelxor.com的案例。坚持到现在的,应该都有感觉了!
fanjy
2020/02/26
2.3K0
Excel公式技巧90:剔除单元格区域中的空单元格
有时候,在一列数据中有许多空单元格,导致数据不连续,我们需要剔除这些空单元格,让数据区域连起来。
fanjy
2021/07/12
4.7K0
Excel公式技巧90:剔除单元格区域中的空单元格
Excel公式技巧87:使用FREQUENCY()求非连续区域上的条件平均值
问题的提出:我们有一些有关在客户服务团队中工作的三个人的电话呼叫信息,如下图1所示。
fanjy
2021/07/12
2.1K0
Excel公式技巧87:使用FREQUENCY()求非连续区域上的条件平均值
Excel公式练习33: 将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格(续)
本次的练习是:这个练习题与本系列上篇文章的练习题相同,如下图1所示,不同的是,上篇文章中将单元格区域A1:D6中的数据(其中包含空单元格)转换到单独的列(如图中所示的单元格区域G1:G13)中时,是以行的方式进行的,即先放置第1行中的数据、再放置第2行……依此类推。这里,需要以列的方式进行,即先放置第1列中的数据、再放置第2列中的数据……依此类推,最终结果如图中所示的单元格区域H1:H13,如何使用公式实现?
fanjy
2020/02/18
2.5K0
36条常用Excel技巧 收藏备用!
1、两列数据查找相同值对应的位置 =MATCH(B1,A:A,0) 2、已知公式得结果 定义名称=EVALUATE(Sheet1!C1) 已知结果得公式 定义名称=GET.CELL(6,Sheet1!C1) 3、强制换行 用Alt+Enter 4、超过15位数字输入 这个问题问的人太多了,也收起来吧。一、单元格设置为文本;二、在输入数字前先输入' 5、如果隐藏了B列,如果让它显示出来? 选中A到C列,点击右键,取消隐藏 选中A到C列,双击选中任一列宽线或改变任一列宽 将鼠标移到到AC列之间,等鼠标变为双竖线
CDA数据分析师
2018/02/24
3.6K0
老生常谈,判断两个区域是否具有相同的值
这个问题似乎很常见,如下图1所示,有两个区域,你能够使用公式判断它们是否包含相同的值吗?假设单元格区域B3:B7命名为“range1”,D3:d7命名为“range2”。
fanjy
2021/11/10
2K0
老生常谈,判断两个区域是否具有相同的值
精通Excel数组公式018:FREQUENCY数组函数
FREQUENCY函数非常简单,但非常强大且功能丰富。本文介绍这个函数的基本用法,后续文章你将会看到该函数对困难的问题提供的令人惊叹的解决方案。
fanjy
2021/03/12
1.8K0
这个公式查找,有点难
在《判断两个区域是否具有相同的值》中,我们比较了两个相同大小的区域,看看这两个区域中的值是否完全相同。下面更进一步,查找一组数据在另一个表中出现的位置。如下图1所示,单元格区域B4:B8命名为“source”,单元格区域D4:I8命名为“target”,如果source在targe中出现,求出现的位置(即该区域上方标注的数字)。
fanjy
2021/11/17
4960
这个公式查找,有点难
Excel公式技巧98:总计单元格文本中的数字
有些需求看起来很特别,但有时候确实会发生,而这往往是由于数据不规范造成的,例如下图1所示的示例。
fanjy
2021/07/12
1.4K0
Excel公式技巧98:总计单元格文本中的数字
Excel公式技巧95:统计文本单元格的神秘公式
需要弄明白的是,空字符串与空单元格不同。空单元格中没有任何内容,空字符串是不显示任何结果的公式的结果。这通常是通过使用两个双引号来实现的,它们之间没有任何内容:
fanjy
2021/07/12
1.6K0
Excel公式技巧95:统计文本单元格的神秘公式
Excel公式技巧19: 在方形区域内填充不重复的随机整数
本文分享一个基于公式生成n×n随机整数的解决方案,并且每个整数都是唯一的。例如,下图1显示了生成10行10列的不重复随机整数。
fanjy
2020/03/16
1.1K0
【学习】请速度收藏,Excel常用电子表格公式大全
1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,”重复”,””)。 2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,”2009/8/30″,FALSE))/360,0)。 3、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E2,7,4),”/”,MID(E2,11,2),”/”,MID(E2,13,2))。 4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式: =IF(LEN(C2)=15,IF(MOD(MID(C2,15
小莹莹
2018/04/18
2.9K0
关于Excel单元格区域,可能有99%的人都不知道的事
在Excel工作表中执行操作,我们都要使用单元格区域,例如,我们在开始单元格和结束单元格之间使用冒号(:)来选择单元格区域,可能会附加美元符号($)来固定单元格引用。然而,你真正了解使用单元格区域的所有基本方法吗?本文将为你逐一讲解。
fanjy
2023/02/24
1.3K0
关于Excel单元格区域,可能有99%的人都不知道的事
精通Excel数组公式15:使用INDEX函数和OFFSET函数创建动态单元格区域(续)
导语:本文为《精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域》的后半部分。
fanjy
2021/03/12
4.3K0
Excel公式技巧:颠倒单元格区域/数组
=SUMPRODUCT(A1:G1,N(OFFSET(A2:G2,0,7-COLUMN(A2:G2),1,1)))
fanjy
2023/02/14
9400
Excel公式技巧:颠倒单元格区域/数组
Excel公式:有重复的?没重复的?又要判断了
对于简单的少量的数据,一眼就看得出来。然而,对于大量的数据,最好借助于Excel提供给我们的工具,譬如,公式。
fanjy
2022/11/16
2K0
Excel公式:有重复的?没重复的?又要判断了
你需要的Excel常用函数都在这里!
Excel常用函数包括逻辑函数、数学函数、文本函数、统计函数、日期函数,熟练并运用好函数,能够让复杂的问题简单化,可以做到批处理,加快处理各种统计、计算类工作。
数据STUDIO
2021/06/24
4.2K0
推荐阅读
相关推荐
【虐心】统计符合条件的不重复单元格个数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验