×
嵌入式 > 技术百科 > 详情

【蓝桥杯单片机组】AT2C02 EEPROM

发布时间:2024-05-03 发布时间:
|

这个也是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)


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端