嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 5857|回复: 1

求帮助——DS18B20驱动

[复制链接]

该用户从未签到

14

主题

31

帖子

188

积分

注册会员

Rank: 2

积分
188
QQ
发表于 2015-8-9 10:41:05 | 显示全部楼层 |阅读模式
情况描述
硬件环境:
Tiny4412开发板,Samsung Exynos4412(ARM-Cortex A9四核)主控;
DS18B20连接在GPX3_5引脚,已通过电平转换芯片将1.8v电平转换为3.3v(双工),实际测量,VCC:3.27v, IO高电平:3.25v。
软件环境:
Linux3.5内核(别告诉我奇数版本号不稳定,现在已经不这么区分稳定版与开发版了);
DS18B20驱动时序已在MCS51与STM32上验证通过。
症状:
调用DS18B20初始化函数,可以成功,即使拔下DS18B20,竟然也能成功返回(代码见下文),这点不太理解,所以做了IO口测试:
      把DS18B20的DQ引脚与VCC短接,初始化函数返回错误,与GND短接,初始化返回错误,这可能表示IO口经过电平转换后,是可以被“读取”的;
      直接给IO口输出高电平,测量值为3.25v~3.26v,这可能表示IO口经过电平转换后,是可以输出的。
使用cat /proc/DS18B20命令,看到的数据依然很乱,当接入DS18B20时,数值多为0,1等比较小的数,拔下DS18b20,数值多为较大的,包括负数,这可能说明,DS18B20与板子的连接可能正确(焊上的)。
      在proc_ds_read函数中加上printk进行调试发现,执行1次上述cat命令,proc_ds_read函数会被调用3到6次左右。
      尝试在proc_ds_read函数体内加自旋锁,然并卵啊……

下面是我的代码。
ds18b20.c :


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?现在注册

x
回复

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2015-8-10 08:42:10 | 显示全部楼层
    没有写过LINUX驱动啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2025-5-1 17:36 , Processed in 0.022256 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表