a409600516 发表于 2015-6-24 14:34:55

BLHeli for SiLabs ESCs

        最近想学习Blheli电调,由于论坛里一直没人发关于Blheli的帖子,所以特发此帖。 希望研究过BLHeli代码的大神能出个教程一起来将电调更深入的研究一下。我现在不懂BLHeli的编译环境如何搭建,官方推荐的那个Ride7的编译器是收费的,请问还有其他的编译器没有?小弟菜鸟一个,只是比较喜欢电调而已,不会带任何商业因素在里面。希望大神们能指点一二。

jamesdeep 发表于 2015-9-17 22:20:55

有,顶LZ,欢迎交流

mandylion2008 发表于 2015-9-18 09:06:10

本帖最后由 mandylion2008 于 2015-9-18 09:12 编辑

既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可以使用。
如果想用KEIL也是可以的,只不过需要把一些宏的定义方式改成KEIL的格式就可以了,但还是建议使用RIDE 7!

最开始先买个好硬的电调,最好就是铂金40A的那个,电路清晰模块化,方便研究波形,也不贵就当睡了一节课吧,无所谓;将对应程序汇编后用U-EC5烧入电调,先玩玩体会一下;最后开始研读程序,对于程序的研读,先不要一头扎进代码之中,也不要上网求助,就算求助了,这种深入的东西可能没有人回答,一切靠自己吧!先搞清楚有几个函数,大致有什么功能,之间的关系如何?然后再对比一下电调运行的实际结果。最后再仔细研读代码,汇编难读,其实是个基础和心态的问题,什么补码的概念,符号扩展之类的,不懂的上网搜一下就可以了,其实知识用这种方法积累的才是和实践结合可以活用的真知识。畏难的心态只不过是听别人说如何难如何难,自己就怕了。只要想象一下自己在掌握了BLHELI之后的样子(可能就像西游记中那个偷袈裟的老和尚在想象自己穿上袈裟后,给弟子们讲经时那种左顾右盼,骄傲得意的样子,哈),简单说,就是一回生,二回熟的事情。到了最后,再将所有代码的结构和功能一一总结,融汇贯通,能够做些小修小改,就算出师了!以后就靠自己的创造力了。不过要记住:BLHELI是很不错的学习经典,但并不是无刷电调的唯一做法。

xk376632352 发表于 2015-9-18 09:23:16

其实看汇编代码考验的是心态,静不下来真的看不下去。BLHELI代码太多了,咋看头晕呼呼的。
所以我先看看其他的,也是mandylion2008在以前的帖子中提到的,使用AVR的,比BLHELI少很多,
http://www.flyelectric.ukgateway.net/avr_ff_timer.htm。
对着指令看了几遍,有点感觉了。等差不多了再仔细研究BLHELI,这两者还是有很大区别的。

jamesdeep 发表于 2015-9-18 13:22:50

mandylion2008 发表于 2015-9-18 09:06
既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可 ...

海绵宝宝,现在github的BLHeli代码只剩下二进制的hex文件了,asm源文件好像没有了,能否分享一份?我想尝试读一读看看

jamesdeep 发表于 2015-9-18 13:29:11

mandylion2008 发表于 2015-9-18 09:06
既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可 ...

海绵宝宝,现在github的BLHeli代码只剩下二进制的hex文件了,asm源文件好像没有了,能否分享一份?我想尝试读一读看看

xk376632352 发表于 2015-9-18 13:31:10

本帖最后由 xk376632352 于 2015-9-18 13:58 编辑

jamesdeep 发表于 2015-9-18 13:29
海绵宝宝,现在github的BLHeli代码只剩下二进制的hex文件了,asm源文件好像没有了,能否分享一份?我想尝 ...

https://github.com/bitdump/BLHeli/tree/master/SiLabs
有asm源文件啊,刚看了下,前两天刚更新

jamesdeep 发表于 2015-9-18 13:43:34

xk376632352 发表于 2015-9-18 13:31
https://github.com/bitdump/BLHeli/tree/master/SiLabs
有asm源文件啊

嗯 两天前更新了 又有了

梦幻之旅 发表于 2015-9-19 11:37:30

BLHeli for SiLabs ESCs

sunicecream 发表于 2015-11-3 16:02:55

最近用XP-7A的电调刷了一下XP_7A_MULTI_REV14_2的固件,接上新西达的A1510电机,发现启动有困难,在启动临界点的状态下,电机断断续续的转着,没有反转的情况,油门再大一点的时候电机才能正常转动起来。电机的启动功率已经调到软件可以调的最大值(1.5),还是不行。感觉是固件的电机启动功率与我用的电机不匹配还是什么原因?

a409600516 发表于 2015-11-4 16:38:28

sunicecream 发表于 2015-11-3 16:02
最近用XP-7A的电调刷了一下XP_7A_MULTI_REV14_2的固件,接上新西达的A1510电机,发现启动有困难,在启动临 ...

14.0以后的版本都有这种情况,你还是刷13.2的吧

sunicecream 发表于 2015-11-4 18:56:42

a409600516 发表于 2015-11-4 16:38
14.0以后的版本都有这种情况,你还是刷13.2的吧

请问下,github上是不是没有存储历史版本?我找不到你说的13.2版本,在CSDN上下了个13.1版本的试了下,都转不起来。哥们,你那有13.2版本的庆,能否方便传上来一下?

a409600516 发表于 2015-11-16 20:03:07

sunicecream 发表于 2015-11-4 18:56
请问下,github上是不是没有存储历史版本?我找不到你说的13.2版本,在CSDN上下了个13.1版本的试了下,都 ...

https://github.com/FlexbotNG/BLHeliESC_13_2

a409600516 发表于 2015-11-16 20:05:29

mandylion2008 发表于 2015-9-18 09:06
既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可 ...

我用Ride7新建工程,然后下载了最新的14.2程序,但是编译不成功。是不是还需要什么补丁啊?

Building G:\My_BLHeli\BLHeli.asm
due to missing G:\My_BLHeli\BLHeli
Unknown tool: $(Target.Tools.Assembler)

Build failed

mandylion2008 发表于 2015-11-16 20:10:32

a409600516 发表于 2015-11-16 20:05
我用Ride7新建工程,然后下载了最新的14.2程序,但是编译不成功。是不是还需要什么补丁啊?

Building G: ...

在我的印象中,是什么都不需要的。
你这样来吧:
1.安装那个鸟编译器,这个要正确安装。
2.安装SILABS IDE,在里面的工具链中选择这个鸟编译器就可以了,可以参看SILABS的编译器使用应用笔记。
3.编译之,下载之。
4.运行之。

sunicecream 发表于 2015-11-16 20:59:38

mandylion2008 发表于 2015-11-16 20:10
在我的印象中,是什么都不需要的。
你这样来吧:
1.安装那个鸟编译器,这个要正确安装。


ride7编译器吗?

mandylion2008 发表于 2015-11-16 21:49:10

sunicecream 发表于 2015-11-16 20:59
ride7编译器吗?

是的,需要注册一下就行了。

mrcricket 发表于 2016-3-11 12:39:34

mandylion2008 发表于 2015-9-18 09:06
既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可 ...

像西游记中那个偷袈裟的老和尚在想象自己穿上袈裟后,给弟子们讲经时那种左顾右盼,骄傲得意的样子。。。。
{:loveliness:}

mandylion2008 发表于 2016-3-11 17:09:32

mrcricket 发表于 2016-3-11 12:39
像西游记中那个偷袈裟的老和尚在想象自己穿上袈裟后,给弟子们讲经时那种左顾右盼,骄傲得意的样子。。。 ...

可别这样,我指的是那些所谓的成功人士(也许走了旁门左道)给初入门的人做指导时的鸟样!尤其是一些半桶水在面试别人的时候!

我给的都是实实在在的东西,自己的亲身体验,别人看过之后可以大大减少摸索的时间,很少会有人这样讲解的。
不过我现在是不会再做这样的免费指导了。
有时候,一些指导是非常宝贵的,很难得的,所谓“莫将容易得,便作等闲看”,可以看看,在你们自己摸索的情况下,要付出多少时间和精力的代价。

浪子怀海 发表于 2016-4-11 21:28:41

jamesdeep 发表于 2015-9-18 13:43
嗯 两天前更新了 又有了

这位前辈,本人菜鸟一个(汇编程序很差),不知道研读8051f310汇编程序,要借助什么资料,能推荐一下吗?谢谢{:smile:}

浪子怀海 发表于 2016-4-11 21:30:42

lz是看什么资料学习SILABS 汇编的,可以分享一下吗?打算也研读bl程序,汇编很差

a409600516 发表于 2016-4-12 09:25:38

浪子怀海 发表于 2016-4-11 21:30
lz是看什么资料学习SILABS 汇编的,可以分享一下吗?打算也研读bl程序,汇编很差 ...

就那几个语法,不懂的百度一下就差不多了

浪子怀海 发表于 2016-4-12 10:56:06

c8051f的汇编与80C51汇编一样吗

pdabug 发表于 2016-4-14 23:49:56

上传个keil工程,
asm文件改动了,去掉一些不用的
不然报错LIMIT EXCEEDED: BALANCED TEXT LENGTH
有知道是个什么错误吗?
帮助里的解释:
The macro preprocessor's internal limit for balanced text length is violated. Expansions and intermediate expansions cannot produce strings longer than 2045 characters.

浪子怀海 发表于 2016-4-16 15:11:16

a409600516 发表于 2016-4-12 09:25
就那几个语法,不懂的百度一下就差不多了

恩恩,lz能大概简绍一下blheli的思路吗?因为汇编不好,看比较难懂,lz要是能讲一下思路,再去看就好多了,谢谢哈{:smile:}

pazulin 发表于 2016-4-16 15:17:17

大量汇编,我是没精力了

浪子怀海 发表于 2016-4-19 17:14:16

pdabug 发表于 2016-4-14 23:49
上传个keil工程,
asm文件改动了,去掉一些不用的
不然报错LIMIT EXCEEDED: BALANCED TEXT LENGTH


我和你遇到了一样的问题,你解决了吗?我发现用blheli10.1的版本编译就没有错误
可以交流下 1506251386

pdabug 发表于 2016-4-20 17:46:08

浪子怀海 发表于 2016-4-19 17:14
我和你遇到了一样的问题,你解决了吗?我发现用blheli10.1的版本编译就没有错误
可以交流下 1506251386 ...

就是代码字数多了,不知如何解决

浪子怀海 发表于 2016-4-20 19:15:14

pdabug 发表于 2016-4-20 17:46
就是代码字数多了,不知如何解决

你用10.1版本吧,可以编译

pdabug 发表于 2016-4-20 19:29:49

浪子怀海 发表于 2016-4-20 19:15
你用10.1版本吧,可以编译

不是,最新的,删除了些注释

浪子怀海 发表于 2016-4-20 19:33:23

pdabug 发表于 2016-4-20 19:29
不是,最新的,删除了些注释

你的意思是文本太长了,那删除一下不要就好了吗?你在研究blheli源程序吗?

pdabug 发表于 2016-4-20 20:11:18

浪子怀海 发表于 2016-4-20 19:33
你的意思是文本太长了,那删除一下不要就好了吗?你在研究blheli源程序吗? ...

是啊,报错说的很清楚了,不知道如何解决,这个问题好像存在很久了

pdabug 发表于 2016-4-20 20:11:44

刚开始看代码

浪子怀海 发表于 2016-4-20 20:47:20

pdabug 发表于 2016-4-20 20:11
刚开始看代码

我也刚开始看你看的是avr的还是c8051的,可以一起交流哈,qq在上面

浪子怀海 发表于 2016-5-25 16:46:30

pdabug 发表于 2016-4-20 20:11
刚开始看代码

你还在研究blheli程序吗?研究怎么样了啊?

helislayer 发表于 2016-5-28 00:32:39

BLHeli 我还知道一些,要是有什么问题可以随便问,我尽量回答。
我不会写个BLHeli 长篇大论如何工作这种,这个一时半会说不清楚,
有源码上的问题可以与问具体问题。

rei1984 发表于 2016-5-28 08:19:09

耐心学习一下。。。。。。。。。

makeflyeasy 发表于 2018-1-9 00:06:51

xk376632352 发表于 2015-9-18 09:23
其实看汇编代码考验的是心态,静不下来真的看不下去。BLHELI代码太多了,咋看头晕呼呼的。
所以我先看看其 ...

大佬你好,最近学习blheli的源码,有些是在是看不明白。想请大佬帮忙指点下,在这里先谢谢大佬了。
wait_for_comm:
        ; Update demag metric
        mov        Temp1, #0
        jnb        Flags0.DEMAG_ENABLED, ($+8); If demag disabled - branch
        jnb        Flags0.DEMAG_DETECTED, ($+5)

        mov        Temp1, #1

        mov        A, Demag_Detected_Metric        ; Sliding average of 8, 256 when demag and 0 when not. Limited to minimum 120
        mov        B, #7
        mul        AB                                        ; Multiply by 7
        mov        Temp2, A
        mov        A, B                                        ; Add new value for current demag status
        add        A, Temp1                               
        mov        B, A
        mov        A, Temp2
        mov        C, B.0                                ; Divide by 8
        rrc        A                                       
        mov        C, B.1
        rrc        A
        mov        C, B.2
        rrc        A
        mov        Demag_Detected_Metric, A
        clr        C
        subb        A, #120                                ; Limit to minimum 120
        jnc        ($+5)

        mov        Demag_Detected_Metric, #120

        clr        C
        mov        A, Demag_Detected_Metric        ; Check demag metric
        subb        A, Demag_Pwr_Off_Thresh
        jc        wait_for_comm_wait                ; Cut power if many consecutive demags. This will help retain sync during hard accelerations

        setb        Flags0.DEMAG_CUT_POWER        ; Set demag power cut flag
IF NFETON_DELAY NE 0
        All_nFETs_off
ELSE
        En_Off                                        ; For EN/PWM style drivers
ENDIF

wait_for_comm_wait:
        jnb Flags0.T3_PENDING, ($+5)                       
        ajmp        wait_for_comm_wait                                       

        ; Setup next wait time
        mov        TMR3RLL, Wt_Zc_Scan_Start_L
        mov        TMR3RLH, Wt_Zc_Scan_Start_H
        setb        Flags0.T3_PENDING
        orl        EIE1, #80h                        ; Enable timer3 interrupts
        ret
在这个源码里面,Demag_Detected_Metric的计算为何里面有乘以7,然后和Demag_Pwr_Off_Thresh比较之后来判断是直接等待中断还是先关闭输出再等中断?这里不太明白,想请大佬解惑。谢谢大佬
页: [1]
查看完整版本: BLHeli for SiLabs ESCs