4 个版本
0.1.3 | 2024年5月25日 |
---|---|
0.1.2 | 2024年5月25日 |
0.1.1 | 2024年5月24日 |
0.1.0 | 2024年5月24日 |
#219 in 科学
每月 <103 次下载
10KB
153 行
DShot Frame
本 crate 为 DShot ESC 协议提供支持。
DShot 有两种字节的帧,其中前 11 位是油门速度,第 12 位是遥测请求标志,最后 4 位是校验和。
低于 48 的油门值保留用于特殊命令。
它以固定速度通过线路传输,一和零都是脉冲,但一比零长两倍。
用法
此示例改编自 embassy-stm32 代码库
async fn dshot(/* ... */) {
let mut pwm = SimplePwm::new(
timer,
Some(PwmPin::new_ch1(pin, OutputType::PushPull)),
None,
None,
None,
Hertz(150_000),
CountingMode::EdgeAlignedUp,
);
let max_duty_cycle = pwm.get_max_duty() as u16;
let frame = Frame::new(1000, false).unwrap();
pwm.waveform_up(&mut dma, Ch1, &frame.duty_cycles()).await;
// Pull the line low after sending a frame.
pwm.set_duty(channel, 0);
pwm.enable(channel);
}