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;
    }

 

目录
相关文章
|
7月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
7月前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
374 0
|
8月前
|
Linux 编译器 网络安全
嵌入式Linux移植dropbear
嵌入式Linux移植dropbear
280 3
|
8月前
|
JSON Ubuntu Linux
LuaJit交叉编译移植到ARM Linux
LuaJit交叉编译移植到ARM Linux
193 1
|
8月前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
304 0
|
8月前
|
存储 Linux Shell
嵌入式 Linux 移植与系统启动方法
嵌入式 Linux 移植与系统启动方法
140 0
|
8月前
|
Linux 计算机视觉
Linux交叉编译opencv并移植ARM端
通过以上步骤,你可以在Linux上交叉编译OpenCV,并将生成的库文件和头文件移植到ARM平台上,从而在ARM上使用OpenCV。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
549 0
|
8月前
|
编解码 Ubuntu 算法
【Linux】NUC977移植使用MQTT(基于mosquitto)
【Linux】NUC977移植使用MQTT(基于mosquitto)
115 0
|
8月前
|
网络协议 Unix Linux
【Linux】NUC977移植使用libmodbus
【Linux】NUC977移植使用libmodbus
231 0
|
8月前
|
Ubuntu Linux 测试技术
linux系统中wifi移植方法
linux系统中wifi移植方法
135 1