
使用STM32G4C驱动一个三相BLDC电机,定时器TIM1时钟170MHz,更新频率20KHz,配置OC4为trigo信号触发ADC1,ADC时钟频率为 170/4 MHz进行三相电压采样,采样顺序为CH1,CH2,CH3,并通过DMA读取ADC数据。当三个通道的采样时间小于247.5周期时,ADC不能完好地跟踪BLDC的相电压,表现为采样数据波形与相电压波形不一致。但当设置第一顺位的通道的采样时间为247.5,其他两个通道设置为较小的采样时间,例如6.5周期,三个通道均可以完好的跟踪BLDC的相电压,更换通道采样顺序也会得到同样的结果。感觉就像ADC收到触发信号后,需要一段等待时间的样子,请问是什么原因? |
STM32G474 HRTIM Fault 中断的问题
boost电路程序控制
STM32G474RBT3 HRTIME 与 TIM 相位差。
STM32G474 BOOST电路双环PID的用法
STM32G474RET6移相问题
stm32G474 HRTimA和hrtimB给相同的比较值,但是TA正常,TB出现了丢波的情况
怎么用HRTIM输出可变占空比的PWM?
STM32G474使用HRTIME完成两路180度移相问题
STSPIN32G4的AN5432文档资料去哪里找?
LIS2MDL X轴数据读取问题
ADC与定时器初始化代码如下:
DMA1_Channel1->CPAR=(unsigned int)(&(ADC1->DR));
DMA1_Channel1->CMAR=(unsigned int)adcValue;
DMA1_Channel1->CNDTR=3;
DMA1_Channel1->CCR=1<<10|1<<8|1<<7|1<<5|2|1|3<<12;
DMA2_Channel1->CPAR=(unsigned int)(&(ADC2->DR));
DMA2_Channel1->CMAR=(unsigned int)adcValue2;
DMA2_Channel1->CNDTR=2;
DMA2_Channel1->CCR=1<<10|1<<8|1<<7|1<<5|2|1;
ADC1->CFGR|=1;
ADC2->CFGR|=1;
ADC1->CR|=1;
ADC2->CR|=1;
while((ADC1->ISR & 1) == 0)
{
}
while((ADC2->ISR & 1) == 0)
{
}
ADC2->CR|=4;
ADC1->CR|=4;
DAC1->CR|=1<<17|1<<1|1<<16|1;
//CH1 CH2 CH3 互补模式
TIM1->CR1=0;
TIM1->ARR=TIM1_period-1;
TIM1->BDTR=1<<15;// | 1<<13 | 1<<12;
TIM1->CR2=1|7<<4 | 7<<20;
TIM1->SR=0;
TIM1->DIER= 1;
TIM1->CCR1=0;
TIM1->CCR2=0;
TIM1->CCR3=0;
TIM1->CCR4= 100;
TIM1->CCMR2|=0x6800;
TIM1->EGR=1|1<<5;
TIM1->CR1= 1|1<<7;
以下为初始化配置: