搜索
bottom↓
回复: 37

BLHeli for SiLabs ESCs

[复制链接]

出0入0汤圆

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2015-9-17 22:20:55 | 显示全部楼层
有,顶LZ,欢迎交流

出0入0汤圆

发表于 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是很不错的学习经典,但并不是无刷电调的唯一做法。

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

发表于 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源文件啊,刚看了下,前两天刚更新

出0入0汤圆

发表于 2015-9-18 13:43:34 | 显示全部楼层
xk376632352 发表于 2015-9-18 13:31
https://github.com/bitdump/BLHeli/tree/master/SiLabs
有asm源文件啊

嗯 两天前更新了 又有了

出0入0汤圆

发表于 2015-9-19 11:37:30 | 显示全部楼层
BLHeli for SiLabs ESCs

出0入0汤圆

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

本帖子中包含更多资源

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

x

出0入0汤圆

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

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

出0入0汤圆

发表于 2015-11-4 18:56:42 | 显示全部楼层
a409600516 发表于 2015-11-4 16:38
14.0以后的版本都有这种情况,你还是刷13.2的吧

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

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

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

Building G: ...

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

出0入0汤圆

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

ride7编译器吗?

出0入0汤圆

发表于 2015-11-16 21:49:10 | 显示全部楼层

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

出0入0汤圆

发表于 2016-3-11 12:39:34 | 显示全部楼层
mandylion2008 发表于 2015-9-18 09:06
既然有心要学BLHELI,那我可就要支持一下了!
因为BLHELII汇编后不会超过8K,而Ride7在8K下是免费的,所以可 ...

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

出0入0汤圆

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

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

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

出0入0汤圆

发表于 2016-4-11 21:28:41 | 显示全部楼层
jamesdeep 发表于 2015-9-18 13:43
嗯 两天前更新了 又有了

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

出0入0汤圆

发表于 2016-4-11 21:30:42 | 显示全部楼层
lz是看什么资料学习SILABS 汇编的,可以分享一下吗?打算也研读bl程序,汇编很差

出0入0汤圆

 楼主| 发表于 2016-4-12 09:25:38 | 显示全部楼层
浪子怀海 发表于 2016-4-11 21:30
lz是看什么资料学习SILABS 汇编的,可以分享一下吗?打算也研读bl程序,汇编很差 ...

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

出0入0汤圆

发表于 2016-4-12 10:56:06 | 显示全部楼层
c8051f的汇编与80C51汇编一样吗

出0入0汤圆

发表于 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.

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-4-16 15:11:16 | 显示全部楼层
a409600516 发表于 2016-4-12 09:25
就那几个语法,不懂的百度一下就差不多了

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

出0入0汤圆

发表于 2016-4-16 15:17:17 | 显示全部楼层
大量汇编,我是没精力了

出0入0汤圆

发表于 2016-4-19 17:14:16 | 显示全部楼层
pdabug 发表于 2016-4-14 23:49
上传个keil工程,
asm文件改动了,去掉一些不用的
不然报错  LIMIT EXCEEDED: BALANCED TEXT LENGTH

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2016-4-20 19:15:14 | 显示全部楼层
pdabug 发表于 2016-4-20 17:46
就是代码字数多了,不知如何解决

你用10.1版本吧,可以编译

出0入0汤圆

发表于 2016-4-20 19:29:49 | 显示全部楼层
浪子怀海 发表于 2016-4-20 19:15
你用10.1版本吧,可以编译

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

出0入0汤圆

发表于 2016-4-20 19:33:23 | 显示全部楼层
pdabug 发表于 2016-4-20 19:29
不是,最新的,删除了些注释

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2016-4-20 20:11:44 | 显示全部楼层
刚开始看代码

出0入0汤圆

发表于 2016-4-20 20:47:20 | 显示全部楼层

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

出0入0汤圆

发表于 2016-5-25 16:46:30 | 显示全部楼层

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

出0入0汤圆

发表于 2016-5-28 00:32:39 | 显示全部楼层
BLHeli 我还知道一些,要是有什么问题可以随便问,我尽量回答。
我不会写个BLHeli 长篇大论如何工作这种,这个一时半会说不清楚,
有源码上的问题可以与问具体问题。

出0入25汤圆

发表于 2016-5-28 08:19:09 | 显示全部楼层
耐心学习一下。。。。。。。。。

出0入0汤圆

发表于 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比较之后来判断是直接等待中断还是先关闭输出再等中断?这里不太明白,想请大佬解惑。谢谢大佬
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 16:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表