hwmon – 硬件监控芯片驱动,监控类传感器的芯片驱动
linux hwmon框架,专门用来检测一些传感器参数,非常完善的框架。可用于读取cpu温度、外部电压参数等。

本节验证基于树莓派zero

  • SHTC1 or SHTC3
    i2c接口温湿度传感器
    在这里插入图片描述
  • i2c设备地址:0x70
    在这里插入图片描述

linux kenrel中hwmon驱动已经实现了shtc1的驱动代码。可以直接使用
drivers\hwmon\shtc1.c
其他i2c设备驱动,完全可以参照shtc1.c进行设计

1、配置linux,打开shtc1模块

  │ Symbol: SENSORS_SHTC1 [=m]                                              │  
  │ Type  : tristate                                                        │  
  │ Prompt: Sensiron humidity and temperature sensors. SHTC1 and compat.    │  
  │   Location:                                                             │  
  │     -> Device Drivers                                                   │  
  │ (1)   -> Hardware Monitoring support (HWMON [=m])                       │  
  │   Defined at drivers/hwmon/Kconfig:1376                                 │  
  │   Depends on: HWMON [=m] && I2C [=y]

2、设备树增加 shtc1节点,挂在在i2c1下面,对应的reg即设备地址0x70

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
	clock-frequency = <100000>;

	// eric++
	status = "okay";
	shtc1@70 {
		compatible = "shtc1";
		reg = <0x70>;
		status = "okay";
	};
};

3、编译验证
查看现有hwmon设备

[root@buildroot /]#find -name hwmon*
./sys/devices/platform/soc/soc:firmware/raspberrypi-hwmon/hwmon
./sys/devices/platform/soc/soc:firmware/raspberrypi-hwmon/hwmon/hwmon0
./sys/class/hwmon
./sys/class/hwmon/hwmon0
./sys/module/hwmon
./lib/modules/4.19.97/kernel/drivers/hwmon
./lib/modules/4.19.97/kernel/drivers/hwmon/hwmon.ko
[root@buildroot /]#

加载shtc1模块后,多出一个hwmon1

[root@buildroot /]#modprobe shtc1
[root@buildroot /]#find -name hwmon*
./sys/devices/platform/soc/soc:firmware/raspberrypi-hwmon/hwmon
./sys/devices/platform/soc/soc:firmware/raspberrypi-hwmon/hwmon/hwmon0
./sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon
./sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1
./sys/class/hwmon
./sys/class/hwmon/hwmon0
./sys/class/hwmon/hwmon1
./sys/module/hwmon
./lib/modules/4.19.97/kernel/drivers/hwmon
./lib/modules/4.19.97/kernel/drivers/hwmon/hwmon.ko

进入目录./sys/class/hwmon/hwmon1,查看name,对应的就是刚刚创建的shtc1设备

[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#ls
device           name             power            temp1_input
humidity1_input  of_node          subsystem        uevent
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat name
shtc1

4、读取温度和湿度


[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat temp1_input
25896
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat temp1_input
25885
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat temp1_input
25877
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat temp1_input
25896
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat temp1_input
25930

温度:25.8

[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat humidity1_input
79748
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat humidity1_input
79742
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat humidity1_input
79733
[root@buildroot /sys/devices/platform/soc/20804000.i2c/i2c-1/1-0070/hwmon/hwmon1]#cat humidity1_input
79736

湿度:79.7%

-------------------------------------------仅此记录-----------------------------------------

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐