linux添加sht3x温湿度传感器驱动记录

这篇具有很好参考价值的文章主要介绍了linux添加sht3x温湿度传感器驱动记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       最近拿到一块imx6ull板子,上面有一颗温湿度传感器sht30,需要读取其数值。本人能力有限,自己写驱动还有一点困难,好在 linux内核里自带了很多器件的驱动,只需要找到相关的驱动文件根据要求修改一下设备树、添加进内核里编译就可以。

        目前新版本的linux都支持设备树,刚开始我认为只要找到内核里的相关驱动文件,根据匹配表里的属性添加好设备树就可以了。万万没想到,linux内核自带的sht3x驱动竟然不支持设备树,支持直接name比对,那就只能根据要求添加i2c_board_info信息了。

        内核自带的驱动文件是kernel/drivers/hwmon/sht3x.c,打开文件找到如下位置:

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        该驱动支持两款温湿度传感器,我的板子上的是sht30,连接在i2c1接口,设备地址为0x44,所以添加i2c_board_info信息如下:

static struct i2c_board_info sht3x_i2c_board_info __initdata = {
		I2C_BOARD_INFO("sht3x", 0x44),
  };

        光添加了i2c_board_info信息还不够,还需要实例化i2c设备,根据sht3x驱动文档kernel/Documentation/hwmon/sht3x.rst介绍,

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        实例化方法需要参考kernel/Documentation/i2c/instantiating-devices.rst文档介绍,这个文档里介绍了多种实例化i2c接口的方法,经过测试有的方法不适用,我用了Method 2: Instantiate the devices explicitly。

        需要在init函数中实例化,代码如下:

static int __init sht3x_init(void)
{
	int ret = 0;
	struct i2c_adapter *adapter;
	adapter = i2c_get_adapter(0);
	i2c_new_client_device(adapter,&sht3x_i2c_board_info);
	ret = i2c_add_driver(&sht3x_i2c_driver);
	return ret;
}

        支持设备驱动文件部分就修改好了,接下来就是如何让这个驱动编译到内核了。打开驱动目录下的Makefile文件,如下:

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        通过文件可以知道要想编译sht3x驱动到内核里就需要让CONFIG_SENSORS_SHT3x编程y。所以有两种方法:

        1.修改makefile文件,直接将CONFIG_SENSORS_SHT3x改成y,然后make一下,用新生成的zImage文件启动就可以了;

        2.改配置文件,可以通过menuconfig修改

        linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        选中SHT3x这个选项,保存后重新make,用新生成的zImage文件启动就可以了。

        或者打开.config文件进行修改,修改如下:

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        保存退出后重新make,用新生成的zImage文件启动就可以了。

好了,到此,SHT30驱动就添加成功了,可以直接通过hwmon进行读取数据了,文件在/sys/class/hwmon/,进去后会发现里面会有hwmon0  hwmon1 hwmon2等文件

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        可以通过ls -l命令查看详情,根据器件地址找到相应的器件驱动对应的文件,如下:

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        由上图可以知道sht3x的驱动对应的文件是hwmon1,进入hwmon1文件里可以看到很多属性文件,如下:

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        具体每一个属性对应的啥意思可以参考kernel/Documentation/hwmon/sht3x.rst具体介绍

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        可以通过cat指令一个一个参看相关属性的数值。

linux添加sht3x温湿度传感器驱动记录,Linux,linux,驱动,kernel

        温度为29.362度。

        其他的属性自己去探索吧。文章来源地址https://www.toymoban.com/news/detail-684264.html

到了这里,关于linux添加sht3x温湿度传感器驱动记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32-硬件IIC读取温湿度传感器SHT30

    esp32 使用硬件I2C读取温湿度传感器SHT30,例程基于 EDP-IDF-4.4.X 的I2C Simple Example 例程修改 打开 VSCODE ,通过 查看-- 命令面板(快捷键Ctrl+Shift+P),打开 ESP-IDF 的例程后,选择 i2c_simple 例程,点击 Create project using example i2c_simple,选择自己要存储的目录。【PS:工程的目录不要有中文路

    2024年02月02日
    浏览(39)
  • IIC学习之SHT30温湿度传感器(基于STM32)

    附上SHT30资料和逻辑分析仪源文件,点击下载 关于IIC的介绍网上已经非常详尽,这里只说重点: 双线(SDA,SCL),半双工 采用主从结构,支持一主多从,通过地址寻址,每个I2C设备都有唯一的7位或10位地址,还有1bit选择读写(0为写,1为读) 速率较低,I2C总线支持多种通信

    2024年02月01日
    浏览(43)
  • STM32Cubemxhal库硬件IIC驱动SHT40温湿度传感器

    STM32cubemx配置硬件IIC如图所示  SHT40的驱动代码 注意:在读sht40的寄存器之后一定要加10几个ms的延时

    2024年02月12日
    浏览(37)
  • STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印

    目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 软件IIC引脚配置 2.3 串口外设配置  2.4 项目生成  3、KEIL端程序整合 3.1 串口重映射 3.2 SHT30驱动添加 3.3 主函数代 3.4 效果展示 本文通过STM32F103C8T6单片机通过HAL库方式对SHT30传感器进行数据的读取,并

    2024年02月16日
    浏览(40)
  • STM32物联网项目-SHT30温湿度采集(IIC通信)

    SHT30数字温湿度传感器 SHT3x湿度传感器系列包括低成本版本SHT30、标准版本SHT31,以及高端版本SHT35。 SHT3x湿度传感器系列结合了多种功能和各种接口(I2C、模拟电压输出),应用友好,工作电压范围宽(2.15至5.5 V),适合各类应用。 SHT3x建立在全新和优化的CMOSens® 芯片之上,

    2023年04月21日
    浏览(37)
  • STM32之模拟IIC总线控制SHT20温湿度芯片

    一、IIC总线概述 1、IIC总线介绍 I2C (Inter-Integrated Circuit)总线产生于在80年代, 由PHILIPS公司开发的 两线式串行总线 ,用于连接微控制器及其外围设备, 最初为音频和视频设备开发。I2C总线两线制包括: 串行数据 SDA (Serial Data)、 串行时钟 SCL (Serial Clock)。时钟线必须由主

    2024年02月02日
    浏览(36)
  • arm学习-IIC总线连接温湿度传感器测量温湿度(si7006)

    main.c iic.h si7006.h iic.c si7006.c

    2024年02月13日
    浏览(52)
  • I2C协议介绍以及HAL库实现I2C对SHT30温湿度采样

    (1)I2C协议简介 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。 12C Bus(IIC, Inter-Integrated Circuit Bus)是由一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步,利用上拉电阻将它们拉成高电平(表示总

    2023年04月24日
    浏览(63)
  • DHT11温湿度传感器学习

     DHT11温湿度传感器共有四个引脚 1个VCC高电平,1个GND接地低电平,1个数据输出引脚,一个空引脚 工作时候,通过out引脚可以向传感器传递应答信号并返回40位的温湿度数据,也就是5个字节 前2个字节表示温度的整数位和小数位,后面两个字节是湿度的整数位和小数位,最后

    2024年02月07日
    浏览(66)
  • 温湿度传感器DHT11介绍

    温湿度传感器DHT11简介       DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度数字温湿度传感器 。DHT11 数字温湿度传感器应用温湿度传感技术和数字采集技术,确保其具有极高的可靠性和卓越的长期稳定性。       DHT11 数字温湿度传感器内置一个电阻式

    2023年04月22日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包