LinuxI2C总线外接设备写入问题 5

我的arm板子是s3c6410,已经装好了linux系统,并且装好系统后自动有/dev/i2c/0这个i2c设备节点。在i2c总线上外接了一个指南针芯片,用于采集方向。我... 我的arm板子是s3c6410,已经装好了linux系统,并且装好系统后自动有/dev/i2c/0这个i2c设备节点。在i2c总线上外接了一个指南针芯片,用于采集方向。我根据s3c6410开发板上带的一个摄像头的程序写了如下的程序:
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include <linux/i2c.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/fb.h>
#include <sys/time.h>
#define CHIP "/dev/i2c/0"
#define I2C_ADDR 0x1E
static int i2c_write(int fd, __u8 reg, __u8 val)
{
int k;
__u8 data[2];
data[0] = reg;
data[1] = val;
if ((k = write(fd, data, 2)) < 0)
{
perror("i2c transaction failed \n");
// exit(1);
}
printf("k = %d\n",k);
return -1;
}
int main()
{
printf("hello,this is i2c tester\n");
char sbuf[32];

int i;
i = 32;
int fd =open(CHIP, O_RDWR);
if(fd< 0)
{
printf("open"CHIP" failed\n");
exit(1);
}
if (ioctl(fd, I2C_TENBIT, 0)<0)
{
printf("####i2c ioctl(fd,I2C_TENBIT,0) failed####\n");
close(fd);
exit(1);
}
if (ioctl(fd, I2C_SLAVE, I2C_ADDR) < 0)
{
printf("find device failed");
exit(1);
}
printf("set slave address to 0x%x success!\n", I2C_ADDR);
i2c_write(fd, 0x02, 0x00);
sleep(0.1);
read(fd,sbuf,i);
printf("%s\n",sbuf);
close(fd);
printf("==================\n");
}
但放在开发板上运行后k=-1.说明写入失败。这是为什么?其中0x1E是指南针芯片的7位地址,0x02是指南针芯片内模式寄存器的地址,0x00是控制模式寄存器连续采集的功能格式。还有一个问题0x3c是指南针的8位写入地址,那0x1E和0x3c什么时候用,二者有什么区别呢?
谁给我提示,不胜感激!
展开
 我来答
匿名用户
2013-07-02
展开全部
"/dev/i2c/0"
在内核里面实现了读取的操作了?有没模块注册了字符驱动。
内核打印的信息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
f3rell
2013-07-02 · TA获得超过162个赞
知道小有建树答主
回答量:350
采纳率:50%
帮助的人:162万
展开全部
打印下 errno 看看是什么错误 http://www.linuxdiyf.com/viewarticle.php?id=94528
更多追问追答
追问
i2c transaction failed 
: No such device or address
k = -1
这是write的打印错误。
追答
根据提示应该是器件的I2C地址或者I2C设备不存在,但是若是打开设备没问题的话,应该是前者,数据有没有写进去可以用示波器看看I2C总线上有没数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
705486103
2013-07-02
知道答主
回答量:23
采纳率:0%
帮助的人:16.5万
展开全部
先检查硬件电路,看看驱动能力是否够!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式