目录
首先我用的是一块STM32F103VCT6
复位脉冲和应答脉冲
将总线切换为输出模式,主机先拉低电平480us,再拉高15~60us,我直接拉高60us,将总线切换为输入模式,读取ds18b20的应答,设置延时为240us,没超时的话最后切换为输出模式,拉高总线。
uint8_t DS18B20_Rst(void)
{
uint8_t retry=0;
DS18B20_IO_OUT(); //设置为输出
W1DQ_Write(0); //拉低DQ
delay_us(480); //拉480us
W1DQ_Write(1); //DQ=1
delay_us(60); //60US
DS18B20_IO_IN(); //设置为输入
//等待ds18b20回应
while (!W1DQ_Read()&&retry<240)
{
retry++;
delay_us(1);
};
if(retry>=200)
return -1;
else
retry=0;
DS18B20_IO_OUT();
W1DQ_Write(1);
delay_us(240);
return retry;
}