打印
[应用相关]

X_CUBE_SPN7 程序电机启动抖动问题

[复制链接]
992|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言
如果客户从 ST 官网上下载了 X_CUBE_SPN7 的 BLDC 电机控制程序, 并且使用 Keil 做为编译工具, 那么在运行电机程序时
就会遇到电机无法正常启动问题, 并且无法进行程序调试, 本文旨在说明这个问题所在, 并给出调整方法。  

使用特权

评论回复
沙发
黑心单片机|  楼主 | 2021-11-9 09:54 | 只看该作者
X_CUBE_SPN7 库描述
该电机库用于 BLDC 的方波控制, 实现了无传感控制方式, 使用 PWM_OFF 的 ADC 检测模式用于检测过零点, 通用于
STM32F0, STM32F1, STM32F3, STM32F4 系列单片机。  

使用特权

评论回复
板凳
黑心单片机|  楼主 | 2021-11-9 09:56 | 只看该作者
问题描述
ST 官网下载的 X_CUBE_SPN7 程序, 使用 IAR 编译下载到芯片中, 电机运行正常, 如果使用 Keil 则问题比较大, 电机抖动
无法启动, 并且调试模式无法进入。  

使用特权

评论回复
地板
黑心单片机|  楼主 | 2021-11-9 09:56 | 只看该作者
解决方法
关于无法调试问题
程序可以下载到 Flash 中但无法进行调试, 按 RESET 后程序也无法回到*.s 中; 察看 Keil 的 Debug 选项, 发现 Options for
Target Debug Settings Debug Download Options 选项在默认情况下, Download to Flash 选项被打勾了, 需要去掉
这个勾; 需要我们使用 ST Flash 算法进行下载才能正常仿真, 详细解释 Keil 网站上有具体说明:  链接


使用特权

评论回复
5
黑心单片机|  楼主 | 2021-11-9 09:57 | 只看该作者
关于电机抖动问题
问题根源在于 Keil 默认编译使用了 Micro LIB, microlib 是缺省 C 库的备选库, microlib 进行了高度优化以使代码变得很小,
对于大多数应用这个是最佳选择, 但这个备选库存在不符合 ISO C 库标准, 不支持某些 ISO 特性,并且其他特性具有的功能
也较少, 不符合 IEEE 754 二进制浮点算法标准; 有些情况下有些编译代码变得很慢;  


可以看到当使用 microlib 库进行编译的时候 MC_SixStep_Ramp_Motor_calc 这个函数执行的 States 数据为 49301
( 104333-53022) , 而不使用 microlib 进行编译时 MC_SixStep_Ramp_Motor_calc 执行的 states 数据为 1687; 两者相差甚
远, 这个启动函数执行时间长会导致中断无法正常运行;

这样如果客户使用 ST 电机库, 并且使用 Keil 进行编译的话, 需要去掉 microlib 选项; 当然编译过程中也会相应带来所占用的
Flash 空间变大; 或者客户可以对启动函数 MC_SixStep_Ramp_Motor_calc 进行修改, 这个部分有开方的操作, 让启动代码
变简单一些也是可以的;


使用特权

评论回复
6
sparrow054| | 2021-11-9 10:48 | 只看该作者
这和电机的抖动都会有关系?

使用特权

评论回复
7
观海| | 2021-12-4 19:27 | 只看该作者
这个问题是第一个共性吗

使用特权

评论回复
8
guanjiaer| | 2021-12-4 19:30 | 只看该作者
如果用iar编译呢

使用特权

评论回复
9
heimaojingzhang| | 2021-12-4 20:02 | 只看该作者
是说不能连接仿真器进行调试吗

使用特权

评论回复
10
keaibukelian| | 2021-12-4 20:04 | 只看该作者
这个是在什么情况下发现的呢

使用特权

评论回复
11
tpgf| | 2021-12-4 20:07 | 只看该作者
是软件的缺陷吗

使用特权

评论回复
12
labasi| | 2021-12-4 20:09 | 只看该作者
抖动影响大不大啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

398

帖子

0

粉丝