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文件
@@ -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
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文件,该文件保存了采集到的温湿度数据。