野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8396|回复: 4

STM32硬件IIC问题

[复制链接]
发表于 2014-1-10 13:40:56 | 显示全部楼层 |阅读模式
小弟遇到一个问题,请各位大神指教:
我用硬件IIC操作24C128没问题,但操作时钟芯片就不行了。。
时钟芯片(SD2200)的地址是这样的:
D7   D6   D5    D4   D3   D2   D1   D0
0      1     1       0     C2   C1   C0    R/W

读数据:
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));//等待I2C空闲
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1,0x65,I2C_Direction_Transmitter);//读数据1寄存器,0x65为数据寄存器
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_Cmd(I2C1, ENABLE);
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1,0x65,I2C_Direction_Receiver);//读数据1寄存器
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
……
……
……
这样卡在第5行,地址检测。。改为0x64也测试过不行。。

回复

使用道具 举报

发表于 2014-1-10 14:46:31 | 显示全部楼层
stm32的iic很容易出错,建议楼主使用模拟方式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-10 16:32:42 | 显示全部楼层
我用硬件I2C测试24Cxx都没问题啊。。是不是硬件I2C中适用于24Cxx,其他的I2C外设很少使用硬件I2C。。
回复 支持 反对

使用道具 举报

发表于 2014-1-10 22:48:52 | 显示全部楼层
ajungle 发表于 2014-1-10 16:32
我用硬件I2C测试24Cxx都没问题啊。。是不是硬件I2C中适用于24Cxx,其他的I2C外设很少使用硬件I2C。。

STM32 的 硬件 I2C 不太稳定。

可以用示波器看看 时序图,比较 两者 的区别的啊
回复 支持 反对

使用道具 举报

发表于 2016-8-11 18:10:16 | 显示全部楼层
大家都是这么说的,硬件i2c都有问题。所以一般都是用模拟i2c的
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-13 22:16 , Processed in 0.037736 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表