进入Cube设置 根据数据手册填入上升与下降沿时间,选择快速模式。
发送的函数使用
HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
其中hi2c为结构体,DevAddress为设备地址,*pData为所要发送的数据, Size为发送数据的大小,Timeout为操作超时时间
比如:
I2C_HandleTypeDef hi2c1;
data[3]={0x00,0x10,0x00}
HAL_I2C_Master_Transmit(&hi2c1, 0x20, &data[0],3, 1000 );
为0x20地址上发送数组data中三个数据。可以使用示波器看IIC_SCL与IIC_SDA上的数据。
使用的函数为
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)
其中hi2c为结构体,DevAddress为设备地址,MemAddress为所读取设备的数据保存的地址,MemAddSize为需要读取单数据的长度,*pData为读取数据被保存的地址, Size为读取数据的大小,Timeout为操作超时时间
比如:
HAL_I2C_Mem_Read( &hi2c1, 0x21, 0x08, I2C_MEMADD_SIZE_8BIT, &Receivedata[0], 2, 1000 );
上面函数分析:0x21为读取的命令,0x80为读取设备保存数据的地址,I2C_MEMADD_SIZE_8BIT为单字节读取,Receivedata为读取数据保存的数据,2位读取两个字节的数据。