TI中文支持网
TI专业的中文技术问题搜集分享网站

用stm32f103通过模拟IIC方式读取TMP116的温度,为什么tmp116无应答?

Other Parts Discussed in Thread:TMP116

用stm32f103通过模拟IIC方式读取TMP116的温度,为什么tmp116无应答?用示波器看,应答波形都是这样斜的尖峰。这段模拟IIC程序我在别的程序上验证是通过的,为什么在TMP116上会出错呢?

Kailyn Chen:

您好,TMP116 的从机地址写的什么?
用stm32f103模拟I2C, 是GPIO模拟的吗, GPIO 是否内部已经上拉? 这样的话TMP116 的I2C 外部就无需上拉了。

,

user6252951:

TMP116从机地址是(0x48<<1)=0x90(写地址),读地址是0x91.GPIO是模拟的,内部已上拉,这部分代码如下:void IIC_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2);
}
void SDA_IN(void)
{GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void SDA_OUT(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);
}
现在我就用stm32f103的四根线连接的tmp116(此部分使用的是从TMP116评估板折下来的那部分),3.3v,GND,SCL和SDA(外部没有上拉电阻)。请问我这样做有错误吗?如果没有错误,为什么应答一直是高电平呢?

,

Kailyn Chen:

您好, 四根线接TMP116 是不对的吧,还有ADD0 是决定地址的引脚, 那么0X90的话,就是ADD0 接到GND上的地址。 改下将其接到VCC上验证下是否还是没有应答信号?或者看下是否焊接方面的问题,因为程序在其他程序上可以通过便不是程序的问题。
另外,接线不会太长吧?

,

user6252951:

您好,现在有一些TMP116的电路板我已经读到了温度,但是有一个芯片一直读到的数据是0X19FF,读别的寄存器数据也0x3FF,0X1FF,等等。这会跟什么有关系呢?

焊接会影响这个吗?

赞(0)
未经允许不得转载:TI中文支持网 » 用stm32f103通过模拟IIC方式读取TMP116的温度,为什么tmp116无应答?
分享到: 更多 (0)