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.

[参考译文] DRV2605L-Q1:未获取触觉反馈:DRV2605L-Q1

Guru**** 1184760 points
Other Parts Discussed in Thread: DRV2605L-Q1, DRV2605L
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1331198/drv2605l-q1-not-getting-haptic-feedback-drv2605l-q1

器件型号:DRV2605L-Q1
主题中讨论的其他器件: DRV2605L

您好!

我一直在使用 DRV2605l-Q1生成触觉反馈、但无法获得反馈。 我已经附上了根据器件数据表中提供的说明编写的代码。

请检查一次、让我知道需要执行哪些操作才能获得触觉反馈。 等待您的快速支持、现在该项目正处于关键阶段、请优先考虑它。

谢谢。

总结。

#define DRV2605L_Q1_DEVICE_ADDR             0x5A

/*uint8_t MODE_reg[2];
struct RegAdd_Data {
    uint8_t Reg_Add;
    uint8_t Data;
};*/

//struct RegAdd_Data InitBuf[]{
uint8_t Mode[2] = {0x01,0x01}; /*Mode selection and Standby clear*/
uint8_t Lib_Select[2] = {0x03,0x02}; /*Selecting library TS2200 Library B*/
uint8_t Feedback_Ctrl[2] = {0x1A,0xA8}; /*Feedback Control*/
uint8_t R_Volt[2] = {0x16,0x8E}; /*Rated voltage for closed loop ERM*/
uint8_t OD_Clamp[2] = {0x17,0x8C}; /*OD_Clamp for closed loop ERM*/
uint8_t Auto_calib_Time[2] = {0x1E,0x30}; /*Auto calibration time*/
uint8_t Drive_time[2] = {0x1B,0x1F}; /*Drive time*/
uint8_t SamBlanIDISS_Time[2] = {0x1C,0x35}; /*Sample, Blanking and IDISS time*/
uint8_t GO_Bit[2] = {0x0C,0x01};  /*GO Bit*/

uint8_t InitDataLength = 2;

uint8_t Mode_PWM[2] = {0x01,0x03}; /*Mode selection and Standby set*/
uint8_t Analog_Input[2] = {0x1D,0x02}; /*Control register 3*/

uint8_t Mode_RTP[2] = {0x01,0x05}; /*Mode selection and Standby set*/
uint8_t Data_Format_RTP[2] = {0x1D,0x01}; /*selecting data format as unsigned*/
uint8_t Input_RTP[2] = {0x02,0x3F}; /*Providing RTP input*/






void DRV2605L_Q1_Init(void)
{
    //crDELAY( xHandle, 250 );
    PORT_PinSet(PORT_PIN_PB23);
    
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode, InitDataLength);
    AutoCalibration();
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Lib_Select, InitDataLength);
    PORT_PinClear(PORT_PIN_PB23);
}

void AutoCalibration(void)
{
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Feedback_Ctrl, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, OD_Clamp, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Auto_calib_Time, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Drive_time, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, SamBlanIDISS_Time, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, GO_Bit, InitDataLength); 
}
void Play_PWM(void)
{
    //DRV2605L_Q1_Init();
    PORT_PinSet(PORT_PIN_PB23);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_PWM, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Analog_Input, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, InitDataLength);
    PORT_PinClear(PORT_PIN_PB23);
    
}

void Play_RTP(void)
{
    DRV2605L_Q1_Init();
    PORT_PinSet(PORT_PIN_PB23);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_RTP, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Data_Format_RTP, InitDataLength);
    SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Input_RTP, InitDataLength);
    PORT_PinClear(PORT_PIN_PB23);
}



IIC function definition:

bool SERCOM2_I2C_Write(uint16_t address, uint8_t* wrData, uint32_t wrLength)
{
    return SERCOM2_I2C_XferSetup(address, wrData, wrLength, NULL, 0, false, false);
}

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

    您好!

    我肯定会研究代码。 您能否还提供一个我可以查看的原理图?

    此致、
    悉尼诺斯卡特  

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

    您好!  

    查看代码、我不明白在设置 GO 位之前将模式设置为自动校准(值0x07)的位置。 第7.5.6节"自动校准程序"中有一个分步程序、用于编程可能有用的自动校准。 该过程具体指出的一点是、 EN 引脚需要为高电平。 您是通过硬件将其上拉还是连接到您的控制器? 如果 ENABLE 引脚为低电平、器件处于关断状态、这将解释您没有获得任何反馈的原因。 此引脚也必须为高电平才能写入 I2C。 如需更多信息、请参阅数据表第7.4.1.3节"通过 EN 控制运行"。  

    此致、
    悉尼诺斯卡特  

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

    尊敬的悉尼:

    请找到附件中的原理图。

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

    尊敬的悉尼:

    感谢您的支持。

    我将更改代码。

    EN 引脚未通过硬件上拉、但已连接到微控制器、我将在自动校准等任何操作之前将其置为高电平。

    您提到的部分与我所指的文档中的内容不匹配、即 SLOS874B - 2015年10月- 2018年4月修订版。

    如果需要为 IC 执行硬件上拉、请告诉我。  

    谢谢。此致、

    总结。

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

    尊敬的悉尼:

    添加到上一答复中,

    我已将写入模式寄存器的代码值变为0x07并使其就绪、但在写入寄存器时、我将在 IIC 状态寄存器中获得 NACK、这是不是由于 EN 引脚导致的?

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

    您好!

    如果您有,请发送任何示例代码。

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

    您好!  

    我的道歉。 我已更新了第一答复中的章节编号。 它们现在应该与您拥有的数据表一致。  

    通过微控制器上拉 EN 引脚将起作用。 器件应在 I2C 期间确认、与使能引脚无关。 数据表中的" EN 引脚必须为高电平才能写入 I2C 器件寄存器。 但是、如果 EN 引脚为低电平、DRV2605L-Q1器件仍可在 I2C 事务期间确认(ACK)、但不能进行读取或写入。"

    在您的示例代码中、在自动校准之前启用似乎未拉至高电平。 您是否更改了此内容?  

    另外、在其他功能中、设置回放后、可直接清除启用引脚。 您可能需要实施一些时序参数。  

    我正在整理 EVM 中的示例代码、供您参考。 我会通过电子邮件将其发送给您。

    此致、
    悉尼诺斯卡特  

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

    尊敬的悉尼:

    感谢您的持续支持。

    您在我的工作电子邮件中发送的固件已被电子邮件安全部门删除、请通过我的个人电子邮件" sumitbhardwaj6969@gmail.com "发送。

    谢谢。此致、

    总结。

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

    尊敬的悉尼:

    自动校准功能可从 DRV2605L_Q1_Init ()函数中调用 、您可以在该函数中找到 Haptic_EN_SET ()功能以使使能引脚处于高电平、此外、在使 EN 引脚处于低电平之前、我在每个函数中都增加了250ms 的延迟。

    请再次发送我的个人电子邮件 " sumitbhardwaj6969@gmail.com 它被删除由于电子邮件安全.

    /* ************************************************************************** */
    /** Descriptive File Name
    
      @Company
        Company Name
    
      @File Name
        filename.c
    
      @Summary
        Brief description of the file.
    
      @Description
        Describe the purpose of this file.
     */
    /* ************************************************************************** */
    
    /* ************************************************************************** */
    /* ************************************************************************** */
    /* Section: Included Files                                                    */
    #include "definitions.h" 
    #include "Haptic_Driver.h"
    /* ************************************************************************** */
    #define DRV2605L_Q1_DEVICE_ADDR             0x5A
    #define DataLength  3
    
    /*uint8_t MODE_reg[2];
    struct RegAdd_Data {
        uint8_t Reg_Add;
        uint8_t Data;
    };*/
    
    //struct RegAdd_Data InitBuf[]{
    uint8_t Mode[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x00}; /*Mode selection and Standby clear*/
    uint8_t Auto_Calib_Mode[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x07};
    uint8_t Lib_Select[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x03,0x02}; /*Selecting library TS2200 Library B*/
    uint8_t Feedback_Ctrl[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1A,0xA8}; /*Feedback Control*/
    uint8_t R_Volt[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x16,0x8E}; /*Rated voltage for closed loop ERM*/
    uint8_t OD_Clamp[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x17,0x8C}; /*OD_Clamp for closed loop ERM*/
    uint8_t Auto_calib_Time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1E,0x30}; /*Auto calibration time*/
    uint8_t Drive_time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1B,0x1F}; /*Drive time*/
    uint8_t SamBlanIDISS_Time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1C,0x35}; /*Sample, Blanking and IDISS time*/
    uint8_t GO_Bit[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x0C,0x01};  /*GO Bit*/
    
    
    
    uint8_t Mode_PWM[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x03}; /*Mode selection and Standby set*/
    uint8_t Analog_Input[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1D,0x02}; /*Control register 3*/
    
    uint8_t Mode_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x05}; /*Mode selection and Standby set*/
    uint8_t Data_Format_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1D,0x01}; /*selecting data format as unsigned*/
    uint8_t Input_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x02,0x3F}; /*Providing RTP input*/
    
    uint8_t RxData[16];
    
    
    
    
    void DRV2605L_Q1_Init(void)
    {
        vTaskDelay(250);
        Haptic_EN_Set();
        
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode, DataLength);
        //SERCOM2_I2C_Read(DRV2605L_Q1_DEVICE_ADDR, RxData, 8);
        AutoCalibration();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Lib_Select, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
    }
    
    void AutoCalibration(void)
    {
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Auto_Calib_Mode, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Feedback_Ctrl, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, OD_Clamp, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Auto_calib_Time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Drive_time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, SamBlanIDISS_Time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, GO_Bit, DataLength); 
    }
    void Play_PWM(void)
    {
        //DRV2605L_Q1_Init();
        Haptic_EN_Set();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_PWM, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Analog_Input, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
        
    }
    
    void Play_RTP(void)
    {
        DRV2605L_Q1_Init();
        vTaskDelay(250);
        Haptic_EN_Set();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_RTP, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Data_Format_RTP, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Input_RTP, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
    }
    // *****************************************************************************
    
    

    谢谢。此致、

    总结。

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

    尊敬的悉尼:

    自动校准功能可从 DRV2605L_Q1_Init ()函数中调用 、您可以在该函数中找到 Haptic_EN_SET ()功能以使使能引脚处于高电平、此外、在使 EN 引脚处于低电平之前、我在每个函数中都增加了250ms 的延迟。

    请再次发送我的个人电子邮件 " sumitbhardwaj6969@gmail.com 它被删除由于电子邮件安全.

    /* ************************************************************************** */
    /** Descriptive File Name
    
      @Company
        Company Name
    
      @File Name
        filename.c
    
      @Summary
        Brief description of the file.
    
      @Description
        Describe the purpose of this file.
     */
    /* ************************************************************************** */
    
    /* ************************************************************************** */
    /* ************************************************************************** */
    /* Section: Included Files                                                    */
    #include "definitions.h" 
    #include "Haptic_Driver.h"
    /* ************************************************************************** */
    #define DRV2605L_Q1_DEVICE_ADDR             0x5A
    #define DataLength  3
    
    /*uint8_t MODE_reg[2];
    struct RegAdd_Data {
        uint8_t Reg_Add;
        uint8_t Data;
    };*/
    
    //struct RegAdd_Data InitBuf[]{
    uint8_t Mode[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x00}; /*Mode selection and Standby clear*/
    uint8_t Auto_Calib_Mode[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x07};
    uint8_t Lib_Select[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x03,0x02}; /*Selecting library TS2200 Library B*/
    uint8_t Feedback_Ctrl[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1A,0xA8}; /*Feedback Control*/
    uint8_t R_Volt[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x16,0x8E}; /*Rated voltage for closed loop ERM*/
    uint8_t OD_Clamp[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x17,0x8C}; /*OD_Clamp for closed loop ERM*/
    uint8_t Auto_calib_Time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1E,0x30}; /*Auto calibration time*/
    uint8_t Drive_time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1B,0x1F}; /*Drive time*/
    uint8_t SamBlanIDISS_Time[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1C,0x35}; /*Sample, Blanking and IDISS time*/
    uint8_t GO_Bit[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x0C,0x01};  /*GO Bit*/
    
    
    
    uint8_t Mode_PWM[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x03}; /*Mode selection and Standby set*/
    uint8_t Analog_Input[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1D,0x02}; /*Control register 3*/
    
    uint8_t Mode_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x01,0x05}; /*Mode selection and Standby set*/
    uint8_t Data_Format_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x1D,0x01}; /*selecting data format as unsigned*/
    uint8_t Input_RTP[DataLength] = {DRV2605L_Q1_DEVICE_ADDR,0x02,0x3F}; /*Providing RTP input*/
    
    uint8_t RxData[16];
    
    
    
    
    void DRV2605L_Q1_Init(void)
    {
        vTaskDelay(250);
        Haptic_EN_Set();
        
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode, DataLength);
        //SERCOM2_I2C_Read(DRV2605L_Q1_DEVICE_ADDR, RxData, 8);
        AutoCalibration();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Lib_Select, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
    }
    
    void AutoCalibration(void)
    {
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Auto_Calib_Mode, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Feedback_Ctrl, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, OD_Clamp, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Auto_calib_Time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Drive_time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, SamBlanIDISS_Time, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, GO_Bit, DataLength); 
    }
    void Play_PWM(void)
    {
        //DRV2605L_Q1_Init();
        Haptic_EN_Set();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_PWM, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Analog_Input, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, R_Volt, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
        
    }
    
    void Play_RTP(void)
    {
        DRV2605L_Q1_Init();
        vTaskDelay(250);
        Haptic_EN_Set();
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Mode_RTP, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Data_Format_RTP, DataLength);
        SERCOM2_I2C_Write(DRV2605L_Q1_DEVICE_ADDR, Input_RTP, DataLength);
        vTaskDelay(250);
        Haptic_EN_Clear();
    }
    // *****************************************************************************
    
    

    谢谢。此致、

    总结。

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

    尊敬的悉尼:

    请将示例代码发送到 sumitbhardwaj6969@gmail.com

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

    您好!

    我已共享一个用于访问示例代码的链接。 请告诉我这是否适合您。  

    此致、
    悉尼诺斯卡特  

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

    尊敬的悉尼:

    非常感谢。

    我得到了代码、让我检查一下、我之后会向您更新。

    谢谢。此致、

    总结。

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

    您好!

    当然、这听起来不错。  

    此致、
    悉尼诺斯卡特  

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

    尊敬的悉尼:

    我无法在 DRV2605L-Q1上编写代码。

    第一张图显示 IIC 时钟和计时的配置、请验证其是否正确? 我对 SDA 保持时间和 I2C 稳态时间感到困惑、第二张图像来自 DRV2605l-Q1数据表、请告诉我如何从器件数据表中计算 SDA 保持时间和 I2C 稳态时间。

    仅供参考、已正确配置启用 PIN。

    谢谢。此致、

    总结。

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

    您好、Sumit、

    我相信您的配置没问题。  数据表图2中提供了 I2C 线路上时序的示意图。 "起动和停机条件时序"。 您以前是否能够建立通信? 寻址可能是问题、因为它是一个7位地址。 如果正在写入0x5A、请尝试写入0xB4。  

    电压电平是多少?

    此致、
    悉尼诺斯卡特  

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

    您好、Sumit、  

    另外要关注的是 Vdd 上升速率、因为速率太慢可能会使器件进入未知状态。 这可能会导致 I2C 通信出现问题。

    此致、
    悉尼诺斯卡特