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.

[参考译文] HDC2022:Energia 示例代码

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1031515/hdc2022-energia-example-code

器件型号:HDC2022
主题中讨论的其他器件: HDC1010ENERGIAHDC2080HDC2021CC3220S

大家好、团队、

我无法从 HDC2022读取任何有用的数据,即使在读取了 SNAU250和 SNAA312 (以及数据表;-)之后也是如此。

因此、我尝试读取制造商 ID、但也没有成功:

Wire.beginTransmission(0x41);//发送到器件#41
Wire.write (0xFC);//将指针设置为 manualfact。 ID
wire.endTransmission ();//停止传输
延迟(5);//等待5ms

Wire.requestFrom (0x41、1、;//从器件0x41请求1个字节
a = Wire.read();//接收一个字节

我使用 Energia 成功读取 HDC1010的温度和湿度...

感谢 您的帮助和致以最诚挚的问候、

Hans

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

    尊敬的 Hans:  

    在 Energia 和 Ardunio 中-根据我的经验、在使用 Wire.h 时、您需要将十六进制转换为十进制值  

    例如、对于地址0x41、请使用十进制请参阅下面 MID 读取和完整转换周期的片段、以供您自己使用。  

    Wire.beginTransmission(65);//发送到 HDC2器件地址0x41
    wire.write (252);//指向0xFC 的指针
    wire.endTransmission ();//停止传输

    Wire.requestFrom (65、2、1);//从 HDC2器件请求4个字节、从寄存器0xFC (MID、低字节)开始

    while (Wire.Available ())

    Wire.readBytes (iBuff_HDC2、2);
    HDC2_MID_MSB = iBuff_HDC2[1]<< 8;//向左移位
    HDC2_MID =(HDC2_MID_MSB + iBuff_HDC2080[0]);

    serial.print ("、");
    serial.println (HDC2_MID);//打印 出中间到终端

    // start_conversion
    /*
    0x01–14位、0x03–仅限温度
    0x51–11位、0x53–仅限温度
    0xA1–9位、0xA3–仅限温度
    *
    Wire.beginTransmission(65);//发送到 HDC2器件地址0x41
    Wire.write (15);//指向0x0F 的指针
    Wire.write (01);//对于 T 和%RH 均为14位
    wire.endTransmission ();//停止传输


    delayMicroseconds (1500);// 14位转换的最小延迟

    Wire.beginTransmission(65);//发送到 HDC2器件地址0x41
    Wire.write (00);//指向0x00的指针
    wire.endTransmission ();//停止传输
    Wire.requestFrom (65、4、1);//从 HDC2器件请求4个字节、从寄存器0x00 (temp MSB)开始

    //获取字节,上移 temp MSB,对临时数据执行数学运算,打印结果,上移 hum MSB,对 hum 数据执行数学运算,打印结果
    while (Wire.Available ())

    Wire.readBytes (iBuff_HDC2、4);
    HDC2_TEMP_MSB =(iBuff_HDC2[1]<< 8);
    // HDC2_TEMP_LSB =(iBuff_HDC2[0]);
    HDC2_TEMP_DEC =(HDC2_TEMP_MSB + iBuff_HDC2[0]);//获取用于计算的值、由用于温度读取的 iBuff 索引数组值0和1组成。

    HDC2_temp_celcius =((float)(HDC2_temp_DEC)/ 65536)* 165 - 40.00;//根据 HDC2010、HDC2021和 HDC2022 数据表进行数学运算
    //HDC2_temp_celcius =((float)(HDC2_temp_DEC)/ 65536)* 165 - 40.62;//根据 HDC2080数据表进行数学运算
    HDC2_temp_celcius_comp = HDC2_temp_celcius;
    serial.print ("、");
    serial.print (HDC2_temp_celcius);//将 T 打印到终端
    serial.print ("、");

    HDC2_hum_MSB =(iBuff_HDC2[3]<<8);
    HDC2_hum_LSB =(iBuff_HDC2[2]);
    HDC2_hum_DEC =(HDC2_hum_MSB + HDC2_hum_LSB);//获取计算值、由用于  湿度读数的 iBuff 索引阵列值3和2组成。
    HDC2_hum_percentage =((float)(HDC2_hum_DEC)/ 65536)* 100;//根据 HDC2 数据表进行数学运算
    HDC2_hum_percent_comp = HDC2_hum_percentage;
    serial.print (");
    serial.print (HDC2_hum_percentage);//将%RH 打印到终端
    serial.println(",");

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

    Josh、您好!

    感谢您提供示例代码! 同时、我发现根本原因:我使用了 CC3220SEVM 并使用地址0x41连接了 HDC2022、但我发现 CC3220S EVM 上的 TMP006具有相同的地址...

    谢谢、此致、

    Hans