在I2CSTA TXE位被清零,表示忙碌。
该I2CADR寄存器的内容被发送到EEPROM (前面开始条件在SDA ) 。
该I2CDAO寄存器的内容被发送到EEPROM ( EEPROM地址) 。
在I2CSTA TXE位被置位,并且将中断微控制器,指示该I2CDAO寄存器已
传输。
不产生停止条件。
EEPROM [低字节]
单片机写入EEPROM地址低字节到I2CDAO寄存器。
在I2CSTA TXE位被清零,表示忙碌。
该I2CDAO寄存器的内容被发送到设备( EEPROM地址) 。
在I2CSTA TXE位被置位,并且将中断微控制器,指示该I2CDAO寄存器已
传输。
这样就完成了
DUMMY
写操作。此时, EEPROM的地址被设置和MCU可以
执行单个或连续的读操作。
2.11.2当前地址读操作
一旦EEPROM地址被设定时,MCU可以读取通过执行以下步骤的单个字节:
1.该MCU设置I2CSTA [ SRD ] = 1 ,迫使我
2
C控制器生成I2CDAI后停止条件
寄存器接收。
2. MCU写器件地址( R / W位= 1)到I2CADR寄存器(读操作)。
3. MCU写一个空字节到I2CDAO寄存器中,开始对SDA线路的传输。
4. I2CSTA的RXF位被清零。
5. I2CADR寄存器的内容被传输到设备上,之前在SDA启动条件。
从EEPROM 6中的数据被锁存到I2CDAI寄存器(停止条件被发送) 。
7.在I2CSTA的RXF位被置位,并且将中断微控制器,指示该数据是可用的。
8. MCU读取I2CDAI寄存器。这将清除RXF位( I2CSTA [ RXF ] = 0 ) 。
2.11.3连续读操作
当EEPROM地址设置,MCU可以通过执行以下步骤执行顺序读操作
(注:这个例子说明了一个32字节连续读取) :
1.设备地址
在MCU设置I2CSTA [ SRD ] = 0。这防止了我
2
从生成后的一个停止条件C控制器
该I2CDAI寄存器接收。
MCU写器件地址( R / W位= 1)到I2CADR寄存器(读操作)。
MCU写一个空字节到I2CDAO寄存器中,开始对SDA线路的传输。
在I2CSTA的RXF位被清零。
该I2CADR寄存器的内容被发送到设备(前面一个起始条件在SDA ) 。
2. N字节读取( 31个字节)
从设备的数据被锁存到I2CDAI寄存器(停止状态,不发送) 。
226