[学习笔记]

【Autochips评测】二:Demo程序工作流程解析

[复制链接]
599|8
手机看帖
扫描二维码
随时随地手机跟帖
数码小叶|  楼主 | 2021-1-27 10:30 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2021-1-27 10:28 编辑

Autochips支持keil环境,那就简单了,直接从keil官网,下载支持包
Snipaste_2021-01-21_08-26-14.jpg
安装完就OK了,搞定了开发环境问题


打开一个例程,试着编译一下,顺利通过

Snipaste_2021-01-21_08-40-47.jpg

进入正题,打开自带的电机例程

Snipaste_2021-01-21_08-50-07.jpg


Snipaste_2021-01-21_08-49-28.jpg

在主程序里,首先是初始化延迟和调试的串口2,即获取us和ms标识
 s_facus = __SYSTEM_CLOCK / 1000000;
s_facms = s_facus * 1000;


然后读取电机模式,进入对应的驱动,通过上一篇的硬件电路分析
Snipaste_2021-01-21_10-28-01.jpg
分别由5脚的UART4_TX,6脚的UART4_RX,61脚的I2C2_SDA决定启用何种驱动
手册中只有4种模式

Snipaste_2021-01-21_10-49-54.jpg

程序里的电机种类比原理图中介绍的要多。。。,而且引脚标号也对不上。。
MOTOR_FOC_HALL_ENCODER,
MOTOR_BLDC_HALL,
MOTOR_BLDC_BEMF,
MOTOR_FOC_HALL,
MOTOR_FOC_SENSORLESS,
MOTOR_FOC_ENCODER,
MOTOR_VF_CONTROL,


进一步寻找,定位到函数GPIO_GetPinValue(uint32_t gpioNum)
int32_t GPIO_GetPinValue(uint32_t gpioNum)
{
    uint32_t tmpGPIOx = 0, tmpGPIOxPinNum = 0, tmpGPIOPinValue = 0;

    tmpGPIOx = gpioNum / GPIO_ONE_GROUP_NUM;                  // Calculate GPIO Group(A~E)
    tmpGPIOxPinNum = gpioNum % GPIO_ONE_GROUP_NUM;            // Calculate GPIO Group's Internal Pin Number(0~15)
通过这个计算想到了rtthread的引脚编号模式,果然,这个引脚号不是实际的芯片引脚号

main程序里通过一个switch语句,选择电机模式,这意味着在上电前要确认好跳线帽


Snipaste_2021-01-21_14-26-03.jpg

选择其中的一个带传感器的无刷电机驱动模块App_BLDC_Hall();
BLDC_GPIO_Initialize();
Motor_Encoder_Gpio_Init();
BLDC_TIM_Initialize();
BLDC_Parameters_Initialize();
BLDC_CTU_Init();
BLDC_ADC_Init();
首先是AC7811的GPIO口初始化,包括用到的PWM口,ADC口,霍尔传感器接口,电机调试PWM口(就是可用来作为 DAC 输出观察变量的PWM通道)。然后是定时器功能初始化,BLDC参数初始化,采集传输CTU模块,ADC模块初始化。

接着根据传感器是霍尔还是编码器进行对应的初始化

#if (defined BLDC_HALL)
        BLDC_Hall_PWDT_Initialize();
#elif (defined BLDC_ENCODER)
        ENCODER_SpeedParameter_Initialize();
初始化完成后就是PWM具体参数设置了

BLDC_PWM_Initialize();
PWM_ComplementaryModeConfig(PWM2, 0);
BLDC_DEBUG_Initialize();
最后就是实际的驱动应用程序了,一个大循环。里面加入了按键扫描,启动、停止、方向、速度控制。
Snipaste_2021-01-27_10-21-22.jpg

大循环里有个比较重要的标识,g_bldc1msTime,这个标识来源于TIMER2,1ms中断。
具体的电机控制操作,就在BldcHallMachine()和BldcEncoderMachine(),分为霍尔和编码器两个函数里了。按键扫面只是切换状态标识,实际改变是在这两个函数里。

使用特权

评论回复

相关帖子

yangjiaxu| | 2021-1-28 16:43 | 显示全部楼层
楼主讲的很详细,感谢分享 期待

使用特权

评论回复
七毛钱| | 2021-1-28 17:01 | 显示全部楼层
楼主讲的很详细,学习 期待

使用特权

评论回复
有何不可0365| | 2021-1-31 23:32 | 显示全部楼层
楼主讲的很详细,感谢分享 期待

使用特权

评论回复
有何不可0365| | 2021-1-31 23:33 | 显示全部楼层

使用特权

评论回复
18051358860| | 2021-2-4 22:46 | 显示全部楼层
我这个Demo跑不出来,电机不转呀,怎么回事,你跑了没

使用特权

评论回复
数码小叶|  楼主 | 2021-2-5 08:36 | 显示全部楼层
18051358860 发表于 2021-2-4 22:46
我这个Demo跑不出来,电机不转呀,怎么回事,你跑了没

我的电机还在路上

使用特权

评论回复
18051358860| | 2021-2-5 09:14 | 显示全部楼层
数码小叶 发表于 2021-2-5 08:36
我的电机还在路上

好吧

使用特权

评论回复
里面有晴雨| | 2021-2-5 09:19 | 显示全部楼层
期待有更好的作品出来,持续期待中

使用特权

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

本版积分规则

103

主题

2535

帖子

19

粉丝