我用它读写24C512,STM32读不到ACK,而实测24C512的SDA已经是低电平了。
已经可以读写了
原来随手把24C512的I2C地址写成0x00,改成0xA0后就可以读写了。
但是又发现了一个新问题,单步一切OK,全速要在2次操作中间要插入一个延时才行,估计是停止位的问题,但不知如何使用ST的库来查询停止位是否发送完?
I2C_24CXX_Write(8, pDatW, 8);
for(i=0;i<0x1000000;i++)
{
i++;
}
I2C_24CXX_Read(4, pDatR, 8);
本来打算用SPI接口FLASH的
考虑到容量不是太大,速度要求不是特别高,而且EEPROM可以随机读写没有必需先擦后写的问题,所以就选择了I2C接口的24C512
倒塌了~~~24系列的EEPROM器件地址都是0xa0/0xa1~~~
俺还没玩到那一步~~~
相关链接:http://hotpower.2@1ic.org/user1/46/archives/2007/44469.html
Hot不是极端憎恨Delay函数吗?
“2次之间延时10mS左右应该没问题”,我觉得如果有可能,用查询方法比较好
不是停止位的问题
不是停止位的问题,好好看看EEPROM的手册,写数据要延时等待EEPROM device
把数据从缓冲写到EEPROM区.写数据后发停止位,然后发start 位,如果可以接收到ACK,就说明设备写完成.在手册里都有写的.
写完以后EEPROM就会自闭一段时间,一般是5ms以上
各位大牛估计都是玩os的……^_^