This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ25895:通过 I2C 通信读取寄存器时 NACK

Guru**** 2492385 points
Other Parts Discussed in Thread: BQ25895

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/706550/bq25895-nack-when-reading-a-register-through-i2c-communication

器件型号:BQ25895

您好!  

请告诉我这个问题是否适合这个论坛。  

我无法通过 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)=设置)

 

如何解决此问题?  

我对这件事都不熟悉、因此我非常感谢您的帮助。  

谢谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    它不是支持 Eclipse Neon 封装的正确论坛。

    此致、

    Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。  

    让我结束本次讨论并开始一个更合适的新主题。