用了STM32F103的I2C读写CAT1025的EEPROM,采用的是STM32给的固件例子,网上反映的问题也挺多的。说不好使,用了下,确实是它奶奶的郁闷。不过,也不是不能用。
首先,它给的例子肯定不好使,调了2天,现在稳定了,我每秒都读一次,跑了2天没死掉。
总结如下:
1,固件库我其实没怎么细看,都是基于测试的结果。
void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)
void I2C_EE_BufferRead(u8* pBuffer, u8 ReadAddr, u16 NumByteToRead)
这两个函数对CAT1025的读写只能在一个页内进行,不能跨页读写,跨页读写会自动翻滚。可能和CAT1025有关,CAT1025的每页是16个字节。比如写一串数,WriteAddr==10,NumByteToWrite==20,那么写10--16的是对的,16以后的就会翻滚到这个页的开始,会把这个页的前面的数据覆盖掉。
2,void I2C_EE_WaitEepromStandbyState(void)
这个函数最好在读和写之前都放一下,因为貌似I2C总线一旦忙了,就不能自己恢复,所以得等。
3,I2C_Speed 这个最好不要太快,400K就会不稳定。我的 I2C_Speed ==40K
当然了,我咨询了下STM32高手,人家说没遇到啥问题,可能也是我没功夫仔细研究这玩意了,好使了就OK了。
文章评论(0条评论)
登录后参与讨论