使用HAL_I2C_Mem_Write/Read时,ZSC31050设备地址应如何填写?
ZSC31050 I2C地址计算与HAL函数调用验证
你的判断完全正确,具体推导和调用说明如下:
- ZSC31050的默认7位设备地址为
0x78,I2C协议要求将7位地址左移1位,把最低位预留为读写控制位(0对应写操作,1对应读操作)。 - 写操作(
HAL_I2C_Mem_Write()):左移后的地址为0x78 << 1 = 0xF0,最低位保持0,所以设备地址填0xF0。 - 读操作(
HAL_I2C_Mem_Read()):在左移地址基础上将最低位置1,即(0x78 << 1) | 0x01 = 0xF1,所以设备地址填0xF1。
以下是实际调用的代码示例(假设I2C句柄为&hi2c1,控制寄存器地址为0x01):
uint8_t write_data = 0x02; // 示例配置值 uint8_t read_data; // 写入控制寄存器 HAL_I2C_Mem_Write(&hi2c1, 0xF0, 0x01, I2C_MEMADD_SIZE_8BIT, &write_data, 1, HAL_MAX_DELAY); // 读取控制寄存器 HAL_I2C_Mem_Read(&hi2c1, 0xF1, 0x01, I2C_MEMADD_SIZE_8BIT, &read_data, 1, HAL_MAX_DELAY);
内容的提问来源于stack exchange,提问作者Mohsin Naik
相关产品推荐
相关产品推荐

