打印

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

[复制链接]
4336|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

使用特权

评论回复
5
hotpower| | 2007-12-30 13:05 | 只看该作者

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

使用特权

评论回复
6
McuPlayer|  楼主 | 2008-1-2 03:23 | 只看该作者

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

“2次之间延时10mS左右应该没问题”,我觉得如果有可能,用查询方法比较好

使用特权

评论回复
7
一览| | 2008-1-2 08:31 | 只看该作者

不是停止位的问题

不是停止位的问题,好好看看EEPROM的手册,写数据要延时等待EEPROM device
把数据从缓冲写到EEPROM区.写数据后发停止位,然后发start 位,如果可以接收到ACK,就说明设备写完成.在手册里都有写的.

使用特权

评论回复
8
mohanwei| | 2008-1-2 08:56 | 只看该作者

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



各位大牛估计都是玩os的……^_^

使用特权

评论回复
9
hotpower| | 2008-1-2 12:50 | 只看该作者

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

使用特权

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

本版积分规则

338

主题

7307

帖子

26

粉丝