打印
[STM32F4]

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

[复制链接]
563|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiajs|  楼主 | 2021-12-8 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F4的硬件I2C是不是不能用于器件地址为13位的FM24CL64B?

使用特权

评论回复
沙发
huangchui| | 2021-12-8 23:19 | 只看该作者

什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
jiajs|  楼主 | 2021-12-8 23:22 | 只看该作者
FM24CL64B的器件地址是13位的,而STM32F4的硬件I2C配置时,器件地址只能选7位或10位,是不是FM24CL64B与STM32F4通讯,不能用硬件I2C呢?

使用特权

评论回复
地板
chuxh| | 2021-12-8 23:24 | 只看该作者
无论连续读写多少个字节数据,总有一个是错的,其它的全部正确?

使用特权

评论回复
5
jiajs|  楼主 | 2021-12-8 23:29 | 只看该作者
嗯,而且都是读出的第一个是错的

使用特权

评论回复
6
renyaq| | 2021-12-8 23:31 | 只看该作者
但是是写入的最后一个没有读出来,也不知道顺序怎么颠倒了,我的指针顺序绝对没有问题

使用特权

评论回复
7
jiajs|  楼主 | 2021-12-8 23:33 | 只看该作者
如果I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_10bit;
那么也是调用I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction)吗

使用特权

评论回复
8
zhanghqi| | 2021-12-8 23:35 | 只看该作者
好像没找到I2C_Send10bitAddress这样的函数。

使用特权

评论回复
9
jiajs|  楼主 | 2021-12-8 23:37 | 只看该作者
我是分高低地址调用I2C_Send7bitAddress发送出去的。

使用特权

评论回复
10
chuxh| | 2021-12-8 23:39 | 只看该作者
但是为什么不正确呢?

使用特权

评论回复
11
jiajs|  楼主 | 2021-12-8 23:41 | 只看该作者
原来是while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));  必须写在I2C_ReceiveData(I2C1);前面

使用特权

评论回复
12
renyaq| | 2021-12-8 23:43 | 只看该作者
您好,我在调试FM24CL64的时候也是读写不正确,请问您是怎么解决的,能参考你的代码吗?

使用特权

评论回复
13
xxrs| | 2021-12-8 23:45 | 只看该作者
要不要模拟一下!
那个是器件地址还是说,是存储块的地址?

使用特权

评论回复
14
jiajs|  楼主 | 2021-12-8 23:47 | 只看该作者
我上面写了解决办法啊:原来是while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));  必须写在I2C_ReceiveData(I2C1);前面

使用特权

评论回复
15
jiajs|  楼主 | 2021-12-8 23:49 | 只看该作者
我最后还是用了硬件I2C

使用特权

评论回复
16
jiajs|  楼主 | 2021-12-8 23:51 | 只看该作者
FM24CL64B地址是在7位设备地址的低位补0

使用特权

评论回复
17
jiajs|  楼主 | 2021-12-8 23:53 | 只看该作者
我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

940

主题

11975

帖子

6

粉丝