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.

[参考译文] CC1312R:读取 I2C 的温度数据

Guru**** 2481985 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1279861/cc1312r-read-temperature-data-thu-i2c

器件型号:CC1312R

您好!

我想从 I2C 的传感器(SHT40)读取温度数据。
我的代码如下所示。

  /* Common I2C transaction setup */
  i2cTransaction.writeBuf   = txBuffer;
  i2cTransaction.writeCount = 1;
  i2cTransaction.readBuf    = rxBuffer;
  i2cTransaction.readCount  = 6;

  i2cTransaction.targetAddress = SHT4X_I2C_ADDR;
  txBuffer[0]                  = 0xfd;

	if (I2C_transfer(i2c, &i2cTransaction))
		{
		uint16_t t_ticks, rh_ticks;
		uint8_t checksum_t, checksum_rh;
		float t_degC, rh_pRH;

		t_ticks = rxBuffer[0] * 256 + rxBuffer[1];
		checksum_t = rxBuffer[2];
		rh_ticks = rxBuffer[3] * 256 + rxBuffer[4];
		checksum_rh = rxBuffer[5];
		t_degC = -45 + 175 * (t_ticks / 65535.);
		rh_pRH = -6 + 125 * (rh_ticks / 65535.);
		if (rh_pRH > 100)
			{
			rh_pRH = 100;
			}
		if (rh_pRH < 0)
			{
			rh_pRH = 0;
			}

		DBG("%f C, %f %%", t_degC, rh_pRH);
		}

但是、无法正确读取。
应读取6个字节。 但 CC1312 仅生成1字节时钟并确实停止运行。   




问题是什么?

Br
保罗

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

    我按如下方式更改了 my 代码。

      /* Common I2C transaction setup */
      i2cTransaction.writeBuf   = txBuffer;
      i2cTransaction.writeCount = 1;
      i2cTransaction.readBuf    = rxBuffer;
      i2cTransaction.readCount  = 0;
    
      i2cTransaction.targetAddress = SHT4X_I2C_ADDR;
      txBuffer[0]                  = 0xfd;
    
    	I2C_transfer(i2c, &i2cTransaction);
    	sleep (1);
    
      i2cTransaction.writeCount = 0;
      i2cTransaction.readCount  = 6;
    
    	if (I2C_transfer(i2c, &i2cTransaction))
    

    我单独的写入和读取命令。
    此外、我在写入命令和读取命令之间插入延迟、

    然后很好地工作。

    Br
    保罗

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

    您好、Paul、  

    很高兴您可以修复它、感谢您共享代码。

    此致
    曼努埃尔