基于Linux的温度传感器DS18B20驱动程序设计

本文介绍了如何在Linux操作系统下设计DS18B20数字温度传感器的驱动程序。DS18B20以其高精度和简单硬件接口成为嵌入式系统中温度测量的理想选择。文章详细讲解了Linux设备驱动的基本概念,DS18B20的结构和工作原理,以及驱动程序的实现,包括复位、写入和读取字节的程序代码。实验证明,驱动成功加载到Linux内核并能实时显示温度值。
摘要由CSDN通过智能技术生成

http://www.doc88.com/p-91977568539.html

 

传统的模拟温度测量抗干扰能力差,放大电路零点漂移大,导致测量值误差大,难以达到所需精度。在实际应用中,采用抗干扰能力强的数字温度传感器是解决上述问题的有效办法。

  DS18B20是Dallas公司生产的数字温度传感器,具有体积小、适用电压宽、经济灵活的特点。它内部使用了onboard专利技术,全部传感元件及转换电路集成在一个形如三极管集成电路内。DS18B20有电源线、地线及数据线3根引脚线,工作电压范围为3~5.5 V,支持单总线接口。

  准确的温度测量是很多嵌入式系统中重要的一点。在Linux操作系统下使用数字温度传感器DS18B20,不仅可以得到高精度的温度测量值,而且硬件简单可靠。

MLX90614红外温度传感器_linux驱动源码,已经在产品中使用过。android 6.0 ,内核版本为3.4.39,可以做为你的学习设计参考。 #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h> #include <linux/moduleparam.h> #include <linux/delay.h> #include <linux/fs.h> #include <linux/timer.h> #include <linux/ioctl.h> #include <linux/gpio.h>//__gpio_set_value #include <mach/sys_config.h>//script_item_u #include <linux/pinctrl/consumer.h>//pin_config_set #include <linux/pinctrl/pinconf-sunxi.h>//SUNXI_PINCFG_TYPE_* #include <linux/io.h> #include <mach/sys_config.h> #include <mach/platform.h> #include <linux/slab.h> #define ACK 0 #define NACK 1 #define SA 0x5a //Slave address 单个MLX90614时地址为0x00,多个时地址默认为0x5a #define RAM_ACCESS 0x00 //RAM access command #define EEPROM_ACCESS 0x20 //EEPROM access command #define RAM_TOBJ1 0x07 //To1 address in the eeprom #define RAM_TOBJ2 0x08 #define RAM_TA 0x06 #define DEVICE_NAME "mlx90614" //struct gpio_config { // u32 gpio; /* gpio global index, must be unique */ // u32 mul_sel; /* multi sel val: 0 - input, 1 - output... */ // u32 pull; /* pull val: 0 - pull up/down disable, 1 - pull up... */ // u32 drv_level; /* driver level val: 0 - level 0, 1 - level 1... */ // u32 data; /* data val: 0 - low, 1 - high, only vaild when mul_sel is input/output */ //}; #define SCL_NAME "sensor_sck" #define SDA_NAME "sensor_sda" struct gpio_func_desc { unsigned short pin; char *name; }; struct gpio_func_desc SCLK ={0,SCL_NAME};//蓝色 struct gpio_func_desc SDIN ={0,SDA_NAME};//白色 struct gpio_config *sclk_gpio_p = NULL; struct gpio_config *sdin_gpio_p = NULL; void SMBus_StartBit(void); void SMBus_StopBit(void);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值