源码如下。
个人总结:
1.I2DR寄存器的读
I2DR寄存器的读操作如下,它与while(size--)中的size无联系,让我一开始觉得I2DR里面的数据就是不变的嘛!
*buf++ = base->I2DR;//I2C读数据
后来我查看了I.MX6ULL里面这样描述I2C的I2DR寄存器:“reading the dataregister allows a read to occur and initiates the next byte to be received”。单从这句可得出,读取I2DR寄存器的行为,不仅仅只是做了“读取数据”的行为,它还更新了I2DR寄存器存储的数据,这个数据就是接收的下一个字节。
2.