Skip to content

happyhappyhappy-arch/sbus-decoder

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

一、概述和s-bus简介

这是遥控器sbus的解码库,用于把s-bus数据还原成遥控器数据。

简单来说s-bus就是用数字信号传输多通道遥控器数据,而且很方便的一点是它的硬件就是基于uart,这使得单片机读取其数据非常方便。
不同的是其电平和uart相反。

数据协议简介

  • 大约14ms一帧数据
  • 每帧数据25字节,具体格式如下:
    <START> <data0> <data1> ... <data21> <Flags> <END>
    其中:
    • <START>一定是0x0F,<END>一定是0x00。
    • <data0>到<data21>共22字节,表示16个通道的数值,每个通道11位(0-2047)。具体格式这里不介绍,看解码的代码。
  • <Flags>这里不讨论,解码时也不关心。

二、使用方法

1、硬件

接收机一般电压是5v,输出的s-bus信号电平也是5v。
注意!!s-bus的电平和uart串口电平相反,一般加下面这个反相器可同时完成反相和电平转换 :

1.jpg

2、串口配置

s-bus的uart采用:100k波特率,8位数据位,偶校验,2位停止位,无流控。 stm32cubemx里配置如下:

2.png

解码库的使用

见代码注释:

使用方法1把s-bus输出通过反相器后连接到uart接收端1通过uart接收s-bus数据uart使用格式为100k波特率8位数据位偶校验Even),2位停止位2uart接收到的数据通过sbus_decoder_get_byte()函数或者sbus_decoder_get_buf()函数传给此模块模块会解析数据当解析到数据后会把数据保存在rc_data.rawdata数据范围0-2047 rc_data.percent数据范围0-1003数据返回方式采用全局变量一般只要用一个进程不断读取uart数据并往sbus_decoder模块里送模块就会不断刷新rc_data在需要获取遥控器数据的地方直接取变量 rc_data.rawdata[i]  rc_data.percent[i] 即可说明对于我的天地飞遥控器rawdata范围是 340-1740计算percent方式也是按照这个范围计算的如果其他遥控器范围不同的话则计算方式也不同

About

sbus解码库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 100.0%