第一步需要初始化IIC的结构体配置
第二步依照IIC协议和EEPROM的时序图进行编写相应的函数
第三步写入单字节、写入多字节,读出多字节,需要注意判断条件
写入字节时:是发完数据再产生EV8中断现象,且写入字节时顺序较为简单为:
起始信号(判断EV5)->写入七位地址(加写入写出位判断EV6)->发送数据(此时数据为寄存器的地址判断EV8)->
(多字节写入的话写一个循环,指针地址加,写入字节数量减少)->停止信号
读出字节时:它相对于写入来说就会复杂一点为:
起始信号(判断EV5)->写入七位地址(加写入写出位判断EV6,此时方向为写)->发送数据(此时数据为寄存器的地址判断EV8)->
第二次起始信号(判断EV5)->写入七位地址(加写入写出位判断EV6,此时方向为读)->读数据(此时可以使用循环连续读取数据
,判断EV7,需要注意最后一个数据读完之后要给一个非应答信号(可以使用if判断需要读取的数量时候到了最后一位,非应答
信号就是关闭应答信号),读取时也应将数据指针自增,读取数量自减)->停止信号->使能应答信号以便后续使用
等待时序完成信号是比较软件特殊之处:
由do while()组成判断条件是:ADDR位为1,
起始信号(需要用SB位来判断是否为1)->写入七位地址(此条件为do while的判断语句,起始信号也包含其中,此时方向为写)->
结束信号
(此函数需要放在写入字节之后调用)