当前位置: 首页 > news >正文

Linux设备驱动 -- TMP75AIDR驱动移植

查看原理图

TMP75AIDR和RK3568采用I2C通信,使用I2C5。

根据TMP75AIDR芯片手册知道I2C地址是由A0 A1 A2决定的。

此原理图芯片I2C地址是0x48。

内核支持

内核中已经有该芯片的驱动支持,使用的是hwmon子系统实现的驱动。

驱动源码位置:kernel/drivers/hwmon/lm75.c

源码文件中定义了支持的设备:

staticconststructof_device_idlm75_of_match[]={{.compatible="adi,adt75",.data=(void*)adt75},{.compatible="dallas,ds1775",.data=(void*)ds1775},{.compatible="dallas,ds75",.data=(void*)ds75},{.compatible="dallas,ds7505",.data=(void*)ds7505},{.compatible="gmt,g751",.data=(void*)g751},{.compatible="national,lm75",.data=(void*)lm75},{.compatible="national,lm75a",.data=(void*)lm75a},{.compatible="national,lm75b",.data=(void*)lm75b},{.compatible="maxim,max6625",.data=(void*)max6625},{.compatible="maxim,max6626",.data=(void*)max6626},{.compatible="maxim,mcp980x",.data=(void*)mcp980x},{.compatible="st,stds75",.data=(void*)stds75},{.compatible="microchip,tcn75",.data=(void*)tcn75},{.compatible="ti,tmp100",.data=(void*)tmp100},{.compatible="ti,tmp101",.data=(void*)tmp101},{.compatible="ti,tmp105",.data=(void*)tmp105},{.compatible="ti,tmp112",.data=(void*)tmp112},{.compatible="ti,tmp175",.data=(void*)tmp175},{.compatible="ti,tmp275",.data=(void*)tmp275},{.compatible="ti,tmp75",.data=(void*)tmp75},{.compatible="ti,tmp75c",.data=(void*)tmp75c},{},};

驱动通过I2C子系统注册:

staticstructi2c_driverlm75_driver={.class=I2C_CLASS_HWMON,.driver={.name="lm75",.of_match_table=of_match_ptr(lm75_of_match),.pm=LM75_DEV_PM_OPS,},.probe=lm75_probe,.id_table=lm75_ids,.detect=lm75_detect,.address_list=normal_i2c,};module_i2c_driver(lm75_driver);

驱动提供的功能:

  • 温度读取(支持9-12位分辨率)
  • 温度上限设置
  • 温度滞后设置
  • 通过hwmon子系统暴露到用户空间
  • 支持设备树自动探测

配置内核使能支持TMP75AIDR

Device Drivers---><*>Hardware Monitoring support---><*>National Semiconductor LM75 and compatibles

内核配置项,确保其值等于y:

CONFIG_SENSORS_LM75=y

配置选项定义文件:kernel/drivers/hwmon/Kconfig

编写设备树节点

&i2c5{… … tmp75aidr:tmp75@48{compatible=" ti,tmp75";reg=<0x48>;status="okay";};};
  • compatible属性:值必须为ti,tmp75

  • reg属性:设备的i2c地址,根据原理图得知其值是0x48。

  • status值必须是okay,表示已启用。

编写配置好设备树节点,重新编译内核。

用户空间访问

驱动加载后,会在sysfs中生成相应节点,可直接通过如下方式读取温度:

root@M3:~# ls /sys/class/hwmon/hwmon0/device of_node subsystem temp1_max uevent name power temp1_input temp1_max_hyst update_interval# 查看hwmon设备ls/sys/class/hwmon/# 读取温度值cat/sys/class/hwmon/hwmon0/temp1_input temp1_input temp1_max_hyst update_interval# 查看hwmon设备ls/sys/class/hwmon/# 读取温度值cat/sys/class/hwmon/hwmon0/temp1_input
http://www.jsqmd.com/news/584435/

相关文章:

  • 2026年诚信的佛山现代风家具/佛山定制家具稳定供货厂家推荐 - 品牌宣传支持者
  • OpenClaw可视化监控:Qwen3-14B任务执行实时看板搭建
  • JDK-02 | 我为什么越来越喜欢用 Java 的 Text Blocks
  • # 高质量数据集核心问题解析
  • 盈鹏飞T527评估板AHD摄像头实战:从硬件连接到QT界面调试全流程
  • 安装Ubuntu后安装ros一键操作
  • OpenClaw小团队协作:Phi-3-mini-128k-instruct共享技能库的搭建方法
  • Claude Code 创始人再放狠货!15 个隐藏功能曝光
  • ASTM D4169针刺棉手袋的产品有效期验证方案
  • SEO_避开常见SEO误区,让你的优化更高效
  • OpenClaw跨平台配置:Qwen2.5-VL-7B在mac与Windows的对接差异
  • 大数据可视化
  • 【第五周】关键词解释:稀疏自编码器(Sparse Autoencoder,简称 SAE)
  • 一季度书单 | 2026年,你的思维方式,该变了!
  • Bili2text:B站视频转文字终极指南,3步实现高效内容提取
  • 市场知名的光伏项目品牌找哪家
  • 第五天(实习无忧)
  • GNU C扩展特性在Linux内核中的高效应用
  • ZXPInstaller完整指南:Adobe扩展安装的终极解决方案
  • 域名 WHOIS 信息对于 SEO 优化有什么作用
  • 作业04.02
  • MySQL概述
  • 【C++八股】【欧弟求职】左值、右值、右值引用
  • 双模型协作方案:OpenClaw同时接入Phi-3-vision-128k-instruct与Qwen的配置技巧
  • 海南自由贸易港借助“.CN”域名塑造线上专属品牌形象
  • 开了一个新号...
  • 一键部署体验:星图平台OpenClaw镜像+Qwen3.5-9B-AWQ-4bit沙盒测试
  • 2026年知名的佛山极简风家具厂家对比推荐 - 品牌宣传支持者
  • MySQL的基本操作
  • OpenClaw场景合集:Qwen3-4B在10个日常任务中的高效应用