HAL_I2C_Mem_Write 函数的返回值是一个 HAL_StatusTypeDef 枚举值,用于表示写入操作的结果。常见的返回值包括 HAL_OK(成功)、HAL_ERROR(错误)、HAL_BUSY(总线繁忙)和 HAL_TIMEOUT(超时)。调用者应根据这些返回值来判断写入操作是否成功,并采取相应的处理措施。
assert_param()是一个参数校验函数,它的作用是检验输入参数是否符合要求。 接下来判断I2C是否准备好,如果i2c准备就绪,就进入下一环节,如果没有,则返回HAL_BUSY。 如果I2C准备就绪,则等待总线空闲,通过函数I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart)实现,我们来看...
assert_param()是一个参数校验函数,它的作用是检验输入参数是否符合要求。 接下来判断I2C是否准备好,如果i2c准备就绪,就进入下一环节,如果没有,则返回HAL_BUSY。 如果I2C准备就绪,则等待总线空闲,通过函数I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY_FLAG, tickstart)实现,我们来看...
* HAL_BUSY:总线忙 * HAL_ERROR:函数执行出错 * HAL_TIMEOUT:超时 函数调用示例: 以下是一个使用HAL_I2C_Mem_Write函数向I2C设备写入数据的示例代码: uint8_t data[4]= {0x01,0x02,0x03,0x04}; //要写入的数据 HAL_StatusTypeDef status =HAL_I2C_Mem_Write(&hi2c1,0xA0,0x0000,I2C_MEMADD_SIZE...
0 Kudos Reply TDK Guru 2023-10-20 11:11 AM Clock stretching, maybe multi-master busy status as well. If you feel a post has answered your question, please click "Accept as Solution". 0 Kudos Reply Previous 1 2 3 Next Related...
一、CubeMx配置 开启I2C1,其余参数默认 在旧版本的CubeMx中,HAL库实现的I2C初始化带有一些BUG,比如需要在I2C引脚复用GPIO配置前加上I2C的时钟使能,不过这些BUG在新版本的CubeMx中似乎得到了解决,直接使用其生成的初始化程序和HAL库的I2C接口就可以实现成功的读写操作 ...
本文所描述的 I2C 死锁问题,表现为:当 I2C 通讯出现异常后,SDA 和 SCL 均为高(即 IDLE 状态),在调用 HAL_I2C_Master_Transmit 或者 HAL_I2C_Master_Receive 一直返回 BUSY 或 TIMEOUT。通过逻辑分析仪查看总线一直为HIGH。 通常这种异常发生: 在Slave 设备拔除总线后,Master 出现异常 ...