作者:沉尸([email protected])
前言:
对于FOC控制来说,电流的检测是极其重要的一环,在哪个时间节点进行检测,然后计算放在哪里,这都是很关键的处理。
根据源代码“Board\v3\Src\adc.c”中的相关初始化代码,
然后结合用STM32CubeMX打开“Firmware\Board\v3\Odrive.ioc”进行查看,可以总结如下:
ADC1 |
ADC2 |
ADC3 |
功能描述 |
|||||||
能访问 |
规则式 |
注入式 |
能访问 |
规则式 |
注入式 |
能访问 |
规则式 |
注入式 |
||
PA4(CH4) |
M1 temperature |
|||||||||
PA5(CH5) |
Aux temperature |
|||||||||
PA6(CH6) |
VBus |
|||||||||
PC0(CH10) |
M0 Ib |
|||||||||
PC1(CH11) |
M0 Ic |
|||||||||
PC2(CH12) |
M1 Ic |
|||||||||
PC3(CH13) |
M1 Ib |
|||||||||
PC5(CH15) |
M0 temperature |
表1
绿色表示能被访问的通道;
蓝色表示规则式转换通道
棕色表示注入式转换通道
另外只有ADC1使用了DMA,使用的是“DMA2 Stream 0”
ADC转换时的触发方式:
规则组的触发方式和采样种类 |
注入组的触发方式和采样种类 |
|
ADC1 |
软件触发 |
TIM1_TRGO 上升沿 (Vbus) |
ADC2 |
TIM8_TRGO 上升沿 (M1 Ib) |
TIM1_TRGO 上升沿 (M0 Ib) |
ADC3 |
TIM8_TRGO 上升沿 (M1 Ic) |
TIM1_TRGO 上升沿 (M0 Ic) |
表2
查看文件:“Board\v3\Src\tim.c”中的“MX_TIM1_Init”和“MX_TIM8_Init”:
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
可知:
TIM1_TRGO 和TIM8_TRGO 都是“update”事件,也就是计数溢出更新事件。
更新事件这个脉冲宽度和“CK_PSC”一致
总结:
1)TIM1的更新事件会触发ADC1~ADC3的注入组自动采集,会采集出Vbus,M0电机的B相和C相的电压
2)TIM8的更新事件会触发ADC2和ADC3的规则组的自动采集,会采集出M1电机的B相和C相的电压
3)软件中没有单独针对TIM1的Update中断进行处理,只有TIM8的中断“TIM8_UP_TIM13_IRQHandler”,在里面将TIM1触发的注入组和TIM8触发的规则组采集出来的数据一起处理。