在进行数据传输时,读写控制器首先产生一个启动信号(当SCL为高电平时,SDA由高变为低),接着发送控制字(即I2C总线器件的特征编码和3 bit EEPROM的芯片地址)以及写状态R/W位为0到总线上。这里的总线器件特征码为1010,而3 bit EEPROM的芯片地址为000。接着主控制器释放总线,等待EEPROM发出的应答信号,由于采用的EEPROM型号是24LC64,因此在控制器收到应答后,将首先发送EEPROM高字节的存储单元地址,当控制器再次收到应答后继续发送EEPROM低字节的存储单元地址,当控制器再次收到应答后,判断是读还是写,如果是写操作,则控制器发送数据字节,并把数据写入被寻址的存储单元,EEPROM再次发送应答信号,读写控制器收到应答信号后,产生停止信号。如果之前判断出是读操作,则控制器会在收到应答后产生一个重复起始条件,紧接着写入读控制字10100001,这里的最后一位1表示读操作,前面的1010000和之前说的一样,是器件特征编码1010和3 bit EEPROM芯片地址000。当控制器再次收到应答后会产生一个释放总线的动作,把总线留给EEPROM,控制器负责接收EEPROM发出的数据。当控制器接收完数据后会占用总线,并发出一个非应答信号,表示数据收到,最后控制器再产生停止信号,停止本次传输。模块的主状态机如图1所示。