
使用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收到触发信号后,需要一段等待时间的样子,请问是什么原因? |
LIS2MDL X轴数据读取问题
motor profiler参数识别卡在7%是什么原因啊,电机只响不动,手动旋转有阻力,顿感
STEVAL-PTOOL4A开发板资料求助
STSPIN32G4的AN5432文档资料去哪里找?
开发逆变器进行STM32学习,路径如何规划?
STM32G474如何实现Buck变换器的COT控制模式
关于使用cubemx配置stm32g473re的opamp工作模式:Programmable gain amplifier mode with external filtering
++和--运算时数据在正数时计算是正确的,负数时有时候会溜掉计数。
stm32G4的SPI通信问题
关于STM32G474 双BANK的测试问题
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;
以下为初始化配置: