上一篇单总线时序分析:https://blog.csdn.net/qq_40215005/article/details/96435251
这是ds18b20驱动大致结构
硬件初始化BYTE ds18b20_reset(void) 复位脉冲和应答脉冲函数
BYTE ds18b20_reset(void)
{
s3c2410_gpio_cfgpin(S3C2410_GPG(0), S3C2410_GPIO_OUTPUT); //设置引脚GPG0为输出
s3c2410_gpio_setpin(S3C2410_GPG(0), LOW); //设置单总线信号为低电平
udelay(480);//产生复位脉冲
s3c2410_gpio_setpin(S3C2410_GPG(0), HIGH); //设置单总线信号为高电平
udelay(60);//从机等待
s3c2410_gpio_cfgpin(S3C2410_GPG(0), S3C2410_GPIO_INPUT);//设置为输入,读取从机发送的信号
if(s3c2410_gpio_getpin(S3C2410_GPG(0))) //判断为低电平就应答成功
{
printk("ds18b20 reset failed.\r\n");
return 1;
}
udelay(240);//保持60~240us时间