你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
hungchieh1029 发表于 2018-5-3 10:54 HAL_I2C_MspInit() { __HAL_RCC_I2C1_CLK_ENABLE();
hungchieh1029 发表于 2018-5-3 11:14 我一開始也是會遇到I2C init完之後就遇到busy了,所以我才對調的
安 发表于 2018-5-3 11:37 I2C busy可能发生在读取完成以后,楼主用的是硬件I2C模块,还是模拟的I2C。注意每次使用完后,一定要释放掉 ...
{
__HAL_RCC_I2C1_CLK_ENABLE();
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
這個方法你先試試看
先開啟I2C Clock
在設定IO
评分
查看全部评分
请问一下为什么要先call __HAL_RCC_I2C1_CLK_ENABLE(),
接着再去call HAL_GPIO_Init(GPIOB, &GPIO_InitStruct)?
这和原来Cube自动产生的顺序相反,这个影响到什么?
I2C init完之后就遇到busy了
==>是指还没要去读取I2C就busy? 或是尝试去读取之后, timeout, 之后就一直busy?
请问一下你有遇过, 有时候, 是非100%每次(发生在开机之后)第1次去读取I2C就失败, 之后再retry, 不过retry几次后, busy bit就被设起来, 之后就busy bit一直为1
Thanks
评分
查看全部评分
我是用STM的HAL lib, HAL_I2C_Mem_Read()去对I2C做读取的, 如果HAL_I2C_Mem_Read() return 值不是HAL_OK, 我就要去retry, call HAL_I2C_Mem_Read()
注意每次使用完后,一定要释放掉I2C总线。
==>我要怎么做释放? 用HAL lib or 其他方式?
或着有其他的建议?