FL2440添加DS18B20驱动

FL2440添加DS18B20驱动

Linux内核对于各种外设支持非常好,内核已经集成了大部分驱动,DS18B20属于单总线设备,在内核的驱动代码目录(drivers/w1/)下有专门的单总线设备驱动,我们只需要对其稍作修改就能使用。

Dallas 1-wires是Dallas公司的单总线设备,DS18B20(温湿度传感器)就是其中最具代表的设备,只用一根总线与cpu进行通信并且实现数据传输。具有体积小、适用电压宽、经济灵活的特点。它内部使用了onboard专利技术,全部传感元件及转换电路集成在一个形如三极管的集成电路内。DS18B20有电源线、地线及数据线3根引脚线,工作电压范围为3~5.5 V,支持单总线接口。

在mach-smdk2440.c中添加对设备DS18B20的支持

在 arch/arm/mach-s3c2440/mach-smdk2440.c文件中添加以下代码 
下面是添加DS18B20支持后的patch文件

--- ../linux-3.0.1/arch/arm/mach-s3c2440/mach-smdk2440.c    2011-08-05 12:59:21.000000000 +0800
+++ arch/arm/mach-s3c2440/mach-smdk2440.c   2017-04-23 13:42:37.177734860 +0800 
@@ -13,6 +13,9 @@
  *
 */

+#include <linux/gpio.h>
+#include <linux/w1-gpio.h>

@@ -102,6 +161,35 @@
    }
 };
+/* DS18B20 added by liwanneng 2017-4-23 13:12:47 */
+static void w1_enable_external_pullup(int enable) 
+{
+    if(enable)  
+    {
+        s3c_gpio_setpull(S3C2410_GPG(0), S3C_GPIO_PULL_UP); 
+    }
+    else
+    {
+        s3c_gpio_setpull(S3C2410_GPG(0), S3C_GPIO_PULL_NONE); 
+    }
+}
+
+static struct w1_gpio_platform_data ds18b20_w1_gpio = {
+    .pin = S3C2410_GPG(0),
+    .is_open_drain = 0, 
+    .enable_external_pullup = w1_enable_external_pullup,  
+};
+static struct platform_device s3c_ds18b20_device = {
+    .name     = "w1-gpio", 
+    .id       = -1,
+    .dev      = {
+        .platform_data  = &ds18b20_w1_gpio,
+    },
+};

@@ -146,29 +234,90 @@
    .gpdup_mask = 0xffffffff,
 #endif
static struct platform_device *smdk2440_devices[] __initdata = {
    &s3c_device_ohci,
    &s3c_device_lcd,
    &s3c_device_wdt,
    &s3c_device_i2c0,
    &s3c_device_iis,
   &s3c_device_dm9000,
+    &s3c_ds18b20_device,/*add ds18b20 device by liwanneng*/
    &s3c_device_sdi,/*  suport SD card device,Add by liwannneg 2017-4-16 12:38:35 */
#ifdef CONFIG_KEYBOARD_GPIO 
    &s3c2440_button_device,/*  add fl2440 button to kernel by liwanneng 2017-4-20 15:19:21 */
#endif
 };
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

添加mak menuocnfig 配置

 Device Drivers  --->
         <*> Dallas's 1-wire support  --->   
                    [*]   Userspace communication over connector
                          1-wire Bus Masters  --->  
                                 <*> GPIO 1-wire busmaster   
                          1-wire Slaves  ---> 
                                 <*> Thermal family implementation 
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重新编译内核&测试驱动

完成以上修改配置之后,重新编译内核并且烧录到开发板。启动后在/sys/devices/w1 bus master/28-031604d3fcff目录下可以看到有 一个w1_slave文件,该文件保存了采集到的温湿度数据。 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值