【蓝桥杯单片机组】AT2C02 EEPROM

来源:互联网 发布:最新编程语言发展趋势 编辑:程序博客网 时间:2024/04/28 08:57

这个也是iic总线结构!

在此总结一下iic的程序结构

在同一个函数内读、写操作(以读eeprom为例)

(1)开启总线

(2)写地址字,等待回应(写命令)

(3)写要读的地址,等待回应

(4)再次开启总线

(5)写地址字,等待回应(读命令)

(6)读要读的地址

(7)发出回应

(8)结束总线

放上代码:

unsigned char read_eeprom(unsigned char add){ unsigned char dat; IIC_Start();//(1)开启总线 IIC_SendByte(SlaveAddrW);//(2)写地址字,等待回应(写命令) IIC_WaitAck(); IIC_SendByte(add); //(3)写要读的地址,等待回应 IIC_WaitAck(); IIC_Start();//(4)再次开启总线 IIC_SendByte(SlaveAddrR); //(5)写地址字,等待回应(读命令) IIC_WaitAck(); dat = IIC_RecByte();//(6)读要读的地址 IIC_Ack(0);//(7)发出回应 IIC_Stop(); //(8)结束总线 return dat;}



写eeprom的过程与PCF8591一样
void write_eeprom(unsigned char add,unsigned char dat){IIC_Start();IIC_SendByte(SlaveAddrW);//地址字IIC_WaitAck();IIC_SendByte(add); //传要写的地址IIC_WaitAck();IIC_SendByte(dat);   //要写的数字IIC_WaitAck();IIC_Stop();//结束somedelay(10);//适当延时}

现在总结一下I2C官方驱动中的坑:

(1)需要改延时为33个nop

(2)读数据后的主机发出的回应是ack(0)



0 0