ST意法半导体
直播中

世态薄凉

8年用户 1132经验值
私信 关注
[问答]

stm32f107vct6如何使用I2C发送和接收数据?

你好
我有 STM32f107vct6 并且我想将数据从主机发送到从机 I2C 协议。我写了一些代码但是没有用。
你有完整的 i2c 示例吗?
这是我的代码
掌握:
  • while(1){
  •         while(!__HAL_I2C_GET_FLAG(&hi2c1,I2C_FLAG_BUSY))
  •                         HAL_I2C_Master_Transmit(&hi2c1, 0x80, buffer,20, 10);
  •                 HAL_Delay(500);
  • }
奴隶:
  •          hi2c1.Instance = I2C1;
  •   hi2c1.Init.ClockSpeed = 400000;
  •   hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
  •   hi2c1.Init.OwnAddress1 = 0x80;
  •   hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  •   hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  •   hi2c1.Init.OwnAddress2 = 0;
  •   hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  •   hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  •   if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  •         HAL_I2C_EnableListen_IT(&hi2c1);
  • void I2C1_EV_IRQHandler(void)
  • {
  •   /* USER CODE BEGIN I2C1_EV_IRQn 0 */
  •                 HAL_I2C_Slave_Receive(&hi2c1,buffer,20,10000);
  •   /* USER CODE END I2C1_EV_IRQn 0 */
  •   HAL_I2C_EV_IRQHandler(&hi2c1);
  •   /* USER CODE BEGIN I2C1_EV_IRQn 1 */
  •   /* USER CODE END I2C1_EV_IRQn 1 */
  • }

在我的代码 I2C1_EV_IRQHandler 调用成功但数据没有收到任何东西。







更多回帖

发帖
×
20
完善资料,
赚取积分