主题 : 基于s3c2440的ds18b20数据采集 复制链接 | 浏览器收藏 | 打印
在生活中披荆斩棘~
级别: 新手上路
UID: 63295
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-17
最后登录: 2012-07-03
楼主  发表于: 2012-05-13 10:32

 基于s3c2440的ds18b20数据采集

我用的linux-2.6.32.2内核版本  写的驱动程序 采用动态加载模块的方式 但是,运行时总显示复位失败,然后显示当前温度是4000多度。显然是复位函数部分的错误,可是我改了好几次也没通过,在这求各位大侠帮忙看一下程序,小弟不胜感谢。

我的ds18b20的复位程序:
unsigned char reset (void)
{
        
        DQ_OUTPUT;

        s3c2410_gpio_pullup(DQ,0);
        
        s3c2410_gpio_setpin(DQ,1);
        udelay(100);
                
        s3c2410_gpio_setpin(DQ,0);
        udelay(540);
        
        s3c2410_gpio_setpin(DQ,1);
        udelay(70);
        
        DQ_INPUT;
        
        if(s3c2410_gpio_getpin(DQ))
        {
        printk("DS18B20 reset failed.\r\n");
        udelay(500);
        return 1;
        }
        udelay(500);
        DQ_OUTPUT;
        s3c2410_gpio_pullup(DQ,0);
        s3c2410_gpio_setpin(DQ,1);
        return 0;
}