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
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)
// 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 =SPI1->DR; // return received data from SPI data register
GPIOE->BSRRL = GPIO_Pin_10; // set Chip select 3High