GTM4.1-SPE
一、简介
SPE——Sensor Pattern Evaluation ,主要是用来检测霍尔电流从而控制无刷电机。输入使用TIM模块,输出使用TOM模块,中间可以通过MAP给DPLL计算角速度。
简图如下,为了尽快的研究明白就放弃了DPLL相关的部分。
通过图可以看到两个TIM模块是一组,以TIM0/1为例可以使用ch0、1、2或3、4、5进行采集,送到SPE0/1,TIM1的ch6、7进行作为快速关断信号,可通过对应通道的电平进行模块输出关断。SPE最终通过TOM进行输出。
二、SPE的工作模式与细节
1、采集霍尔的方向或角度
SPE可以通过采集霍尔的电平获得对应的角度信息,见下图,最里面是x相,最外侧是z相。
6个角度,分别是100 − 110 − 010 − 011 − 001 − 101 − 100。当采集的角度变化后,SPE会控制输出模块连接到对应的TOM上。
2、连接简图
注意:可以同时插入死区使用的有TOM的ch2、6、7、8、9。
SPE与TOM某块的连接如下图:
首先左侧中间TIM信号可以选择使用TIM0或者TIM1,FSOI是快速关断信号;
SPE_DIR表示方向,即正反转;
SPE_NIPD表示三相霍尔角度发生变化;
SPE_NIPD_NUM表示变化计数;
右侧的TOM0和TOM1都可以把其SCOUR信号输出到SPE,主要是用于连接到SPE_OUT上,当然最终SPE_OUT也会反馈到对应的控制TOM上;
TOM_CH_TRIG_CCU可用来更新触发SPE的相关信号;
SPE_OUT当然可以连接到任意的TOM通道上,用于输出;
SPE_NIPD也是用于触发连接到TOM上,TOM综合其他的信号进行一些周期、占空比调整;需要查看一下TOM寄存器
3、SPE内部结构
把这张图搞清楚后,SPE就基本弄懂了。下面来详细讲解各个部分。
1)左上
SPE的输入可以有几组TIM信号,通过TIM_SEL进行选择,分别可以选择TIM0\1\2\3\4\5的ch0~2或3~5;
TIM采集的信号会传入到NIP中,NIP表示最新采集的数据,AIP表示当前的数据,PIP表示之前的数据。当采集到新数据时,NIP会传给AIP,AIP会把之前的数据传输给PIP;当出现了NIP=PIP时,认为转动方向发生了变化;
2)左中、下
SPE_PAT表示采集到霍尔的电压值/电平值,一共8组,最下面的两组无效。其中每组占用4bit,前3bit表示霍尔的电平,最后一个表示此PAT是否有效;
DIR表示方向,SPE_PAT_PTR和SPE_PAT_PTR_BWD是两组指针,分别用于指示SPE_OUT_PAT。这两组指针分别根据DIR的值在霍尔电平发生变化时更新;DIR的方向可以通过CMD对应的寄存器进行切换,切换时ch2、6、7、8、9可以插入对应的死区;
3)中部
SPE_NIPD在SPE_PAT变化时会根据DIR进行±1操作,SPE_REV_CNT可以为其进行计数,并有SPE_REV_CMP进行比较,当与比较值匹配时可产生中断;
SPE_OUT_PATx中存放的是控制消息,用于输出给SPE_OUT_CTRL,进而利用其对应的寄存器设置值控制把TOM[i]_CH0、TOM[i]_CH1、0、1的信号传输给SPE_OUT;
SPE_PAT_PTR和SPE_PAT_PTR_BWD是指向SPE_OUT_PATx的正反两个指针,可以使用CTRL_CMD控制使用哪个指针去选择对应的SPE_OUT_PATx进行传输;
SPE_NIPD如上;
SPE_NIPD_NUM用于记录变化次数;
SPE_DIR用于记录方向;
4)右下
TRIG_SEL和ETRIG_SEL用于选择使用哪个trig信号进行SPE_OUT的信号更新,trig信号包括SPE_NIPD、TOM_CH0_TRIG_CCU0/1、TOM_CH2\6\7\8\9_TRIG_CCU1;
中间有一个寄存器设置的控制信号SPE_UPD_TRIG,用于开启trig,如果不开启SPE_OUT_CTRL就会一直不变;
5)右中、上
SPE_OUT_PATx经过层层trig选择,最中到达了SPE_OUT的输入选择器,但仍有一信号与其竞争,就是FSOL,这是一个寄存器设置的快速关断信号,1表示关断;
选择器连接着右上角的另外一个选择器,其由FSOM控制,FSOM是快速关断使能信号,他可以配置是否开启这个快速关断的功能。
最后,信号输出到了SPE_OUT。
总结:
1)TIM采集三相霍尔的信号放到SPE_PAT中,根据采集的PAT信号并结合DIR调整SPE_PAT_PTR和SPE_PAT_PTR_BWD两个指针,通过CTRL_CMD选择一个指针,根据指针选择不同的SPE_OUT_PATx;
2)通过TRIG\ETRIG_SEL来选择触发SPE_OUT_PATx传输到SPE_OUT中的触发源。触发源可以是TOM的CCU trig信号,也可以是SPE_NIPD(霍尔电平变化检测器)。当然除了选择触发源外,还有一个SPE_UPD_TRIG的开关,用于开启触发功能;
3)SPE_OUT_PATx内存放了8组数据,用于选择8组SPE_OUT的信号源,分别是TOM_CH0、TOM_CH1、0和1;
4)在SPE_OUT输出前,有快速关断功能,FSOM是使能信号,FSOL是软件启动快速关断;
5)此外,SPE_REV_CTN是24bit计数器,根据DIR方向在产生SPE_NIPD时进行±1操作,SPE_REV_CMP可设置比较值,当匹配时可产生中断;
6)注意,NIP\AIP\PIP三个存放APT指令的寄存器也可用于判断抖动,比如当NIP=PIP表示了方向变化,如果再次出现即表示抖动;
4、SPE中断
SPE有以下中断,为测试方便,SPE模块有强制产生中断的模式,用于产生对应的中断。
flag | 示意 |
---|---|
SPE_NIPD | 霍尔输入变化标志 |
SPE_DCHG | SPE的方向发生变化标志 |
SPE_PERR | 错误或者无效的SPE标志 |
SPE_BIS | 抖动 |
SPE_RCMP | SPE的计数器达到比较值 |
中断还是GTM得老路子,分为四种,分别是电平模式、脉冲模式、脉冲通知模式、单次脉冲模式;
三、TOM模块需要的配置
1、TOM[i]_CH[x]_CTRL.SPEM
开启后TOM就被SPE_OUT控制;
2、TOM[i]_CH[x]_CTRL.SPE_TRIG
用来选择TOM_CH_OUT的输入源和复位源,寄存器写的有些乱,没看太懂,需要具体测试;
3、TOM[i]_CH[x]_CTRL.OSM
打开one-shot模式,CM0是周期值,从写入访问CN0启动;
四、其他
1)可以通过查阅寄存器判断霍尔是否损坏(忘记哪个);
2)客户通过SPE[i]_CTRL_STAT.SIE[k]关闭单个输入;
3)看TIM章节,认为TIM_CHx(48)就是TIM的F_OUT,即经过滤波后的电平信号,与DTM使用章节相同;