HAL_I2C_Mem_Read()读取I2C问题
我用HAL_I2C_Mem_Read()去读取TI AFE的register在power on/reset之后, 不是百分之百, 但有时候会发生MCU一直读取I2C失败的情况
请问一下会是什么问题造成吗?
Thanks
顶上去 发生时监听一下I2C波形,看一下是否因为操作问题导致I2C总线进入忙状态。I2C返回的结果是什么? 对于IIC我一直认为应该用硬件模拟更可靠 I2C返回是HAL_TIMEOUT
目前遇到的情况有3
1. power on之后, 第一次就读取OK
2. power on之后, 前几次读取失败, 之后就一直读取OK
3. power on之后, 一直都读取失败, 没有读取I2C成功过
第2种情况, 只要retry就可以解决了
但如果是第3种情况, 就无法读取到I2C, 这一种情况会是什么原因造成?
Thanks
bargagebaobei 发表于 2018-4-16 17:10
对于IIC我一直认为应该用硬件模拟更可靠
问下 你说的 硬件模拟是什么意思?我看代码 有两种方式 一种是软件模拟IIC时序 一种是库函数IIC
跟你说的是一回事儿吗?
楼主你好,我现在用cubemx生成的hal_i2c_mem_read函数,发设备地址0x6b,寄存器地址0x01。用示波器发现,发设备地址的时候函数把最低位置0了,也就是改为了写的逻辑电平,我把他改回来发出0x6b的波形后,无法产生0x01的波形,请问你产生的波形是什么样子,谢谢!我的邮箱是768839134@qq.com,方便的话是否可以分享一下你成功的代码 遇到同样问题,学习一下 羽夜霜降 发表于 2019-1-16 21:51
楼主你好,我现在用cubemx生成的hal_i2c_mem_read函数,发设备地址0x6b,寄存器地址0x01。用示波器发现,发 ...
必须要写入器件地址与寄存器地址才能读的啊,不然被读取的设备知道你要读哪里?被读器件数据手册里肯定有时序图的,你仔细看下。 已经确定了,只能模拟
页:
[1]