I.MX6 SHT20 Linux 驱动移植

简介: /*********************************************************************** * I.MX6 SHT20 Linux 驱动移植 * 说明: * 本来打算使用SHT10来做湿度检测,发现其并不是I2C接口,当然也使用 * GPIO能获取到相关数据了,不过由于不小心将其烧坏了,所以换成SHT20。
/***********************************************************************
 *                     I.MX6 SHT20 Linux 驱动移植 
 * 说明:
 *     本来打算使用SHT10来做湿度检测,发现其并不是I2C接口,当然也使用
 * GPIO能获取到相关数据了,不过由于不小心将其烧坏了,所以换成SHT20。
 *
 *                                     2016-10-10 深圳 南山平山村 曾剑锋
 **********************************************************************/


一、参考驱动:
    Android_Native_Service_SHT20Demo
        https://github.com/HowardLin/Android_Native_Service_SHT20Demo/blob/master/SHT20_Module_1.2/sht20_driver/sht20.c#L126

二、驱动修改:
    static s32 sht20_get_id(struct i2c_client *client, u8 serial[8])
    {
        s32 result;
        u8 serialA[8];
        u8 serialB[6];
    
        u8 command1[2] = {0xFA, 0x0F}; /* Read from memory location 1 */
        u8 command2[2] = {0xFC, 0xC9}; /* Read from memory location 2 */
    
        struct i2c_msg get_serial_number_msg1[2] = {
            {
                .addr = client->addr,
                .flags = ~I2C_M_RD,
                .len = 2,
                .buf = command1,
            },
            {
                .addr = client->addr,
                .flags = I2C_M_RD,
                .len = 8,
                .buf = serialA,
            },
        };
        result = i2c_transfer(client->adapter, get_serial_number_msg1, 2);

        struct i2c_msg get_serial_number_msg2[2] = {
            {
                .addr = client->addr,
                .flags = ~I2C_M_RD,
                .len = 2,
                .buf = command2,
            },
            {
                .addr = client->addr,
                .flags = I2C_M_RD,
                .len = 6,
                .buf = serialB,
            }
        };
        result = i2c_transfer(client->adapter, get_serial_number_msg2, 2);
    
        // printk(KERN_INFO "%x %x %x %x %x %x %x %x", serialB[3], serialB[4], serialA[0], serialA[2], serialA[4], serialA[6], serialB[0], serialB[1]);
        
        serial[0] = serialB[3];
        serial[1] = serialB[4];
        serial[2] = serialA[0];
        serial[3] = serialA[2];
        serial[4] = serialA[4];
        serial[5] = serialA[6];
        serial[6] = serialB[0];
        serial[7] = serialB[1];
        
        return result;
    }

 

目录
相关文章
|
Linux Perl
I.MX6 Linux 自动获取AR1020 event input节点
/*********************************************************************** * I.MX6 Linux 自动获取AR1020 event input节点 * 说明: * 本文主要记录如何自动获取AR1020 SPI电阻Touch产生的设备节点。
659 0
|
Linux Shell
I.MX6 Linux udev porting
/*********************************************************************** * I.MX6 Linux udev porting * 声明: * 在嵌入式产品上,我们可以使用mdev来解决热插拔的问题,同时也经常看到 * udev,所以尝试来移植一下,但是最终发现她会丢失内核阶段产生的uevent, * 这导致无法生成内核阶段产生的设备节点,目前采用了mdev来做完成内核阶段的 * 设备节点生成,之后使用udev完成热插拔,这个问题后续有空再解决。
2187 0
|
Linux Shell Perl
I.MX6 linux Qt 同时支持Touch、mouse
/***************************************************************************** * I.MX6 linux Qt 同时支持Touch、mouse * 声明: * 在Qt上,有时候当没有Touch的时候,我们会希望鼠标还是能够使用的,于是乎 * 这又变成了一个看上去必须的需求了,所以这也就变成了一个需要解决的问题,当然 * 这又解决Touch存在还是不存在的问题,以及如何跟mouse共存的问题。
1187 0
|
Linux 索引
I.MX6 Linux mipi配置数据合成
/*************************************************************************** * I.MX6 Linux mipi配置数据合成 * 声明: * 由于现有mipi配置数据不符合I.MX6的配置参数,需要将该参数进行数据转换, * 而这又涉及到对数据处理简单算法,主要是为了验证转换代码可靠性。
900 0
|
Linux Android开发
I.MX6 Linux、Jni ioctl 差异
/*********************************************************************** * I.MX6 Linux、Jni ioctl 差异 * 声明: * 在使用Jni的ioctl()的过程中,发现不能像普通的Linux函数那样使用, * 必须使用3各参数的ioctl()函数。
1050 0
|
Linux Shell Perl
I.MX6 linux eGalaxTouch 自动获取设备节点
I.MX6 linux eGalaxTouch 自动获取设备节点 \\\\\\\\\\\\\\-*- 目录 -*-///////////// | 一.
1273 0
|
Linux Android开发 异构计算
I.MX6 linux kernel编译错误处理
/******************************************************************************** * I.MX6 linux kernel编译错误处理 * 声明: * 本文仅仅是对I.MX6的linux内核编译出错,记录其对应的处理方法。
1043 0
|
Linux 网络协议
I.MX6 Linux U-boot 环境变量解析
/********************************************************************************** * I.
888 0
|
Linux Shell Perl
I.MX6 Linux Qt 启动流程跟踪
/************************************************************************** * I.MX6 Linux Qt 启动流程跟踪 * 声明: * 1. 源代码来源MY-I.MX6; * 2. 本文仅仅是对启动流程的解析,没有解释启动流程为什么是这样的问题。
1362 0
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。