cancel
Showing results for 
Search instead for 
Did you mean: 

I2c issue with STM32F030

dbhavnagari
Associate
Posted on January 07, 2016 at 23:47

Hi I am trying to use the I2c module but I run into an issue wherein the TXIS flag check fails. The thing is I don't even see the start or address getting transmitted. I am trying to get one master/ slave connection to work. I use the cube to create an initial project in keil and the do an I2C transmit.

int main(void)
{
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
uint8_t data[] = {10, 170, 25, 7, 150, 87, 23}; 
int ret_value = 0;
while (1)
{
ret_value = (int)HAL_I2C_Master_Transmit(&hi2c1, 0, data, 6, 10);
}
}

And the I2C init code is

void MX_I2C1_Init(void)
{
hi2c1.Instance = I2C1;
hi2c1.Init.Timing = 0x2000090E;
hi2c1.Init.OwnAddress1 = 1;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
HAL_I2C_Init(&hi2c1);
/**Configure Analogue filter 
*/
HAL_I2CEx_AnalogFilter_Config(&hi2c1, I2C_ANALOGFILTER_ENABLED);
}

Finally with I2C transmit if fails at

if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout) != HAL_OK)
{
if(hi2c->ErrorCode == HAL_I2C_ERROR_AF)
{
return HAL_ERROR;
}
else
{
return HAL_TIMEOUT;
}
}

#stm32 #i2c #stm32-i2c-master
1 REPLY 1
Amel NASRI
ST Employee
Posted on January 25, 2016 at 17:04

Hello dbb,

What are the error flags set on the I2C status register?

-Mayla-

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.