模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

17924查看 | 25回复

【摘录】KZ告诉你什么是DSHOT

[复制链接]
发表于 2016-12-8 15:18:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 老狗与假友 于 2016-12-8 15:20 编辑

一、传统的PWM、oneshot、multishot等协议有什么问题?
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 849
     现在常用的oneshot42、oneshot125、Multoshot、或者最老的PWM模式通讯协议,虽然他们的速度差了很多,波形是方波,但本质上都属于模拟信号,即信号幅度随时间不断变化着,电调捕获的是脉冲的宽度值,其实就是判断某个幅值持续的时间长短,时间长宽度就大,油门值就高;时间短,脉冲宽度就窄,油门值就低。这种通讯方式受很多环节的干扰和影响,其脉冲宽度在发生、传递、捕获过程中是飘忽不定的,这对于oneshot 这种只有42us或125us宽度的油门值的影响极为明显。本来就很窄了,经不起折腾啊。   
    大家可以主观感受到BLS电调比BL电调在中低油门的细腻,稳定,就是因为BLS的硬件方案里,将PWM脉冲宽度捕获由原来BL的软件计算,交给了独立的硬件环节完成,光“脉宽捕获”环节的改变,就能带来如此明显的变化,可见模拟通讯的弊端。
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 1972
    同时由于这种漂移,飞控输出的0油门电调不一定认为是0;飞控输出满油门,电调也不一定认同。所以,在此类模拟通讯协议下,飞控输出需要和电调输入行程进行校准,目的就是把某种误差漂移计算在内。我们会发现,明明飞控设置的输出行程是1000us-2000us,校准电调后再去电调BL里查看,发现可能被捕获成1012us-2015us,就是这个原因。
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 1616




二、Dshot是什么?

【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 1983

    Dshot是一种飞控和电调之间的数字通讯协议,它是由Flydrino(就是做kiss飞控电调的公司)的Felix和Betaflight团队Boris一起制定的,BLheli的Steffen也负责电调的部分并把这个协议介绍给BLs。总之,这些人懂穿越机,知道玩家们需要什么,所以不断创新,充当领头羊的角色。

    虽然从形式上,Dshot还是通过飞控内件的“PWM发生器”(线还是连在模拟电调口)产生一串脉宽调试的方波,但此时的PWM发生器只是“波形打印机”,这里每一个脉冲都代表了一个数位,该脉冲在整个周期内的占比决定了是1还是0,这点和传统数字通讯受波特率的影响不同,如果在时间线上任意缩放该脉冲序列,不会改变其比例关系。也就不会改变每一位的数值。
    通过一串特定排列方波,就定义了一串0和1的数字,再通过“解码”让电调知道油门具体准确的数值是什么。这样的数字通讯传达的是一个绝对数值,不会受抖动干扰,所以不需要油门行程校准了。由于使用了DMA直接内存读取方式,控制电调的信号直接产生于微处理器内部的时钟发生器,所以能降低CPU占用率。

    总之,一般玩家只要了解,Dshot传输的是数字信号,包含的是绝对的准确油门值即可。


三、Dshot的命名有何含义,Dshot300,600是什么意思?


DSHOT600 就是每秒传输600k比特,DSHOT300就是每秒传输300K比特,可见数字越大传输速率越高,这和oneshot42、oneshot125数字越大,速度越慢的标注正好相反。


四、一些技术细节(普通玩家可以忽略)

以DSHOT600为例,每一个数据的波形如下:

【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 1975
整个数据位的长度(持续时间)是1.67us(微秒)
其中,脉冲宽度是625纳秒的数据位表示信息“0”
      脉冲宽度是1250纳秒的数据位表示信息“1”

可见,一个数据位到底标示1还是0,取决于脉冲宽度占整个周期宽度的比例,这里的625和1250允许有较大范围的误差,只要脉冲比例大小不变,该位标示的0或1就不会变。
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 5560
现在我们知道,Dshot是由一串0、1的比特流组成。既然是协议,比特流除了数据帧还需要校验、控制帧等。Dshot一串比特流(可以看作一条指令),包含16位,前11位用来表达油门绝对值,第12位用作电调状态信息,13-16位作为校验码,用来验证该数据流的传递完整性。
前11位,0或1,可以有2048种组合(2的11次方)保留1-47的值作为启动音调,电调启动和停止的命令用途,这样从47-2048就是正好是2000个步进。


熟悉二进制的朋友应该了解,如果这11位是:
11111111111,意味着满油门;
00000000000,意味着0油门;
10000000000,意味着半油门;
1xxxxxxxxxx,意味着油门至少超过一半,即>=1024
x1xxxxxxxxx,意味着油门至少超过四分之一,即>=512
xx1xxxxxxxx,意味着油门至少超过八分之一,即>=256
以此类推。

    两帧数据(指令)之间,通常有至少两毫秒的时间来表示复位信号,即一条指令结束。由此来分割比特流,所以复位信号后下一位数据就被认作新命令帧的开始。
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 8449
    如果在时间轴上分析Dshot和传统oneshot、multishot满油门所占用的时间宽度,我们会发现,Dshot并不是最快的(占用时间越短,刷新就越快)。甚至DSHOT600比Multishot还要慢那么一点点。但是,Dshot的优势在于数字通讯协议,而Multishot作为模拟协议速度最快的一种,实际运用中可能受时间抖动影响较大。


同时,通过下表可以发现,Dshot600不论表达多大油门值,其占用的时间都是26us,证明其是数字协议。 而其他模拟通讯协议,大油门需要用大脉宽标示,占用的时间比小油门明显多。
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:老狗与假友 7419



五、升级和支持

目前看来Betaflight3.1以后版本将支持Dshot,可以在电调协议那边选择,使用F1芯片的Naze32、CC3d等飞控,硬件资源受限将不能使用Dshot,F3、F4、F7芯片的飞控,内部DMA通道足够,可以支持Dshot,但注意,因为通道的原因,可能需要改变电调输出的物理端口,请关注bf新固件对各飞控硬件的说明。对于电调,需要咨询你的供货商,如果电调的硬件机能允许,厂家一定会有相应的Dshot的升级固件。各厂家也会针对电调出一些硬件改造教程,主要是取消信号输入的RC滤波环节(去掉一个小电容)。目前还有一些问题需要修复和改进,譬如飞控在开启Dshot模式后,不可以直接用BL和电调通讯调参等等

更多学习资料请访问
https://github.com/betaflight/betaflight/wiki/BETAFLIGHT-AND-Dshot



因本人知识结构所限 难免有错误之处 还请各位指正。
发表于 2016-12-8 15:59:38 | 显示全部楼层
虽然看不太懂 还是顶一下!
发表于 2016-12-8 16:23:18 | 显示全部楼层
虽然不是很明白 但是也得支持 这样才会有更好的发展方向
发表于 2016-12-8 18:04:16 | 显示全部楼层
路过,6666666
发表于 2016-12-8 21:33:02 | 显示全部楼层
好帖顶一个
发表于 2016-12-8 21:39:51 | 显示全部楼层
PWM是模拟信号我还是第一次听说  呵呵         
发表于 2016-12-8 22:39:15 | 显示全部楼层
顶一个【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:Guc 1499
发表于 2017-1-28 17:40:05 | 显示全部楼层
炸香机 发表于 2016-12-8 21:39
PWM是模拟信号我还是第一次听说  呵呵

不会吧,pwm很常见啊
发表于 2017-1-28 22:23:40 | 显示全部楼层
LCtheGOD 发表于 2017-1-28 17:40
不会吧,pwm很常见啊

我是的意思是说PWM信号不是模拟信号  而是数字信号
发表于 2017-1-29 20:02:28 | 显示全部楼层
炸香机 发表于 2017-1-28 22:23 【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 9626
我是的意思是说PWM信号不是模拟信号  而是数字信号

是模拟信号。脉冲调宽,属于模拟信号
发表于 2017-1-29 20:02:45 | 显示全部楼层
炸香机 发表于 2017-1-28 22:23 【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 6931
我是的意思是说PWM信号不是模拟信号  而是数字信号

百度百科就有
发表于 2017-1-30 00:25:21 | 显示全部楼层

脉冲宽度调制是一种模拟控制方脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。(PS 我本身就是学电子的)
发表于 2017-1-30 14:00:41 | 显示全部楼层
炸香机 发表于 2017-1-30 00:25 【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 9047
脉冲宽度调制是一种模拟控制方脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效 ...

这么理解好像没什么问题【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 3004
发表于 2017-1-30 14:01:30 | 显示全部楼层
炸香机 发表于 2017-1-30 00:25 【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 2209
脉冲宽度调制是一种模拟控制方脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效 ...

现在我都搞不清楚什么是pwm了【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:LCtheGOD 5174
发表于 2017-2-6 10:40:31 | 显示全部楼层
不明觉历啊                              
发表于 2017-2-6 20:35:41 | 显示全部楼层
支持楼主分享
发表于 2017-2-6 22:34:03 | 显示全部楼层
【摘录】KZ告诉你什么是DSHOT 穿越机,飞控,电调,FPV,固件 作者:wu_g_hua 9573
发表于 2017-2-7 21:41:10 | 显示全部楼层
好专业,这个恐怕不咋好消化
发表于 2017-2-13 23:49:22 | 显示全部楼层
DSH0T信号格式与红外遥控器的相似,约定的信息内容有创新,但还不主流,
发表于 2017-2-13 23:50:47 | 显示全部楼层
不知DSH0T能否双向
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|关于模吧|APP下载|广告报价|手机版|企业会员|商城入驻|联系我们|模吧 ( 黔ICP备2022002348号-1 )

© 2013-2020 Moz8.com 模吧,玩出精彩!