5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: dShot协议要点明晰 [打印本页]

作者: Jack_the_RIPPER    时间: 2021-6-24 09:14
标题: dShot协议要点明晰
以下转自 csdn,希望对 航模里的 PWM  数字还是模拟的论题画一个终结。如果看不懂可以忽略本帖。
数字电子钟
  登录
nwwn
关注
DSHOT协议要点简介 原创
2018-04-04 11:37:56
7点赞
nwwn
码龄9年
关注
什么是DSHOT?
DSHOT是无人机里边,一种新型的驱动电调(ESC,无刷直流电机电子调速器)的方式。
常规的电机驱动都是采用PWM模式,不管是无刷也好,有刷也好,都是一样。也就是固定频率,控制端通过调节占空比的方式来发送电机油门的控制信号,接收端(ESC)通过测量PWM的占空比,然后量化出油门值,并转换为对电机的驱动,这个也就是ESC的工作。PWM是一种方波,表面来看是数字信号的传输,但本质上是一种模拟值,为什么说是模拟值?如控制端产生400HZ的一组PWM,周期是1/400=0.0025s=2.5ms,油门信号范围是0-100%,对应波形高电平长度范围是1000-2000us,也就是这段PWM波形的高电平的时间长度就是对应的油门值,然后接收端(ESC),通过测量这段信号高电平的时间来量化成油门值,模拟值就是在于“测量”这里,通常测量一个PWM脉宽都是通过硬件捕获信号的上升沿和下降沿然后算出时间差,这就会出现时间误差问题,控制端发出的脉宽可能是1008us,但可能会由于接收端控制器的时钟精度不高,导致测量的时钟基准和控制端出现一定偏差,测量出来可能是1006,或者1009,1010都是正常的,PWM信号甚至很容易收到干扰导致信号出现畸形,虽然接收端可以通过软件滤除方式,但终归是存在这么一个缺陷。所以这里说PWM控制是一个模拟值,因为通信两端发送和接收的信息,会受时钟精度的不同产生信息不一致的情况。
ok上面哆嗦那么半天就是为了DSHOT出场的,DSHOT是真正意义的数字信号协议,也是一种波形,这个协议其实很简单,一帧信号就是一串完整的数据,包含3部分,1是油门值,2是请求数据回传标志,3是校验位。
下图是示波器抓取的一帧信号
简要介绍下一帧信号的3部分组成:
1.油门值(Throttle) 11位
由11位组成,按二进制计算可表示的数值范围是0-2047,共2048个油门值,可以表示非常精细的油门信号。
2.请求数据回传标志(Tlm request) 1位
这个位是向ESC请求数据回传的标志位,为0时表示不请求,为1表示请求,若发送请求,支持数据回传功能的ESC会回传ESC的各种状态信息给控制端。
3.校验位(CRC) 4位
校验位很重要,是验证一帧数据是否有效合法,是否未遭到破坏的一种校验方式,确保数据的正确性。这4个校验位是对前面11个油门值+1个回传标志这12个位按每组4位分3组,也就是三组4位的数据进行异或计算(C语言运算符就是^),计算结果取低4位作为这串数据的校验码插入。
以上是组成的位数,每个位不是0就是1,这两种信号是如何通过波形表示呢?如下图:
数字电子钟
  登录
nwwn
关注
DSHOT协议要点简介 原创
2018-04-04 11:37:56
7点赞
nwwn
码龄9年
关注
什么是DSHOT?
DSHOT是无人机里边,一种新型的驱动电调(ESC,无刷直流电机电子调速器)的方式。
常规的电机驱动都是采用PWM模式,不管是无刷也好,有刷也好,都是一样。也就是固定频率,控制端通过调节占空比的方式来发送电机油门的控制信号,接收端(ESC)通过测量PWM的占空比,然后量化出油门值,并转换为对电机的驱动,这个也就是ESC的工作。PWM是一种方波,表面来看是数字信号的传输,但本质上是一种模拟值,为什么说是模拟值?如控制端产生400HZ的一组PWM,周期是1/400=0.0025s=2.5ms,油门信号范围是0-100%,对应波形高电平长度范围是1000-2000us,也就是这段PWM波形的高电平的时间长度就是对应的油门值,然后接收端(ESC),通过测量这段信号高电平的时间来量化成油门值,模拟值就是在于“测量”这里,通常测量一个PWM脉宽都是通过硬件捕获信号的上升沿和下降沿然后算出时间差,这就会出现时间误差问题,控制端发出的脉宽可能是1008us,但可能会由于接收端控制器的时钟精度不高,导致测量的时钟基准和控制端出现一定偏差,测量出来可能是1006,或者1009,1010都是正常的,PWM信号甚至很容易收到干扰导致信号出现畸形,虽然接收端可以通过软件滤除方式,但终归是存在这么一个缺陷。所以这里说PWM控制是一个模拟值,因为通信两端发送和接收的信息,会受时钟精度的不同产生信息不一致的情况。
ok上面哆嗦那么半天就是为了DSHOT出场的,DSHOT是真正意义的数字信号协议,也是一种波形,这个协议其实很简单,一帧信号就是一串完整的数据,包含3部分,1是油门值,2是请求数据回传标志,3是校验位。
下图是示波器抓取的一帧信号
示波器波形
简要介绍下一帧信号的3部分组成:
1.油门值(Throttle) 11位
由11位组成,按二进制计算可表示的数值范围是0-2047,共2048个油门值,可以表示非常精细的油门信号。
2.请求数据回传标志(Tlm request) 1位
这个位是向ESC请求数据回传的标志位,为0时表示不请求,为1表示请求,若发送请求,支持数据回传功能的ESC会回传ESC的各种状态信息给控制端。
3.校验位(CRC) 4位
校验位很重要,是验证一帧数据是否有效合法,是否未遭到破坏的一种校验方式,确保数据的正确性。这4个校验位是对前面11个油门值+1个回传标志这12个位按每组4位分3组,也就是三组4位的数据进行异或计算(C语言运算符就是^),计算结果取低4位作为这串数据的校验码插入。
以上是组成的位数,每个位不是0就是1,这两种信号是如何通过波形表示呢?如下图:
波形
DSHOT600为例(周期=1/600=1667ns):
位长度(一个数据周期)为1667纳秒(T0H + T0L或T1H + T1L)。
对于某位为0,脉冲宽度为625纳秒(T0H - 当位值为0时,脉冲为高电平的时间)
一位为1时,脉冲宽度为1250纳秒(T1H - 当位值为1时,脉冲为高电平的时间)
(也就是T1H = 2T0H)
位0和位1值的脉冲长度允许一定的容差,所以这些时间可以稍微减少或者延长,结果仍然是一样的。
DSHOT信号有DSHOT100,DSHOT300,DSHOT600,DSHOT1200,每种代表了不同的通信速率,因为不同的速率,决定了上面0和1数据的T0H TOL T1H T1L的脉冲周期,当然,DSHOTxxx后面的数值越高,速率就越高,数据的时间宽度就越窄,对处理器要求就越高,纳秒级,实际使用DSHOT600足矣。
以上16位数据发送时高位在前,逐位发送,理解好这点,对软件开发非常重要。
软件实现的方式可以通过DMA方式,因为DSHOT还是比较占资源的,放任DMA去帮处理器lu最合适,非常高效,解放下处理器的双手,包括数据解析也是一样的思路。
2018-04-04 By nyway

作者: tcjsjxx    时间: 2021-6-24 14:39
好贴,看了就懂了DSHOT.以前一直不懂。
作者: Tomcat77    时间: 2021-6-25 10:03

作者: 问天几何    时间: 2021-6-26 10:52
目前航模用的PWM不是直接计时,是对时间碎片计数。分辨率取决于时钟周期。Dshot分辨油门信号位也是时钟计数,只不过分辨率到了μs级而已。

作者: 问天几何    时间: 2021-6-26 10:55
问天几何 发表于 2021-6-26 10:52
目前航模用的PWM不是直接计时,是对时间碎片计数。分辨率取决于时钟周期。Dshot分辨油门信号位也是时钟计数 ...

ns级

作者: Jack_the_RIPPER    时间: 2021-7-1 18:13
本帖最后由 Jack_the_RIPPER 于 2021-7-1 18:14 编辑
问天几何 发表于 2021-6-26 10:52
目前航模用的PWM不是直接计时,是对时间碎片计数。分辨率取决于时钟周期。Dshot分辨油门信号位也是时钟计数 ...


dShot 分辨率固定 2048,
不要把单片机时钟和要描述的数据搞混。
pwm脉宽控制要描述的数据是用高电平脉宽来表示的,这是典型的模拟量。不管你怎么测(我们当然知道是用定时器跑数去测,你所谓的“时间碎片”),这也是一个量测物理量,是模拟值。
dShot是帧结构数据,高电平就是1(一定脉宽范围内),低电平就是0,这才是数字值。
如果还不能理解,放弃吧。

作者: 问天几何    时间: 2021-7-1 20:00
Jack_the_RIPPER 发表于 2021-7-1 18:13
dShot 分辨率固定 2048,
不要把单片机时钟和要描述的数据搞混。
pwm脉宽控制要描述的数据是用高电平 ...

对对,放弃,放弃跟你说明白了

作者: han_2k    时间: 2021-7-1 20:10
和直升机有啥关系?
作者: 宛陵小勇    时间: 2021-7-10 10:16
Jack_the_RIPPER 发表于 2021-7-1 18:13
dShot 分辨率固定 2048,
不要把单片机时钟和要描述的数据搞混。
pwm脉宽控制要描述的数据是用高电平 ...

楼主放弃吧,有些人是讲不通的





欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com/) Powered by Discuz! X3.3