公司同事之前购买了一个遥控器,当时主要是想用来遥控运动电机。我最近好奇,也去看了一下相关资料,并折腾了一下。
那个接收器就是用到了一个叫s-bus的通信口(这里肯定有许多朋友都明白,就是飞行控制器上用的遥控)。因为想到那个s-bus和pwm有一定的相关性,我就想着顺便写一点基础内容,让关注我的朋友涨一点知识(了解一下)。所以,就有了今天这一片文章。
1pwm
pwm:pulse width modulation,即脉冲宽度调制。
两个重要参数:脉冲宽度(就是如下图波形高电平时间),周期(周期x频率 = 1)。
关于pwm的内容,我这里不用多说,pwm是普遍学电子或底层编程的人都知道的一种信号。stm32可以产生pwm波形,也可以检测pwm波形。具体可以参看我的以前推送过的文章。
2ppm
ppm:pulse position modulation,即脉冲位置调制。
因为pwm处理简单,每条物理连线里只传输1路信号。换句话说,需要传输几个通道,就需要几组物理连线。
但在一些场合,我们并不需要直接驱动设备,而是需要先集中获取接收机的多个通道的值。所以,就衍生出了ppm,如下图:
简单来说,就是在一个周期内(20ms),传输多个不同的pwm信号,在每一个周期之间有一个间隔时间来分离。
因为每一帧信号的尾部必须加入一个足够长的空白(显著超过一个正常pwm信号的宽度)来分隔前后两个信号,每一帧能传输的信号通道最多只能到8个。这在大部分的场合已经足够了,且ppm是一个通行标准,绝大多数厂牌的遥控/接收都是支持的。
ppm通信协议:
高电平有效。
高电平电压:常见4.8~6v。
信号周期:24ms。
单个脉冲宽度:0.4ms
脉冲间距:0.9ms至2.1ms
3s-bus
s-bus:serial bus,即串行总线。
简单来说s-bus就是将pwm信号进行串行传输通信。
一个字节等于:
1个startbit + 8个数据位+ 1个奇偶校验位+ 2个停止位(8e2),波特率= 100'000 bit / s
最高位先发送。逻辑反转(level high = 1)
一帧数据:
每帧25个字节,帧格式如下:
[startbyte] [data1] [data2] .... [data22] [flags][endbyte]
startbyte = 11110000b (0xf0)
数据1-22 = [ch1,11bit] [ch2,11bit] .... [ch16,11bit](ch#= 0 bis 2047)
通道1使用来自data1的8位和来自data2的3位
通道2使用最后5位来自data2和来自data3
等的6位
flags = bit7 = ch17 =数字通道(0x80)
bit6 = ch18 =数字通道(0x40)
bit5 =帧丢失,接收器上的等效红色led(0x20)
bit4 =故障保护激活(0x10)
bit3 = n / a
bit2 = n / a
bit1 = n / a
bit0 = n / a
两帧数据之间间隔时间:
高速模式:7ms
模拟模式:14ms
s-bus可以使用uart控制器来实现,网上有许多教程,感兴趣的朋友可以了解一下。
关于s-bus的内容可以参看:
https://os.mbed.com/users/digixx/notebook/futaba-s-bus-controlled-by-mbed/
基于BH1750的光照强度传感器
如何使用C2000 mcu 驱动多个 LED 灯串
380v断路器型号大全 详解断路器型号分类
基于FPGA的电子计算器系统设计(附代码)
横格式分样器与普通分样器的对比,它的优势是什么
介绍PWM、 PPM、S-BUS这三者的区别
最接近真机的三星S8渲染图曝光!几乎全是屏幕
CPC推出采用G/BSPP螺纹的液冷管道连接器 额定爆破压力比先前高38%
维音金融业呼叫中心外包解决方案的组成与特点介绍
单片机浮点数的运算原理及表达方式
国产工控机在智能交通领域的应用:以高速公路联合监控为例
基于复制技术的虚拟机容灾方案
小程序后端开发要降低维护成本,该如何选择合适的云服务器?
vivo要逆天,就屏幕指纹识别这件事,比iPhone8还快了一步
BMW在Build 2016发布首款物联网软件
Uber退出中国市场 却在全球为中国用户提供海外服务
石墨烯电池并不是石墨烯加上锂电池
开关稳压器的基础-开关频率的考虑点
ADI公司陈宝兴博士当选IEEE会士 小爱音箱Art搭载晶晨A113X SoC芯片
Xilinx Foundation F3.1的结构及设计流程