打印

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

[复制链接]
2329|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的山寨片很多,不信,降低速度,又正常工作了

使用特权

评论回复
5
香水城| | 2008-8-15 22:20 | 只看该作者

4楼能说说如何不可靠?

不要因为你自己的不会用而耽误了其他人。

使用特权

评论回复
6
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吗?

使用特权

评论回复
7
kq800| | 2008-8-16 11:22 | 只看该作者

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

https://bbs.21ic.com/club/bbs/bbsView.asp?boardid=49

使用特权

评论回复
8
kq800| | 2008-8-16 11:25 | 只看该作者

不好意思,链不过来

搜索24c02找就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝