[STM32F4] STM32F4的硬件I2C是不是不能用于器件地址为13位的FM24CL64B?

[复制链接]
1494|7
 楼主| 无为之益 发表于 2019-9-27 19:41 | 显示全部楼层 |阅读模式
请教大家一下,FM24CL64B的器件地址是13位的,而STM32F4的硬件I2C配置时,器件地址只能选7位或10位,是不是FM24CL64B与STM32F4通讯,不能用硬件I2C呢?
我现在无论连续读写多少个字节数据,总有一个是错的,其它的全部正确。而且都是读出的第一个是错的(但是是写入的最后一个没有读出来,也不知道顺序怎么颠倒了,我的指针顺序绝对没有问题)。
谢谢大家
 楼主| 无为之益 发表于 2019-9-27 19:47 | 显示全部楼层
另外,如果I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_10bit;
那么也是调用I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction)吗,好像没找到I2C_Send10bitAddress这样的函数。我是分高低地址调用I2C_Send7bitAddress发送出去的。
但是为什么不正确呢?
 楼主| 无为之益 发表于 2019-9-29 14:08 | 显示全部楼层
原来是while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));  必须写在I2C_ReceiveData(I2C1);前面
zhuczloveai910 发表于 2020-1-8 16:59 | 显示全部楼层
您好,我在调试FM24CL64的时候也是读写不正确,请问您是怎么解决的,能参考你的代码吗?
goodluck09876 发表于 2020-1-8 17:17 | 显示全部楼层
要不要模拟一下!
那个是器件地址还是说,是存储块的地址?
 楼主| 无为之益 发表于 2020-1-14 15:13 | 显示全部楼层
zhuczloveai910 发表于 2020-1-8 16:59
您好,我在调试FM24CL64的时候也是读写不正确,请问您是怎么解决的,能参考你的代码吗? ...

我上面写了解决办法啊:原来是while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));  必须写在I2C_ReceiveData(I2C1);前面
 楼主| 无为之益 发表于 2020-1-14 15:15 | 显示全部楼层
goodluck09876 发表于 2020-1-8 17:17
要不要模拟一下!
那个是器件地址还是说,是存储块的地址?

我最后还是用了硬件I2C
 楼主| 无为之益 发表于 2020-1-14 15:20 | 显示全部楼层
FM24CL64B地址是在7位设备地址的低位补0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

237

帖子

1

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