首页 > 其他分享 >S3C2440 温度传感器ds18b20的焊接测试

S3C2440 温度传感器ds18b20的焊接测试

时间:2022-10-18 17:07:22浏览次数:56  
标签:温度传感器 ds18b20 platform device w1 驱动 S3C2440 gpio


=================================================================================================

因为Linux内核3.0自带Dallas 1-wires设备驱动,路径为:drivers/w1,所以在写驱动之前我首先进行了内核自带的单总线设备通用驱动移植(其实主要原因是温度传感器是我自己刚刚焊接上去的,想确认下其能否正常工作);此类驱动为Master/Slave模式:Master目录下为主控制器驱动,我们用到的是w1-gpio.c;Slave目录下是从设备驱动,我们使用的DS18B20属于温度传感器,所以使用w1_therm.c这个驱动。w1-gpio.c是单总线的IO操作方法,用于模拟单总线时序;w1_therm.c是DS18B20的内部操作方法(读写寄存器),和IO时序无关;我们可以将驱动结构看成是将“w1_therm”挂接到“w1-gpio”总线上,由w1-gpio控制w1_therm工作

=====================================================================================

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

[leiyuxing@centos6 linux-3.0]$ vim ./arch/arm/mach-s3c2440/mach-smdk2440.c
246 #include <linux/w1-gpio.h>//加入w1-gpio.h头文件,以使用w1_gpio_platform_data结构体
247 #if 1
248 /* DS1820B add by leiyuxing 2016.8.22*/
249 static void w1_enable_external_pullup(int enable)
250 {
251 if(enable)
252 s3c_gpio_setpull(S3C2410_GPG(0), S3C_GPIO_PULL_UP);
253 else
254 s3c_gpio_setpull(S3C2410_GPG(0), S3C_GPIO_PULL_NONE);
255 }
256
257
258 static struct w1_gpio_platform_data ds18b20_w1_gpio = {
259 .pin = S3C2410_GPG(0),
260 .is_open_drain = 0,
261 .enable_external_pullup = w1_enable_external_pullup,
262 };
263
264
265 static struct platform_device s3c_ds18b20_device ={
266 .name = "w1-gpio",
267 .id = -1,
268 .dev = {
269 .platform_data = &ds18b20_w1_gpio,
270 },
271 };
272 #endif
273 static struct platform_device *smdk2440_devices[] __initdata = {
........
........
288 &s3c_ds18b20_device,//add by leiyuxing 2016.8.22
};

切记!!一定要把 platform_device s3c_ds18b20_device 的这些结构体定义放在smdk2440_devices前,否则编译时会一直出现未声明的错误!!!

 

 

S3C2440 温度传感器ds18b20的焊接测试_单总线

说明:设备名称是“w1-gpio”,这个和w1-gpio.c驱动中的驱动名称一致,才能注册这个设备驱动。通过FL2440开发板底板原理图可以看到只用到了GPG(0)这个管脚。

 

S3C2440 温度传感器ds18b20的焊接测试_温度传感器_02


好了我们接下来配置内核,支持W1-gpio和ds18b20驱动:

S3C2440 温度传感器ds18b20的焊接测试_3c_03

重新编译内核并在开发板上更新内核,启动target,便可以测试温度了:

 

S3C2440 温度传感器ds18b20的焊接测试_3c_04

S3C2440 温度传感器ds18b20的焊接测试_温度传感器_05

 

当时测试到温度的时候发现室温有点高,特意去看了下空调,原来空调制冷模式开错了,哈哈!

但做这么多真正的意义在于我焊接的温度传感器是可以工作的,排除了硬件上的问题我就可以放心地写代码测试了!!

标签:温度传感器,ds18b20,platform,device,w1,驱动,S3C2440,gpio
From: https://blog.51cto.com/u_15834920/5767594

相关文章

  • s3c2440 RTC(实时时钟) 驱动移植
     ———————————————————————————————————————主机操作系统:Centos6.7交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台:FL2440 Lin......
  • s3c2440 lcd驱动移植
     ———————————————————————————————————————主机操作系统:Centos6.7交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台:FL2440 Lin......
  • 光纤温度传感器在电力系统的应用
    温度是电力设备的重要运行参数,通过监测电力设备温度信息获取电力设备的运行状况是电力系统故障预报与诊断的研究热点,研究内容包括各种新型的温度传感器的应用、电力设备的故......
  • 周立功DTU+温度传感器,ZWS物联网平台尝试
    1.前言了解到周立功有相关的物联网云平台,近期在调研动态环境监控项目,可以进行一个上云的尝试。购置了传感器、周立功的DTU等硬件,将传感器的温度、湿度等数据进行一个云平......
  • #打卡不停更#【FFH】OpenHarmony设备开发(六)-红外温度传感器
    前言最近的一个项目需要用到红外温度传感器,便想着能不能在Hi3861上开发这个外设,经过摸索了一阵子,终于把红外温度传感器简单的开起来了,后面还会追加对传感器的使用。本次使......
  • DS18B20调试历程
    时间戳:2022-8-24 在使用cubemx时debug配置出错,导致系统无法再次烧录,查阅资料后将BOOT0由0->1,之后可以正常烧录。 时间戳:2022-08-26 解决了整体的通信时序问题,通过......
  • ubuntu18 : QEMU中新建S3C2440模拟器
    1.下载wgethttp://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz2.解压tar-zxvfHEAD.tar.gz cdmini2440-HEAD-18b91f23.安装依赖包sudoapt-getinstal......