[iic]iic四参数函数设备地址,寄存器地址,数据内容,数据长度
你观察到的函数参数数量差异源于 I2C通信流程的差异。这两种函数设计对应了I2C协议的两种数据传输模式:
一、参数差异的本质原因
1. 四参数函数 qst_sw_readreg()
ret_i2c = qst_sw_readreg(g_qma6100p.slave<<1, reg_add, buf, num);
-
参数含义:
g_qma6100p.slave<<1
:I2C从机地址(左移1位后包含读写位)。reg_add
:寄存器地址(指定要读取的寄存器)。buf
:数据缓冲区(存储读取结果)。num
:读取字节数。
-
通信流程:
这是一个 复合操作,包含两个I2C事务:- 写寄存器地址:发送从机地址(写模式)+ 寄存器地址。
- 读数据:重新发送从机地址(读模式)+ 读取
num
字节数据。
[主机] → [从机地址(写), 寄存器地址] // 告诉从机"我要读这个寄存器" [主机] ← [从机地址(读), 数据[0], ...] // 读取数据