#ppm #ppmsum #fr-sky #cppm

no-std ppm_decode

脉冲位置调制(PPM/CPPM)无线电控制(RC)协议的解析器

4个版本

0.1.3 2020年5月29日
0.1.2 2020年5月22日
0.1.1 2020年5月22日
0.1.0 2020年5月21日

#735 in 嵌入式开发

每月25次下载

BSD-3-Clause

17KB
199

ppm_decode

为no_std rust提供的PPM解码。这个库解码了无线电控制和其他嵌入式应用中常用的PPM格式。

示例

通常,PPM脉冲输入可能通过输入引脚中断接收。重要的是您需要向这个解析器提供脉冲开始的时间。在PPM中,唯一需要考虑的时间差是连续脉冲之间的时间差。

请参阅PpmParser文档以获取示例用法,或参考test_ppm_decode项目,该项目演示了使用stm32f4微控制器的示例。

状态

  • 匿名PPM时间事件的基本解析
  • 基本测试
  • 使用示例
  • 测试时钟溢出
  • 测试不寻常的配置限制
  • 在一段时间内锁定在一致的频道数
  • 文档注释和示例
  • CI

lib.rs:

该库提供将PPM脉冲边缘解码为PPM帧的功能。它不要求特定的中断处理或输入引脚测量策略。用户需要提供的只是脉冲的相对时间,该库将从这些信息中提取PPM帧。

PPM频道值编码为多个脉冲之间的间隔。通常,PPM脉冲是高值,而脉冲之间的间隔是低值;然而,某些PPM接收器会反转信号,其中PPM信号被拉高,脉冲是低值。PPM帧由这种方式编码的多个频道组成,在最后一个频道和第一个频道之间有一个较长的间隔,然后是下一个帧。这个帧分隔间隔称为帧同步或复位。因此,具有五个频道的PPM帧可能看起来像这样

|___|___|___|___|___| 其中高值是脉冲,低值是脉冲之间的间隔。脉冲持续时间通常调校得尽可能短,同时仍然可靠地传输。

该库为常见的配置值提供默认值,例如

  • 最小PPM频道值(脉冲之间的最小间隔)
  • 最大PPM频道值(脉冲之间的最大间隔)
  • 最小帧同步持续时间(脉冲之间的间隔被认为是一个帧同步/复位的最小时间)
  • 被认为是有效帧的最小PPM频道数。

无运行时依赖