ODrive0.5.5源码分析(1) ADC的处理

作者:沉尸([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触发的规则组采集出来的数据一起处理。

猜你喜欢

转载自blog.csdn.net/danger/article/details/128533298
ADC