主题中讨论的其他器件:TMP103
您好!
我想从 EVM 获取温度数据。 我看到引脚1是 SCL、引脚3是 SDA、引脚8是接地、哪个引脚是 Vcc? 我想使用 I2C 协议访问温度数据。
此致、
曼诺伊
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.
任您好!
我使用了 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));
我想这意味着传感器未通电或总线未激活?
此致、
曼诺伊