matttsai 发表于 2018-4-20 15:15:42

HAL_I2C_Mem_Read()读取失败问题

我在开机后, 做完I2C的初始化之后, 使用HAL_I2C_Mem_Read()去读取I2C
但是读取失败,

用示波器看Data和Clock的时序图
发现有问题时, Clock一直保持Low或High

请问一下, 这是STM的API HAL_I2C_Mem_Read()没有去把clock拉hihg, 拉low?
或者是其他什么问题??


Thanks

king321 发表于 2018-4-20 16:27:59

API会拉高拉低,你先普通io输出拉高拉低看看,然后检查io配置是否正确

matttsai 发表于 2018-4-20 16:57:38

king321 发表于 2018-4-20 16:27
API会拉高拉低,你先普通io输出拉高拉低看看,然后检查io配置是否正确

你先普通io输出拉高拉低看看
==>是指HAL_GPIO_WritePin()吗?

我直接使用HAL_GPIO_WritePin(), SDA, SCL似乎不会被拉低
HAL_GPIO_WritePin(I2C2_SCL_GPIO_Port, I2C2_SCL_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(I2C2_SDA_GPIO_Port, I2C2_SDA_Pin, GPIO_PIN_RESET);

检查io配置是否正确
==>
如果有问题, 应该是百分之百会发生问题,
但我这个问题不是每次都会发生

还有其他建议吗?

Thanks

king321 发表于 2018-4-20 17:17:06

普通IO都无法正常拉低拉高,看一下代码其他部分有没有引脚冲突,检查一下电路板。
io正常拉高拉低,再看i2c

feixiang20 发表于 2018-4-21 00:06:47

参考下论坛里的帖子 https://www.stmcu.org.cn/module/forum/thread-597488-1-1.html,另外也可以看看STM32 HAL I2C库读指定寄存器的数据等帖子
页: [1]
查看完整版本: HAL_I2C_Mem_Read()读取失败问题