良许Linux教程网 干货合集 PWM、PPM、S-BUS这三种信号的区别

PWM、PPM、S-BUS这三种信号的区别

最近有朋友向我询问相关问题,同时我之前也对遥控器中的S-BUS信号进行了研究。这几种信号在实际应用中非常常见,因此我今天想再次分享一下。

1. PWM

PWM: 脉冲宽度调制(Pulse Width Modulation)。

在PWM中,有两个重要的参数需要注意:脉冲宽度(即下图中的波形高电平时间)和周期(周期乘以频率等于1)。

image-20231210175336821
image-20231210175336821

关于PWM的内容,我这里不用多说,PWM是普遍学电子或底层编程的人都知道的一种信号。STM32可以产生PWM波形,也可以检测PWM波形。具体可以参看我的以前推送过的文章。

2PPM

PPM:Pulse Position Modulation,即脉冲位置调制。

因为PWM处理简单,每条物理连线里只传输1路信号。换句话说,需要传输几个通道,就需要几组物理连线。

但在一些场合,我们并不需要直接驱动设备,而是需要先集中获取接收机的多个通道的值。所以,就衍生出了PPM,如下图:

image-20231210175340325
image-20231210175340325

简单来说,就是在一个周期内(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/

image-20231210175345519
image-20231210175345519

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部