STM32F4 I2c1 and USART1 (and USART6) conflict
I have an STM32F446RE Nucleo board.
I am using I2C1 in interrupt (not DMA) mode, to continuously read data from an MPU9250 accelerometer/magnetometer/gyroscope board. I also use the USART1 to read logs with my laptop (using FTDI adapter) and to write some text commands to the STM32, that I read in a DMA mode.
The problem is that, occasionally, after I write into usart1 from a pc, a function HAL_I2C_Mem_Read_IT, that is supposed to read data from the MPU9250, returns error HAL_TIMEOUT. This doesn't happen always, in fact, this is a rare event. But I can't figure out why that might happen, how are I2C and USART related?
After I checked in CubeMX, USART1 pins, that I use, can be assigned to I2C1 as well (although they are assigned to USART1, and I2C1 uses different pair of pins). Just to be safe, I tried to use USART6 instead of USART1. And after a couple of tens of 'commands' that I sent via USART from my PC, I got this error HAL_TIMEOUT once again.
Why might that happen?
Thanks for your replies!
#stm32-stm32f4 #hal #i2c-and-uart