Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派基础实验39:解析无线电接收机PWM、SBUS信号
  虽然如今或者将来,5G网络的建设带来人工智能和工业自动化的全面升级,生产活动中劳动力的需求大大减少,大量的劳动力将向内容生产行业和服务行业转移。教育、医疗、娱乐、公共管理等诸多领域,乃至整个社会都将迎来巨大变革。可参阅我的一篇读书笔记5G社会:万物互联新时代。
张国平
2020/09/27
4.7K0
树莓派综合项目2:智能小车(三)无线电遥控
《智能小车(一)四轮驱动》中,实现了代码输入对四个电机的简单控制。《智能小车(二)tkinter图形界面控制》中,实现了本地图形界面控制小车的前进后退、转向和原地转圈。
张国平
2020/11/04
1.9K1
树莓派综合项目2:智能小车(三)无线电遥控
自制SBUS接收端代码分析.上
看这篇文章前先看下面这篇 自制S-Bus接收器(控制dji EP车) 我们继续看这个,这个是发射端的数结构包 使用这段代码发送出去 接收端的代码,多了一个舵机的库 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的类型,声明几个通道 Servo ch1; Servo ch2; Servo ch3; Servo ch4; Ser
云深无际
2021/09/14
9130
自制SBUS接收端代码分析.上
RoboMaster S1资料汇总.1
首先第一个问题就是,能不能用官方的SDK直接去控制小车,目前看资料都是用一个移动设备端的APP来编写控制代码。
云深无际
2021/04/14
1.5K0
RoboMaster S1资料汇总.1
i2c总线的通信协议(i2c通信协议原理)
I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Intel提出了“System Management Bus” (SMBus),用于低速设备通信,SMBus 把时钟频率限制在10kHz~100kHz,但I2C可以支持0kHz~5MHz的设备:普通模式(100kHz即100kbps)、快速模式(400kHz)、快速模式+(1MHz)、高速模式(3.4MHz)和超高速模式(5MHz)。
全栈程序员站长
2022/07/29
2K0
i2c总线的通信协议(i2c通信协议原理)
4.3 51单片机-串口通信
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”;没有通信,单片机所实现的功能仅仅局限于单片机本身,就无法通过其它设备获得有用信息,也无法将自己产生的信息告诉其它设备。如果单片机通信没处理好的话,它和外围器件的合作程度就受到限制,最终整个系统也无法完成强大的功能,由此可见单片机通信技术的重要性。
DS小龙哥
2022/01/12
1.3K0
4.3 51单片机-串口通信
详解串行通信协议及其FPGA实现(一)
好久没更新文章了,这篇文章写写停停,用了近一周的时间,终于写完了,谢谢大家的关注。本篇文章介绍,串口协议数据帧格式、串行通信的工作方式、电平标准、编码方式及Verilog实现串口发送一个字节数据和接收一个字节数据。
单片机点灯小能手
2020/07/16
2.2K0
关于G-MAXTEX GS881的接收机
比较nrf24l01的数据手册和BK2423数据手册很多内容(包括寄存器库)完全相同,不同的大概是nrf24l01的datasheet更详细。所以,以下内容通用。都是使用的SPI接口 datasheet里的“channel”:信道,信息的通道。当然,实际上芯片是向四面八方发射电磁波的。
云深无际
2022/02/09
1.3K0
关于G-MAXTEX GS881的接收机
树莓派基础实验38:逻辑分析仪分析PWM、UART信号
  逻辑分析仪是专门针对数字信号的调试工具,可长时间采集,无波形死区,支持复杂触发定位以及全面的协议内容解析。
张国平
2020/09/27
3K0
4.4 51单片机-NEC红外线遥控器解码
实验板上的红外线接收头是接在单片机的P3.2 IO口上,要使用红外线接收功能,需要将红外线接收头的跳线帽接上。
DS小龙哥
2022/01/12
1.9K0
4.4 51单片机-NEC红外线遥控器解码
自制S-Bus接收器(控制dji EP车)
因为知道这个东西,所以一直想做一些改装S1的通用可编程性,一直不是那么好。。。可是你说都折腾这个了,买个接收器插上意思不大,自己做一个最好了~
云深无际
2021/09/14
1.7K0
自制S-Bus接收器(控制dji EP车)
逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)
本次文章给大家介绍一种便宜好用的协议分析工具,逻辑分析仪,首先声明,小飞哥作这篇介绍文章,不是为了打广告哈,实在是因为这个小玩意很好用,有些小伙伴还不太清楚该如何使用!!!废话不多说,下图是我目前用的一种,8通道24MHZ,一般的低速信号分析是足够用了,比较高级的功能也更高级,当然价格也更贵。话不多说,开始对这个小玩意如何使用进行简单的介绍。
用户8913398
2021/08/16
11.6K0
逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)
UART接口介绍_uart接口引脚定义
大家好,又见面了,我是你们的朋友全栈君。 UART接口介绍
全栈程序员站长
2022/10/05
9.1K0
UART接口介绍_uart接口引脚定义
FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备
Tello飞机应该是现在比S1,EP车稍微便宜点的玩具了,但是价格也还是很贵,尤其是EDU的版本,原来卖2500。我悟了,但是一直没有一个合适的遥控器,倒是有个蓝牙遥控器,但是100多的价格感觉好多人也不去买。。。我以前也写过遥控器的文章,也不知道多少人看。
云深无际
2021/11/19
3.1K0
FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备
I2C spec 总结
速度由 SCL 决定,不同模式对上升沿的要求不一样,上升沿斜率受上拉电阻和等效电容影响。
Jasonangel
2022/10/25
1.5K0
I2C spec  总结
一次小模块的使用过程-LC12S无线模块介绍
最近帮人做了个小设备,使用了无线模块、触摸芯片,主要功能就是把触摸按键的信号无线传到控制继电器输出,MCU是STM8系列的芯片,其中使用过程中调试无线模块LC21S觉得挺好用的,就写了这篇文章。
良知犹存
2021/02/06
5210
一次小模块的使用过程-LC12S无线模块介绍
【STM32】USART串口和I2C通信
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单、可实现两个设备的互相通信
s-little-monster
2024/08/09
2390
【STM32】USART串口和I2C通信
UART串口协议_UART通信协议
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器。将数据由串行通信与并行通信间做传输转换,作为并行输入称为串行输出的芯片。
全栈程序员站长
2022/11/17
1.8K0
UART串口协议_UART通信协议
Tiny X8M遥控器全解
这里推荐一款航模遥控器,LDARC(不知道是不是和乐迪对着干),的Tiny X8M遥控器。
云深无际
2021/11/12
1.8K0
Tiny X8M遥控器全解
硬件知识:串口通信基础知识介绍
在通信和计算机科学中,串行通信(Serial Communication)是一个通用概念,泛指所有的串行的通信协议,如RS232、RS422、RS485、USB、I2C、SPI等。
小明互联网技术分享社区
2023/01/08
3.5K0
硬件知识:串口通信基础知识介绍
相关推荐
树莓派基础实验39:解析无线电接收机PWM、SBUS信号
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验