电机控制——底软需求

2023-12-25 09:41:49

PWM

电机控制输出六路PWM,可分为ABC三相,每相包含上桥和下桥两路,上下桥不可同时打开。
配置的时候,六路PWM要设置为居中对齐模式,正好可以实现PMSM七段式控制法。
配置一路PWM作为基准,六路PWM都引用该基准:
在这里插入图片描述
同一相的两路PWM极性相异:
在这里插入图片描述
在这里插入图片描述
使用GTM中的TOM通道触发PWM,GTM模块的主时钟为100M,PWM所引用的TOM通道时钟分频系数为1,即该通道的时钟也为100M。
在这里插入图片描述
*GTM时钟选择:
在这里插入图片描述
上面五个选项分别对应下面五个分频系数:
在这里插入图片描述
基准PWM通道的周期设置为5000,单位是多少个Tick,因为时钟频率是100M,所以PWM的频率是100M/5000 = 20K。
在这里插入图片描述

ADC

电流、角度放在同一组内同时进行采样。使用同步采样,ADC0作为Master,ADC1作为Slave,一组包含4路AD。
在这里插入图片描述
在这里插入图片描述
ADC0中的每个通道都要启用同步采样:
在这里插入图片描述
ADC0组的触发方式采用硬件触发,使用上面配置的PWM参考通道所引用的TOM通道触发,即每个PWM周期中间位置会触发一次ADC采样。采样完成后会触发ADC中断,中断中会同步更新ADC0的buffer数据和ADC1的buffer数据。中断中调用Callback,在Callback中调用FOC算法。ADC中断设置为最高优先级。

TC234实测:
开始采样到ADC中断触发:1.8us
中断触发到Callback被触发约:6us

TC2XX系列单片机ADC软硬件触发方式同时使用时,软件触发会无效,问题解决方法如下:

  1. MCAL中AdcPriorityImplementation选择ADC_PRIORITY_HW
    在这里插入图片描述
    这样修改后软件触发可以正常触发,但会打断硬件触发,调试代码发现,软件触发和硬件触发使用的是同一个触发源RS0,配置如下图。程序运行时触发源会被装入G0QINR0寄存器,在只存在硬件触发方式的时候,G0QINR0会自动Refill,但如果插入了一个软件触发,Refill会被打断,从而中断硬件触发。有两种解决方法,一是在软件触发采样完成后重新开始硬件触发,但这样可能会导致某次硬件触发被漏掉。二是软硬件触发使用不同的触发源。
    在这里插入图片描述
    这里采用第二种方法,将软件触发的ADC组的触发源都改成RS3:
    在这里插入图片描述
    要注意的是使用RS3的话下面这个地方要改一下:
    在这里插入图片描述
    然后配置RS3的中断,RS3的中断与CG0SR1共用一个中断处理函数,配置方法如下:

在这里插入图片描述

DMA

ADC中断处理方式配置为DMA,中断优先级就是DMA的通道,电流采样配置为最大DMA通道。
DMA最大通道最先被触发,然后以菊花链方式依次触发接下来的几个配置为菊花链的通道,直到某个通道没有被配置为菊花链,则会触发一个中断。该DMA中断配置为最高优先级。

预驱

预驱的主要功能:
死区控制、电流采样、故障检测

文章来源:https://blog.csdn.net/weixin_42967006/article/details/134710184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。