看看大家有没有遇到I2C的这个问题

[复制链接]
3138|7
 楼主| 三井寿 发表于 2008-8-15 12:13 | 显示全部楼层 |阅读模式
使用固件库自带的例程libraryFWLibexamplesI2CM24C08_EEPROMi2c_ee.c文件编写24LC02代码:
系统时钟:72M, PCK1时钟:36M, I2C时钟:100K

  I2C_EE_Init();  

  I2C_EE_BufferWrite(Tx1_Buffer, EEPROM_WriteAddress1, BufferSize1); 

   LCD_PutString(0,32,(char *)Tx1_Buffer,Cyan,Blue);


  I2C_EE_BufferRead(Rx1_Buffer, EEPROM_ReadAddress1, BufferSize1); 

  LCD_PutString(0,40,(char *)Rx1_Buffer,Cyan,Blue);

运行就死机
如果改成:
  I2C_EE_BufferWrite(Tx1_Buffer, EEPROM_WriteAddress1, BufferSize1); 
  I2C_EE_BufferRead(Rx1_Buffer, EEPROM_ReadAddress1, BufferSize1); 
运行成功,但是在实际使用过程中不可能中间没有语句呀。

继续修改,如果把I2C的频率改为500K~900K就运行正常,

各位帮忙看看,谢谢了
ijk 发表于 2008-8-15 16:57 | 显示全部楼层

把I2C的频率改为500K~900K

  把I2C的频率改为500K~900K? STM32的I2C最高只支持400k吧
kq800 发表于 2008-8-15 21:57 | 显示全部楼层

e2prom读写最好不要用i2c

我遇到stm32 i2c非常不可靠,还是软件吧.
McuPlayer 发表于 2008-8-15 22:19 | 显示全部楼层

24的山寨片很多,不信,降低速度,又正常工作了

香水城 发表于 2008-8-15 22:20 | 显示全部楼层

4楼能说说如何不可靠?

不要因为你自己的不会用而耽误了其他人。
kq800 发表于 2008-8-16 11:14 | 显示全部楼层

我不会吗?可能没时间自己完全编写库文件,但是事实就是如此

没有采用stm32的i2c,有两个可能性,所以最好不要用stm32的i2c读取24c之类的芯片.第一个就是24c系列在读取过程中,例如SDA输出0时,stm32由于多种原因中断退出,致使SDA始终为0而且24c不会释放SDA,这样stm32复位再启动BUSY一直有效,接下来stm32的i2c就不会工作了.第二个就是stm32的i2c例程和库都只是示例,不能实用.例如示例是去比较EV5,EV8之类的信号,我看了stm32的库文件就是简单的把SR1,SR2读出然后和定义的EV条件比较,只要不等就死.而SR1,SR2表示的状态很全面,例如在EV5时BTF标志有效,那就要死机.所以有以上两种问题我就干脆放弃了,软件构成读写24c很可靠,毕竟是做产品还是可靠为第一.
6楼你能保证SDA没可能为0吗?
kq800 发表于 2008-8-16 11:22 | 显示全部楼层

给个链接,好像有人也遇到过.

https://bbs.21ic.com/club/bbs/bbsView.asp?boardid=49
kq800 发表于 2008-8-16 11:25 | 显示全部楼层

不好意思,链不过来

搜索24c02找就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部