stm32f4xx_hal_i2c.c文件:
1、HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout) // Checks if target device is ready for communication.
eg:
status=HAL_I2C_IsDeviceReady(&hi2c1, ADDRESS_W, 10, HAL_MAX_DELAY);
2、HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c) //Return the I2C handle state. 总线工作状态
eg:
flag=HAL_I2C_GetState(&hi2c1);
3、HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) //Write an amount of data in blocking mode to a specific memory address
eg:
HAL_I2C_Mem_Write(&hi2c1, ADDRESS_W, MPU_PWR_MGMT1_REG, 1, &pdata, 1, HAL_MAX_DELAY);
4、HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) // Read an amount of data in blocking mode from a specific memory address MemAddSize 只能填1or2,代表8位或者16位,size代表uint16_t。
eg:
HAL_I2C_Mem_Read(&hi2c1, ADDRESS_R, MPU_DEVICE_ID_REG, 1, &pdata, 1, HAL_MAX_DELAY);
#define I2C_MEMADD_SIZE_8BIT 0x00000001U ,上边的1代表的是8bit。
#define I2C_MEMADD_SIZE_16BIT 0x00000010U