I2C通信 读写数据过程

在通信之初,主从机必须根据自己的要求约定好通信规则:command的定义和位置、address的位数和位置。

以读写从机寄存器数据为例:

假设从机寄存器地址为8位、从机寄存器也位8位(被读取数据为8位);

约定读command为0x01,写command位0x02;

约定主机发起通信后,第一个slave address字节收到ack后,紧跟的一个字节为command,再下面一个字节为address。

1. 读寄存器数据步骤:

    1.1 主机先发起一次通信,将读command(0x01)和需要读取的寄存器地址address写入从机;(主机发出写操作)

    1.2 从机firmware的处理:

          1.2.1 将command和address分别提取出来;

          1.2.2 判断command的含义(本例中,是读指令还是写指令);

          1.2.3 根据收到的的address,将对应寄存器的的数据放入从机I2C输出buffer;(这个步骤可以使用指针)

    1.3 主机再次发起一次通信,读取从机的数据;(主机发出读操作)

2. 写操作步骤:

    2.1 主机发起通信,按约定依次写入command、要写入的从机寄存器地址address和要写入的数据data;

    2.2 从机firmware要做的处理:

          2.2.1 分别提取command、address和data;

          2.2.2 根据command做出判断(本例中则判断是写入还是读取);

          2.2.3 将data写入与接收到的address对应的寄存器。(这个步骤可以使用指针)。


--------------------- 
作者:Phenixyf 
来源:CSDN 
原文:https://blog.csdn.net/phenixyf/article/details/17846969 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(I2C通信 读写数据过程)