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%
-------------------------------------------仅此记录-----------------------------------------