[STM32F042] I2C slave receive only address
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2015-10-19 4:48 AM
Posted on October 19, 2015 at 13:48
Hi,
for last three days I try to communicate with my STM32F042 (working in slave mode) but it doesn't work correctly. There is no data in RXDR and busy flag is set after correct receive of address (ADDCODE flag is set after master try to write data do slave). So if address is received correctly it looks like communication interface works almost correctly (pullup, gpio settings etc.)Code was generated by ST32CubeMX as follows:void MX_I2C1_Init(void){ hi2c1.Instance = I2C1; hi2c1.Init.Timing = 0x00B0DBFF; hi2c1.Init.OwnAddress1 = 40; 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_DISABLED);}void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c){ GPIO_InitTypeDef GPIO_InitStruct; if(hi2c->Instance==I2C1) { /* USER CODE BEGIN I2C1_MspInit 0 */ /* USER CODE END I2C1_MspInit 0 */ /**I2C1 GPIO Configuration PA9 ------> I2C1_SCL PA10 ------> I2C1_SDA */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Peripheral clock enable */ __I2C1_CLK_ENABLE(); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(I2C1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(I2C1_IRQn); /* USER CODE BEGIN I2C1_MspInit 1 */ /* USER CODE END I2C1_MspInit 1 */ } #slave #i2c #hal #stm32f0
Labels:
- Labels:
-
I2C
-
STM32Cube MCU Packages
-
STM32F0 Series
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2016-07-15 9:29 AM
Posted on July 15, 2016 at 18:29
Hi PatLas,
Try to share the code of you main() to be able to help you on this. It is maybe related to the I2C receive routine implimented there. -Hannibal-