Chinaunix首页 | 论坛 | 博客
  • 博客访问: 216724
  • 博文数量: 88
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 555
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-03 13:08
个人简介

失意高调,得意低调

文章分类

全部博文(88)

文章存档

2021年(3)

2020年(2)

2018年(2)

2017年(3)

2016年(6)

2015年(19)

2014年(32)

2013年(21)

我的朋友

分类: LINUX

2014-03-14 09:32:46

#include"i2c-dev"//bingbang 库文件
#include
#include
#include
#include
#include
#include


static int api_open_i2c_dev(const int i2cbus)
{
int file;

sprintf(filename,"dev/i2c/%d",i2cbus);
file = open(filename,O_RDWR);

if(file<0)
{
sprintf(filename,"/dev/i2c-%d",i2cbus);
file = open(filename,O_RDWR);
}

return file;

}


static int api_set_slave_addr(int file,int address,int force)
{
if(ioctl(file,force?I2C_SLAVE_FORCE:I2C_SLAVE,address)<0)
{
return (-1);
}

retrun (0);
}


static int api_i2c_get(unsigned char address,unsigned char daddress,unsigned char *value)
{
char filename[20];
int file,res;

if(address<0)
{
return (-1);
}
if((daddress<0)||(daddress>0xff))
{

return (-1);
}

file = api_open_i2c_dev(0,filename,0);
if(file<0||api_set_slave_addr(file,address,0))
{

return (-1);
}
res=i2c_smbus_read_bye_data(file,daddress);
close(file);

if(res<0)
{
printf("api_i2c_get is error");
return (-1);
}

*value = res&0xff;
return 0;

}


static int api_i2c_set(unsigned char address,unsigned char daddress,unsigned char value)
{
char filename[20];
int file,res;

if(address<0)
{
return (-1);
}
if((daddress<0)||(daddress>0xff))
{

return (-1);
}

file = api_open_i2c_dev(0,filename,0);
if(file<0||api_set_slave_addr(file,address,0))
{

return (-1);
}
res=i2c_smbus_write_bye_data(file,daddress,value);
close(file);

if(res<0)
{
printf("api_i2c_set is error");
return (-1);
}
return 0;
}
阅读(1208) | 评论(0) | 转发(0) |
0

上一篇:popen用法

下一篇:shell中操作GPIO

给主人留下些什么吧!~~