Spec:
Read:
./i2c_read_write -b 0 -a 0xd0 -f A8D8 -r 0x75
Reg value: 0x68
上图是往7bit slave addr为0x68(write addr 0xD0)的设备读取reg 0x75 值的波形。需要注意的地方如下:
1. scl & sda在空闲没有设备控制时的默认状态是high;
2. 在传输数据的过程中,只有scl为低时,sda的状态才能发生改变,否则就是发送start或者是stop信号。start:scl high & sda low,end:scl high & sda high;
3. 传输数据时,scl为high,sda数据有效;
4. 读写标志位,读为1,写为0;
5. 握手ack/nak信号,都是发送设备数据发送完成后,释放sda控制权等接收设备拉低sda,然后将scl拉高确认sda是否为low看握手是否成功。ack:slave向master发送应答信号,nak:master向slave发送应答信号;
write:
./i2c_read_write -b 0 -a 0xd0 -f A8D8 -w 0x6b 0
上图是往7bit slave addr为0x68的设备,reg 0x6b写入0的波形