|
使用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收到触发信号后,需要一段等待时间的样子,请问是什么原因? |
STSPIN32G4 STM32G431VBTx CAN FIFO发送数据帧随机变远程帧
STM32G473,PA3导致定时器定时误差过大
请问 使用MC SDK6.4版本,芯片选的时STM32G431CBUx系列,再配置电流采样时候,选择片内运放,外部增益网络,为啥会报错呀
求simulink开发STM32的支持包离线版本
stm32 can偶现导致其他设备发送数据异常
MCSDK6.4开环能转,速度环一动不动
用mcsdk6.4工具使用ElectronicSpeedControl_ESC-G4生成的代码编译没错误但是开机就卡死怎么解决?
FDCAN复用在了BOOT0上了,会不会有影响
CUBEMX配置G474串口DMA传输,为什么接收正常发送不了?
有没有人搞过单极倍频的SPWM
微信公众号
手机版
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;
以下为初始化配置: