主题中讨论的其它部件: SN74LVC1G07
大家好
我们希望使用MCU GPIO驱动TMP1826 ,但它无法工作。我们使用数据表中推荐的电路对其进行了设置。 它与总线供电应用一起使用。在调试时,我们尝试将上拉电阻从330欧姆~ 11k欧姆调整, 但它仍然不起作用,我们也尝试将MCU改为3.3V类型,但结果仍然一样。 谁可以帮助检查它?
下面是调试代码,请使用CMD: ReadTemperature,ReadROM,但它只回复0xFF,
位Init_DS18B20 (void)
{
位dat=0;
DQ = 1; //DQ 重置
DelayUs2x(5); //延迟
DQ = 0; //驱动器低
Delay500us (); // // 480us < TMP1826 <560us
DelayUs2x (50); //20us
DQ = 1; //上拉
Delay50us();//15~60US
DelayUs2x (50); //20us
DAT=DQ; //检查DQ
DelayUs2x(25);//
DelayUs2x(200);
DelayUs2x(200);
返回dat;
}
无符号char ReadOneChar(void)
{
无符号char i=0;
无符号字符dat =0;
对于(i=8;i>0;i--)
{
DQ = 0;//
Delay3us() ;
dat>=1;
DQ = 1;//
Delay20us() ;
IF (DQ)
{dat|=0x80;}
Delay50us() ;
DQ = 1;
Delay20us() ;
}
返回(dat);
}
void WriteOneChar(unsigned char dat)
{
无符号char i=0;
DQ = 1;
SPower=1;
对于(i=8; i>0; i--)
{
如果(dat&0x01)
{
DQ = 0;
DELAY _5us ();
DQ = 1;
Delay50us();
Delay20us();
}
否则
{
DQ = 0;
Delay20us();
Delay50us();
Delay20us();
}
dat>=1;
DQ = 1;
Delay20us();
}
}
无符号int ReadTemperatureTMP1826(void)
{
无符号字符a=0;
无符号int b=0;
无符号int t=0;
INIT_DS18B20();
WriteOneChar(0xCC);//跳过
WriteOneChar(0x44);//
Delay50ms();
INIT_DS18B20();
WriteOneChar(0xCC);//
WriteOneChar(0xBE);//
a=ReadOneChar();// 低字节
B=ReadOneChar();// 高字节
INIT_DS18B20();
B<<=8;
T=a+b;
返回(t);
}
/*------------------
读取ROM 64位ID
---------------- */
void ReadROM (void)
{
无符号char i=0;
DelayUs2x(100);
INIT_DS18B20();
WriteOneChar(0x33);//
对于(i=0;i<8;i++)
{
buf[i]=ReadOneChar();
}
}