原创 STM32 I2C使用

2009-12-26 14:22 6012 11 11 分类: MCU/ 嵌入式

    用了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了。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /3 下一条