STM32的I2C接口谁用过了【已解决】

[复制链接]
5561|8
 楼主| McuPlayer 发表于 2007-12-29 17:51 | 显示全部楼层 |阅读模式
我用它读写24C512,STM32读不到ACK,而实测24C512的SDA已经是低电平了。
 楼主| McuPlayer 发表于 2007-12-30 12:21 | 显示全部楼层

已经可以读写了

原来随手把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);
 楼主| McuPlayer 发表于 2007-12-30 12:28 | 显示全部楼层

本来打算用SPI接口FLASH的

考虑到容量不是太大,速度要求不是特别高,而且EEPROM可以随机读写没有必需先擦后写的问题,所以就选择了I2C接口的24C512
hotpower 发表于 2007-12-30 12:51 | 显示全部楼层

倒塌了~~~24系列的EEPROM器件地址都是0xa0/0xa1~~~

俺还没玩到那一步~~~
相关链接:http://hotpower.21ic.org/user1/46/archives/2007/44469.html
hotpower 发表于 2007-12-30 13:05 | 显示全部楼层

2次之间延时10mS左右应该没问题

 楼主| McuPlayer 发表于 2008-1-2 03:23 | 显示全部楼层

Hot不是极端憎恨Delay函数吗?

“2次之间延时10mS左右应该没问题”,我觉得如果有可能,用查询方法比较好
一览 发表于 2008-1-2 08:31 | 显示全部楼层

不是停止位的问题

不是停止位的问题,好好看看EEPROM的手册,写数据要延时等待EEPROM device
把数据从缓冲写到EEPROM区.写数据后发停止位,然后发start 位,如果可以接收到ACK,就说明设备写完成.在手册里都有写的.
mohanwei 发表于 2008-1-2 08:56 | 显示全部楼层

写完以后EEPROM就会自闭一段时间,一般是5ms以上



各位大牛估计都是玩os的……^_^
hotpower 发表于 2008-1-2 12:50 | 显示全部楼层

不知主发模式的中断收发程序例程有无???

您需要登录后才可以回帖 登录 | 注册

本版积分规则

338

主题

7307

帖子

26

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