I2C - 什么是虚拟读取

时间:2018-03-11 10:41:51

标签: c embedded i2c

如标题所述,我的问题是:i2c协议中的“虚拟读取”是什么?

我正在编写一段代码来控制SH1106 OLED显示屏。 datasheet解释了如何读取本段(第29页)中显示控制器的RAM:

  
      
  1. 读取显示数据
      从列地址和页面指定的显示RAM区域读取8位数据   地址。由于列地址在每次写入后自动递增1,   微处理器可以继续读取多个字的数据。 一个假人   在设置列地址后立即需要读取 [bold mine]。参考   有关详细信息,请参见功能说明的RAM部分。请注意,没有显示   数据可以通过串行接口读取。
  2.   

粗体句是什么意思?

1 个答案:

答案 0 :(得分:0)

该读取不是I2C总线的真实读取,而是读取IIC块中的IICD寄存器。它不会出现在总线或任何I2C规范中,因为它是I2C硬件模块的内部设计。

I2C硬件模块包括一个状态机,每次写入或读取IICD寄存器时,该状态机将在总线上执行IIC字节传输。当I2C地址值写入IICD寄存器时,将发送第一个字节(I2C器件地址)。一旦写出来,它就需要Dummy Read来启动下一个字节的传输。请注意,它是虚拟读取,因为IICD寄存器中没有实际数据,因为硬件实际上没有完成传输。