I2C does not work with SPI Slave mode on STM32L011
I want to use I2C at master mode, and SPI at slave mode.
After HAL_SPI_TransmitReceive_IT api is called, HAL_I2C_Master_Transmit api does not work on STM32L011K4T6.
Before HAL_SPI_TransmitReceive_IT api is called, HAL_I2C_Master_Transmit api does work normally.
For example, below code is not work. Hang up at HAL_I2C_Master_Transmit.
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 2, I2C_TIMEOUT);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 1, I2C_TIMEOUT);
HAL_I2C_Master_Receive(&hi2c1, I2C_SLV_ADDR, &data, 1, I2C_TIMEOUT);
printf("I2C READ 0x07 0x%02x\n", data);
HAL_SPI_TransmitReceive_IT(&hspi1, send_buffer, recv_buffer,
kSpiTransferSize);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 2, I2C_TIMEOUT);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 1, I2C_TIMEOUT);
HAL_I2C_Master_Receive(&hi2c1, I2C_SLV_ADDR, &data, 1, I2C_TIMEOUT);
printf("I2C READ 0x07 0x%02x\n", data);But, below is work normally.
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 2, I2C_TIMEOUT);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 1, I2C_TIMEOUT);
HAL_I2C_Master_Receive(&hi2c1, I2C_SLV_ADDR, &data, 1, I2C_TIMEOUT);
printf("I2C READ 0x07 0x%02x\n", data);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 2, I2C_TIMEOUT);
HAL_I2C_Master_Transmit(&hi2c1, I2C_SLV_ADDR, send_data, 1, I2C_TIMEOUT);
HAL_I2C_Master_Receive(&hi2c1, I2C_SLV_ADDR, &data, 1, I2C_TIMEOUT);
printf("I2C READ 0x07 0x%02x\n", data);I can't understand, why HAL_I2C_Master_Transmit does not work after HAL_SPI_TransmitReceive_IT.
Best Regards,