这边文章写的很好,特别是最后面用gpio模拟i2c的代码,基本可以使用,但是在连续写入多个字节的函数中,还有些问题
uint8_t ee_WriteBytes(uint8_t *_pWriteBuf, uint16_t _usAddress, uint16_t _usSize){
uint16_t i,m;
uint16_t addr;
addr=_usAddress;
for(i=0;i<_usSize;i++)
{
//当第一次或者地址对齐到8就要重新发起起始信号和EEPROM地址
//为了解决8地址对齐问题
if(i==0 || (addr % EEPROM_PAGE_SIZE)==0 )
{
//重点,重点+++++++++++++++++,这里要加上如下代码:
if(i!=0){
i2c_stop();//这里一定要给停止位,才能在写入一页(16个字节)后继续写入。
}
//循环发送起始信号和EEPROM地址的原因是为了等待上一次写入的一页数据\
写入完成
for(m=0;m<1000;m++)
{