SPI read inside TIM1 Update interrupt freeze
Hello all,
i have a aplication for a 3 phase motor, where i have 3 sensors read via SPI.
The microcontroler is a stm32F427 device
I am using timer1 for 6 pwm output, and the timer in countin mode TIM_CounterMode_CenterAligned3
So i am expecting a update event on the middle of the 'ON period', till here everything works as expected.
I am using two main IRQ handlers, one is timer2 where i setup the timer1 outputs ( acording to HALL inputs on TIM2 and XORED)
And the other IRQ handler is TIM1 Update handler
My problem is that if i have SPI read inside the timer1 update handler, the microcontroler wont start the motor.
If i dont have spi code, everything works. Why?
What is even courious, that i have SPI activiti which seems ok ( seen with a logic analyzer)... I
void TIM1_UP_TIM10_IRQHandler(void){
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM1, TIM_IT_Update);// Read Phase current U
GPIOE->BSRRH = GPIO_Pin_10; // set Chip select 3 Low SPI1->DR = 0x00;/// write dummy data to trigger clock while( !(SPI1->SR & SPI_I2S_FLAG_TXE) ); // wait until transmit complete while( !(SPI1->SR & SPI_I2S_FLAG_RXNE) ); // wait until receive complete while( SPI1->SR & SPI_I2S_FLAG_BSY ); // wait until SPI is not busy anymore current[0] =SPI1->DR; // return received data from SPI data register GPIOE->BSRRL = GPIO_Pin_10; //set Chip select 3
High}
}