前情回顾:从github上下载到BLHeli-master之后,打开BLHeli_S SiLabs下面的hex文件夹,可以看到各种版本的固件烧录文件,这该怎么选择呢?这些固件,命名形式基本一致,由一个字母和另一个字母加一个两位数字再加REV16.7版本号组成,HEX是后缀。在文件《BLHeli_S manual SiLabs Rev16.x.pdf》中可以查到:意思是说,第一个字幕代表MCU引脚输出,我认为更准确的理解是引脚的分配。第二个字幕是L或者H,其中L代表24MHz的MCU,也就是EFM8BB1,H代表48MHz的MCU,也就是EFM8BB2。后面的两位数字代表MOS的开关死区时间,单位是20.4ns。有些预驱动器内部集成了死区时间控制,这时候可以设置为00。到这里还有一点纳闷,究竟第一个字母代表的引脚分配是什么意思呢?注意看,在BLHeli-master\BLHeli_S SiLabs这个路径下,有许多以字母开头的.inc文件,其实这个就是第一个字母所代表的含义。随便打开个《A.inc》文件,可以看到第32到39行是关于24MHz和48MHz的MCU的选择。第46到77这里是关于死区时间的定义,从这里看,死区时间可以选择的只有0、5、10、15、20、25、30、40、50、70、90这些数字。另外,后面的ESC layout tag是"A_L_XX",因为我们打开的是《A.inc》。这时候回去看一下固件命名中,果然也只有0、5、10、15、20、25、30、40、50、70、90这些死区数字设置。《A.inc》和《B.inc》文件的PORT 1 definitions部分对比。这里会发现:ABC三相的上校桥臂MOS的控制信号定义的引脚序号不同。这就是不同的固件,代表不同的引脚分配。为啥会有这么多引脚分配方式?主要是由于电调一般要求尺寸小,集成度高,而且有各种外形和设计的电调,所以针对这些现实情况,Layout时对引脚排序做了调整,方便布局布线。前面说的48MHz的MCU指的就是EFM8BB21F16G-C-QFN20这个型号。inc文件的PORT 1 definitions、PORT 1 definitions部分就是P0、P1引脚分配。EQU后面的数字就是指引脚序号。到这里,我们就搞明白了不同固件所代表的含义,搞明白这些有两个好处:1、在给买来的BLHeli_S电调刷固件时,知道怎么选择固件(产品详情页一般会注明所使用的固件版本,如果没有注明,可以咨询卖家确认)。2、自己diy BLHeli_S电调时,可以选择布局布线更顺的电调固件。