IIc.h
#ifndef __IIC_H__
#define __IIC_H__
#define GET_HUM _IOR('m',1,int)
#define GET_TEM _IOR('m',0,int)
#endif
IIc_pdrv.c
#include <linux/init.h>
#include <linux/module.h>
#include<linux/i2c.h>
#include<linux/fs.h>
#include<linux/uaccess.h>
#include<linux/io.h>
#include<linux/device.h>
#include"iic.h"
int major;
struct class *cls;
struct device *dev;
struct i2c_client *client1;
//封装读取温湿度数据的函数
int i2c_read_hum_tem(unsigned char reg)
{
int ret;
char r_buf[]={reg};
short value;
struct i2c_msg r_msg[]={
[0]={
.addr=client1->addr,
.flags=0,
.len=1,
.buf=r_buf,
},
[1]={
.addr=client1->addr,
.flags=1,
.len=2,
.buf=(char *)&value,
},
};
//消息的传输
ret=i2c_transfer(client1->adapter,r_msg,ARRAY_SIZE(r_msg));
if(ret!=ARRAY_SIZE(r_msg))
{
printk("消息传送失败\n");
return ret;
}
return value;
}
int si7006_open(struct inode *inode, struct file *file)
{
return 0;
}
long si7006_ioctl(st