Linux内核对于各种外设支持非常好,内核已经集成了大部分驱动,DS18B20属于单总线设备,在内核的驱动代码目录(drivers/w1/)下有专门的单总线设备驱动,我们只需要对其稍作修改就能使用。
Dallas 1-wires是Dallas公司的单总线设备,DS18B20(温湿度传感器)就是其中最具代表的设备,只用一根总线与cpu进行通信并且实现数据传输。具有体积小、适用电压宽、经济灵活的特点。它内部使用了onboard专利技术,全部传感元件及转换电路集成在一个形如三极管的集成电路内。DS18B20有电源线、地线及数据线3根引脚线,工作电压范围为3~5.5 V,支持单总线接口
1.修改配置文件
(1)添加头文件
(2)添加ds18b20设备结构体
(3)将ds18b20 设备结构体加入主设备结构体
2.make menuconfig选项
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
3.重新编译内核&测试驱动
重新编译内核后,烧录开发板,
启动后在/sys/devices/w1 bus master/28-031604d692ff目录下可以看到有 一个w1_slave文件,该文件保存了采集到的温湿度数据。
检测到此时温度为27.125℃。