你好
我有
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 调用成功但数据没有收到任何东西。