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.

[参考译文] PGA302:使用两个具有 usb2anydll 的 MSP430FR5969 (主器件)连接两个 PGA302 (从器件)

Guru**** 2455490 points
Other Parts Discussed in Thread: PGA302, MSP430FR5969

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1507594/pga302-connect-two-pga302-slave-using-two-msp430fr5969-master-with-usb2anydll

部件号:PGA302
主题中讨论的其他器件: MSP430FR5969

工具/软件:

尊敬的、

我尝试 使用 MSP430FR5969 (主器件) LaunchPad 通过 I2C 协议校准 PGA302 (从器件)。

 电路板上有两个 PGA302。  我们希望 在一个程序中通过 I2C 协议使用 MSP430FR5969 (主器件) Launchpad 读取/写入两个 PGA302的寄存器。

这是可能的吗?

此致。

Jimy

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

    嗨、Jimy、  

    是的、可以使用1个主器件通过 I2C 与多个 PGA302器件进行通信。 但是、我建议使用 I2C 开关 以避免总线冲突。  

    谢谢、

    Maggie

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

    您好、Maggie、

    我们使用2个主器件通过 usb2anydll 通过 I2C 与2个 PGA302器件进行通信。 但 PGA302寄存器读取的值是意外的。

    M_EE302_H0_A 在第二个 u2aOpen 之前和第二个 u2aOpen 之后  为0x2000 (是正确的)、并将 m_EE302_H0_A_2配置为0x213d (错误、实际上是 m_EE302_H0_B 的值 )。

    出什么问题了?

    计划大纲为:

    int usb_num = u2aFindControllers (); //返回2

    char szSerialNumber_A;
    int num = u2aGetSerialNumber (0、szSerialNumber_A);  //返回 num :0、szSerialNumber_A:"39A4934608001C00"

    int u2a_handle_A = u2aOpen (szSerialNumber_A);  //返回0x3010
    u2aSetReceiveTimeout(20);

    字节 BUFFER_A[64];
    int read_A = u2aFirmware Version_Read (u2a_handle_A 、(字节*) buffer_A、sizeof (buffer_A)); //返回  read_A :4、buffer_A:0x02、0x07、0x00、0x034

    configure_gpiles_of_a ();

    u2aSPI_Control (u2a_handle_A 、SPI_MSB_FIRST Inactive_State_Low、SPI_8_BIT、Change_On_Following_Edge、SPI_MSB_FIRST、 SPI_SPI With_Every_Word、SPI_SPI、High_To_Low 0、8);
    u2aI2C_Control (u2a_handle_A 、I2C_400kHz、I2C_7Bits、I2C_PULLUP_OFF);
    u2aADC_Control (u2a_handle_A 、Analog_In Analog_In、Analog_In、ADC_ADC_ADC_ADC Analog_In、 ADC_VREF_3V3);

    M_REVISION_A = comm_low_level_read_single(u2a_handle_a  , 0,0);  //返回  m_revision_A :0
    m_dev_state_a = comm_low_level_read_single(u2a_handle_a  , 0,12);  //返回  m_dev_state_a :3

    M_EE302_H0_A =(comm_low_level_read_single (u2a_handle_A 、5、1)<< 8)+ comm_low_level_read_single (u2a_handle_A 、5、0);//返回  m_EE302_H0_A:0x2000


    char szSerialNumber_B;
    int num = u2aGetSerialNumber (1、 szSerialNumber_B);  //返回 num :0、szSerialNumber_B:"39A4934629003100"

    int  u2a_handle_B  = u2aOpen (szSerialNumber_B);  //返回0x3011
    u2aSetReceiveTimeout(20);

    字节 BUFFER_B[64];
    int READ_B = u2aFirmware Version_Read (u2a_Handle_B 、(字节*) Buffer_B、sizeof (Buffer_B));  //返回  READ_B :4、 Buffer_B:0x02、0x07、0x00、0x034

    configure_gpiles_of_B ();

    u2aSPI_Control (u2a_handle_B 、SPI_MSB_FIRST Inactive_State_Low、SPI_8_BIT、Change_On_Following_Edge、SPI_MSB_FIRST、 SPI_SPI With_Every_Word、SPI_SPI、High_To_Low 0、8);
    u2aI2C_Control (u2a_handle_B、I2C_400kHz、I2C_7位、I2C_PULLUP_OFF);
    u2aADC_Control (u2a_handle_B 、ADC_ADC_ADC_ADC_ADC_ADC_ADC_ADC_ADC_Control Analog_In、Analog_In、Analog_In Analog_In ADC_VREF_3V3);

    M_REVISION_B = comm_low_level_read_single(u2a_handle_B  , 0,0);  //返回 m_revision_B  :0
    m_dev_state_B = comm_low_level_read_single (u2a_handle_B 、0、12);  //返回  m_dev_state_B:3

    M_EE302_H0_A_2 =(comm_low_level_read_single (u2a_handle_a 、5、1)<< 8)+ comm_low_level_read_single (u2a_handle_a 、5、0);//返回  m_EE302_H0_A_2:0x213d

    M_EE302_H0_B =(comm_low_level_read_single (u2a_handle_B 、5、1)<< 8)+ comm_low_level_read_single (u2a_handle_B 、5、0);//返回  m_EE302_H0_B:0x213d

    此致、

    Jimy

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

    嗨、Jimy、  

    让我们从您的硬件开始。 您能提供原理图吗?  您使用的是两个主器件还是一个主器件? 它们如何与您的 PGA302器件连接? 您能否提供 I2C 通信的示波器快照?

    您打算读取哪些寄存器? 您使用的外设和寄存器地址是什么?

    谢谢、

    Maggie

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

    您好、Maggie、

    我们 的测试 用例中使用了2个 PGA302EVM-037评估板。 程序是 PGA302EVM-GUI、我们添加了第二个 u2aOpen、CONFIGURATION_OF_GPIOS 和协响应 u2aI2C_RegisterRead。

    M_EE302_H0_A =(u2aI2C_RegisterRead (u2a_handle_A、(UINT16)(0x40 + 5)、1)<< 8)+u2aI2C_RegisterRead (u2a_handle_A、(UINT16 )(0x40 + 5)、 0);

    M_EE302_H0_B =(u2aI2C_RegisterRead (u2a_handle_B、(UINT16 )( 0x40 + 5)、1)<< 8)+u2aI2C_RegisterRead (u2a_handle_B、(UINT16 )(0x40 + 5)、 0);

    此致、

    Jimy

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

    嗨、Jimy、  

    两个 PGA302评估板都直接连接到 MSP430吗?

    您好像尝试读取 H0_MSB 和 H0_LSB、正确吗? 为了确保我明白、您有两个要与之通信的 PGA 器件:PGA302-A 和 PGA302-B 从 PGA302-A 读取 H0_MSB+H0_LSB 时、得到正确的值、但初始化 PGA302-B 后、尝试 再次从 PGA302-A 读取 H0_MSB+H0_LSB 时、 从 PGA302-B 获得 H0_MSB+H0_LSB 值、这是否正确?

    如果您可以提供示波器或逻辑分析仪的 I2C 通信快照、这将会很有帮助。

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

    您好、Maggie、

    我们正在研究另一种校准方法。

    非常感谢。

    Jimy