您好!
请告诉我这个问题是否适合这个论坛。
我无法通过 I2C 通信读取从设备中的寄存器。
从站:bq25895 http://www.ti.com/lit/ds/symlink/bq25895.pdf
IDE:Eclipse Neon
在 main 中:
while (1){
HAL_StatusTypeDef status = HAL_OK;
uint16_t return_value = 0;
状态= HAL_I2C_MEM_READ (&hi2c1、0xD4、(uint16_t)(0x07)、I2C_MEMADD_SIZE 8位、&RETURE_VALUE、 1、1000);
if (status!= HAL_OK){printf ("Error");}
否则{printf ("无错误");}
}
问题:由于从器件没有 ACK、因此设置了 I2C_FLAG_AF。
跟踪问题:
/*发送从机地址和内存地址*/
IF (I2C_RequestMemoryRead (h2c、DevAddress、MemAddress、MemAddSize、Timeout、 tickstart)!= HAL_OK)
/*等待 TXIS 标志被置位*/
if (I2C_WaitOnTXISFlagUntilTimeout (h2c、超时、Tickstart)!= HAL_OK)
/*检查是否检测到 NACK */
if (I2C_Is致谢 固定(h2c、超时、Tickstart)!= HAL_OK)
/*检查 NACK 是否在 I2C_IsAcknowledgeFail()内部设置*/
如果(__HAL_I2C_GET_flag (h2c、I2C_flag_AF)=设置)
如何解决此问题?
我对这件事都不熟悉、因此我非常感谢您的帮助。
谢谢。