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.

[参考译文] TMP103EVM:不带 USB 的温度数据

Guru**** 2589300 points
Other Parts Discussed in Thread: TMP103

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/657364/tmp103evm-temperature-data-without-usb

器件型号:TMP103EVM
主题中讨论的其他器件:TMP103

您好!

我想从 EVM 获取温度数据。 我看到引脚1是 SCL、引脚3是 SDA、引脚8是接地、哪个引脚是 Vcc? 我想使用 I2C 协议访问温度数据。

此致、

曼诺伊

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

    是否可以仅访问8个可用传感器中的一个温度传感器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manoj、

    SM-USB-DIG 连接器的引脚6为 Vcc。

    每个传感器都有一个唯一的 I2C 地址。 即使您连接了所有这些设备、您也可以单独与它们交互。 这将像 I2C 标准那样正常发生。 多器件访问(MDA)是我们在正常 I2C 行为基础上添加的一项特殊功能。 您无需使用它。

    如果出于某种原因您不想连接所有器件、您可以移除器件本身或将其连接到总线的串联电阻器。 请参阅原理图:
    www.ti.com/.../sbor013.pdf

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

    任您好!

    我使用了 TIDA 00217示例中的驱动程序函数。 temp_I2C_Init()和 Temp_read()是使用的两个函数。 我在 main()中调用 Temp_read()。 但我陷入了困境

    void Temp_I2C_Init (void){

    //为 I2C 配置 eUSCI

    UCB0CTL1 |= UCSWRST;//软件复位被启用

    UCB0CTLW0 |= UCMODE_3 + UCMST + UCSYNC + UCTR;//I2C 模式、主模式、同步、发送器

    UCB0CTLW0 |= UCSSEL_2;// SMCLK = 8MHz

    UCB0BRW = 30;//波特率= SMLK/40 = 200kHz

    UCB0I2CSA = TMP103_I2C_ADDR;

    UCB0CTL1 &=~UCSWRST;

    void Temp_read (void){

    temp_I2C_Init();

    UCB0CTL1 |= UCSWRST;

    UCB0CTLW1 = UCASTP_2;//生成停止条件。

    UCB0TBCNT = 0x0001;

    UCB0CTL1 &=~UCSWRST;

    UCB0CTL1 |= UCTXSTT + UCTR;//开始 i2c 写入操作

    while (!(UCB0IFG & UCTXIFG0));

    UCB0TXBUF = TEMP_REG;

    while (!(UCB0IFG 和 UCBCNTIFG));

    UCB0CTL1 &=~UCTR;

    UCB0CTL1 |= UCTXSTT;//重复启动

    UCB0CTLW0 |= UCTXSTP;//在下一个 RX 字节后发送 STOP

    while (!(UCB0IFG & UCRXIFG0));

    G_TempDataCel = UCB0RXBUF;

    while (!(UCB0IFG & UCSTPIFG));//确保发送了停止条件

    UCB0CTL1 |= UCSWRST;

    G_TempDataFahr =(g_TempDataCel*9)/5.0+32;

    当我调试该程序时、我会被卡在以下行中。

    UCB0CTL1 |= UCTXSTT + UCTR;//开始 i2c 写入操作

    while (!(UCB0IFG & UCTXIFG0));

    我想这意味着传感器未通电或总线未激活?

    此致、

    曼诺伊

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

    我错误地连接了 SCL 和 SDA。 现在、我能够单独访问温度值。

    此致、
    曼诺伊