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.

[参考译文] ADS7142:ADS7142的库或I2C详细信息

Guru**** 2538930 points
Other Parts Discussed in Thread: ADS7142

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/639597/ads7142-library-or-i2c-details-for-ads7142

部件号:ADS7142

尊敬的各位:

我刚刚开始使用带TMR的ADS7142,以便在设备由电池供电时尽可能节省电量。

我在使用ATtiny1634在Arduino下实施I2C通信时遇到一些困难。

下面是我的读写功能的详细信息:

void writeADCRegister (字节地址,字节值)

 Wire.beginTransmission(ADC_ADDRESS和0x7F);
 wire.write (0x08);                //单寄存器写入操作码
 wire.write (地址);                   
 电线写入(数值);                      
 wire.endTransmission ();                //在缓冲区中发送字节
}

UINT8_t readADCRegister (字节地址)

 UINT8_t值;
 Wire.beginTransmission(ADC_ADDRESS和0x7F);
 wire.write (0x10);                  //单寄存器读取操作码
 wire.write (地址);   

 wire.endTransmission ();

 
 wire.write (ADC_address | 0x80);
 wire.requestFrom (ADC_ADDRESS,1);

 while (!Wire.Available ());

 数值= Wire.Read();
 wire.endTransmission ();
 
 返回值;
}

其中:  

#define ADC_ADDRESS  0x18 // ADDR引脚接地

它似乎在经过一些证明后才起作用

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

    我听起来该通信现在对您有效,对吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,抱歉现在回答正确,
    我在沟通错误时打开了线程,但过了一段时间我就解决了。
    现在,我对自主模式下的阈值有另一个问题。
    在另一线程中打开。

    以下是正确的功能:

    #define ADC_ADDRESS  0x18 // ADDR引脚接地

    void writeADCRegister (字节地址,字节值)

     Wire.beginTransmission(ADC_ADDRESS和0x7F);
     wire.write (0x08);                //单寄存器写入操作码
     wire.write (地址);                   
     电线写入(数值);                      
     wire.endTransmission ();                //在缓冲区中发送字节
    }

    UINT8_t readADCRegister (字节地址)

     UINT8_t值;
     Wire.beginTransmission(ADC_ADDRESS和0x7F);
     wire.write (0x10);                  //单寄存器读取操作码
     wire.write (地址);   
     wire.endTransmission ();
     
     wire.write (ADC_address | 0x80);
     wire.requestFrom (ADC_ADDRESS,1);

     while (!Wire.Available ());

     数值= Wire.Read();
     wire.endTransmission ();
     
     返回值;
    }


    仅     当处于高分辨率模式时,void readADCAccRegisters (uint16_t *ch0, uint16_t *CH1)//

     UINT8_t值;
     Wire.beginTransmission(ADC_ADDRESS和0x7F);
     wire.write(0x30);                  //读取一个连续的寄存器块
     wire.write (0x08);                  // ACC_CH0_LSB寄存器的地址
     wire.endTransmission ();

     wire.write (ADC_address | 0x80);
     wire.requestFrom (ADC_ADDRESS,4);

     while (!Wire.Available ());

     *ch0 = Wire.read()+((uint16_t)Wire.read()<8);
     *CH1 = Wire.read()+((uint16_t)Wire.read()<8);
    }



    谢谢

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

    我刚刚看到您的回答。 很高兴听到它对您起作用,如果您有任何其他问题,请告知我们。