根据前面的几个帖子的研究,采用GCC进行LKS32MC081的驱动开发没有什么问题,除了官方提供的部分驱动是采用二进制格式或者lib库的形式提供的,不过直接将这个库引入到GCC的工程中后,实践是可以直接使用的,目前没有不良的反映。 1、工程移植 官方提供了无感无刷FOC驱动电机的样例工程,采用KeilMDK开发环境。需要将官方样例工程移植到GCC环境下。前面几个帖子中已经完成了芯片的基本开发环境支持,本工程需要在前面的工程基础上,仅官方代码移植过来。 这里面值得注意的是,我们需要增加对官方提供的V4p2库的支持。打开参数配置设计界面,找到GNU ARM Cross C++ Linker->Libraries,添加lks32mc08x_nvr和lks08x_fluxobs_hall_v4p2两个库的引用,同时添加两个库的搜索路径。 由于GCC环境下无法识别扩展名为lib的库,所以我们需要手动修改这两个文件的名字。分别为: Liblks32mc08x_nvr.so或者Liblks32mc08x_nvr.a Liblks08x_FluxOBS_Hall_v4p2.so或者Liblks08x_FluxOBS_Hall_v4p2.a 可以完成正常的链接过程,形成可执行文件,但是会出现警告信息,目前使用正常。 2、电机参数测定和调整 在官方提供的FOC资料中,我们可以找到电机参数生成表,将我们电机的实际测量参数填入表格中,我们可以获取到关于电机驱动所需的参数内容。 将参数表中的数据填入到工程文件MC_Parameter.h中。 /* ------------------------------MotorParameter------------------------------ */ #define U_MOTOR_PP (6.0) /* 电机极对数 */ #define U_MOTOR_RS (1.55) /* 单位: Ω 电机相电阻 */ #define U_MOTOR_LD (890) /* 单位: uH 电机d轴电感 */ #define U_MOTOR_LQ (890) /* 单位: uH 电机q轴电感 */
/* 电机磁链常数 计算公式:Vpp/2/sqrt(3)/(2*PI)/f,其中Vpp为电压峰峰值,f为电频率 此参数仅影响顺逆风启动的速度检测,角度估算不使用些参数 */ #define U_MOTOR_FLUX_CONST (0.000991425)
3、运行参数调整 电机最大运行速度参数,调整为120Hz,相当于7200rpm 。 #define U_MAX_FREQ (120.0) /* 单位:Hz, 电机最高运行转速 */
4、运行测试 参数矫正后的运行测试效果:
5、评测总结 通过这段时间的使用,个人认为lks32mc081这款产品的优缺点如下: 1)芯片可以直接兼容5V系统,抗干扰能力强; 2)芯片内部集成了DSP协处理器,对于电机驱动的数**算加速起到了关键作用; 3)专用的MCPWM外设,可以保证电机驱动所需的各种驱动信号发生; 4)两个ADC配合MCPWM或者UTIMER的多段触发采样方式,比ST的电机方案更加实时和方便了; 5)在仿真调试方面,遇到了挺多的问题,而且似乎对于CMSIS-DAP仿真器的兼容不太友好; 6)对于电机参数配置和调试,希望厂家可以完善生态环境,让方案使用起来跟方便; 7)如果厂家可以推出基于GCC开源环境的相关库或提供源码,使用起来更加方便了。
|
感谢您在GCC开发环境的测评分享和建议。