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
 };

添加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 

重新編譯內核&測試驅動

完成以上修改配置之後,重新編譯內核並且燒錄到開發板。啓動後在/sys/devices/w1 bus master/28-031604d3fcff目錄下可以看到有 一個w1_slave文件,該文件保存了採集到的溫溼度數據。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章