STM32HAL库I2C⼯作出错返回I2C_BUSY 使⽤stm32cubemx⽣成硬件I2C的代码 不过⾃动⽣成的代码,调⽤HAL_I2C_XXX的API⼯作不正常,返回错误代码为I2C_BUSY 使⽤STM32的I2C接⼝使⽤时需要注意很多细节,不过HAL库中官⽅已经为⽤户根据这些细节做了处理,可以直接使⽤。不过这个I2C代码并不稳定,...
具体依据没有找到,不过在HAL的说明文档中有要求这样的初始化顺序,同时其他的模块如SPI或UART,也都是先初始化模块(SPI,UART),再初始化GPIO void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0};if(i2cHandle->Instance==I2C1) {/* USER CODE BEGIN I2C1_MspInit 0...
HAL_I2C_Init()、HAL_I2C_Master_Transmit()、HAL_I2C_Master_Receive()等函数返回值分别为HAL_BUSY(0x02)、HAL_TIMEOUT(0x03)。 试着用MCU复位,是可以恢复的,说明硬件没死穴。又测试不用MCU复位,而是在程序中依次调用STM32Cube_FW_F4_V1.5.0固件库提供的如下两个初始化函数:HAL_I2C_DeInit(&hi2c1)、H...
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* I2C1 clock enable */ __HAL_RCC_I2C1_CLK_ENABLE(); /* I2C1 interrupt Init */ HAL_NVIC_SetPriority(I2C1_EV_IRQn, 0, 0); HAL_NVIC_EnableIRQ(I2C1_EV_IRQn); /* USER CODE BEGIN I2C1_MspInit 1 */ /* USER CODE END I2C1_MspInit 1 ...
在stm32f103上解决硬件I2C总是busy的问题 问题 在使用stm32f103的硬件I2C的时候,读写I2C总线总是busy,即下面的代码总是无法退出: while (I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)) { ; } 1. 2. 3. 4. 解决方法 在将io管脚复用成I2C之前,先作为输出GPIO管脚,然后拉高,即下面代码里的i2c_pin_init,并且在每...
I2C模块的使用方法(上) 6405 9 8:16 App [STM32 HAL库][定时器]输入捕获,最佳教程,没有之一~ 9114 13 6:19 App [STM32 HAL库][GPIO]按钮实验,最佳教程,没有之一~ 1万 5 3:38 App [STM32 HAL库][GPIO]IO最大输出速度,最佳教程,没有之一~ 4万 10 6:08:53 App 基于HAL库的开发(基于...
一.问题存在我用STM32F439IGT,为了确定问题存在,让I2C控制器作Master,先人为产生I2C总线故障。产生I2C总线故障的方法简单而粗暴:在I2C总线工作过程中,用镊子把SCL和SDA两个信号短路一下,很容易进入BUSY死锁状态。长时间短路也可能产生超时。HAL_I2C_Init()、HAL_I2C_Master_Transmit()、HAL_I2C_Master_Receive()...
之后 SDA 卡在低电平并且 HAL_BUSY 在连续的 I2C 读取时返回。我可以重现此问题,同时强调 I2C 读取...
那就不能用硬件I2C了,只能模拟I2C了吗? QTbin 闻名一方 11 用模拟IIC吧,而且看你说的IIC你还用上了8M这么高的速度,我建议你换成SPI通讯方式。 夏逸居士 小有美名 5 终于找到解决的办法了。就是在HAL_I2C_MspInit里,把__HAL_RCC_I2C1_CLK_ENABLE的执行提现到__HAL_RCC_GPIOB_CLK_ENABLE之前,然后就...
我们原来做项目需要用到I2C口,也用的是HAL库开发,但是有问题,用模拟I2C能通,后来咨询ST官方,官方也不建议用HAL库的硬件I2C,说库有点问题。 发布于 2018-09-04 12:35 赞同添加评论 分享收藏喜欢 学术FUN 关注 STM32:带 4G LTE 调制解调器的物联网 – 硬件 使用STM32微控制器和...