永发信息网

用linux 调用内核中的统一I2C驱动 i2c总是 busy,求大神支招,谢谢! 程序很短

答案:2  悬赏:0  手机版
解决时间 2021-02-22 06:59
我用2440的板子;。用linux 调用内核中的统一I2C驱动接口写了个应用程序来理解I2C的给工作流程,。结果i2c总是 busy.
在板子上运行时的提示信息:
s3c2440-i2c s3c2440-i2c: cannot get bus (error -110)

在内核中对应的代码是:
kernel/drivers/i2c/busses/i2c-s3c2410.c:
ret = s3c24xx_i2c_set_master(i2c);
if (ret != 0) {
dev_err(i2c->dev, "cannot get bus (error %d)\n", ret);
ret = -EAGAIN;
goto out;
}


#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<linux/i2c-dev.h>
#include<sys/ioctl.h>
#include<stdio.h>

#define I2C_SLAVE 0x0703
int main (int argc,char **argv)
{

int fd;
int adapter_nr = 0;
char filename[20];
char buf[10];
char rbuf[10];
unsigned char addr_data = 0x00;
//1,打开设备文件
snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);
fd = open(filename, O_RDWR);
if (file < 0) {
printf("open device file fail!\n");
return -1;
}
//2,设置从机地址
int addr = 0x50;
ioctl(fd, I2C_SLAVE, addr);

//3,发送片内地址和数据
buf[0] = addr_data;
buf[1] = 0x92; //要写入数据

write(fd, buf, 2);

//4,读数据
//4.1 写片内地址
write(fd,&addr_data,1);
//4.2 读数据
read(fd,&rbuf,1);
printf("rbuf[0] = 0x%x\n",rbuf[0]);
}
最佳答案
to_i2c_client(dev) 这个函数返回值是一个指针,这个指针是个struct i2c_client 类型的指针,这个指针指向块内存,内存中存放着 to_i2c_client(dev)这个函数产生的数据。。
全部回答
希望能帮到你。 没这样用过,以前都是直接对/sys/bus/i2c/devices/0-0050/eeprom操作。 代码里有两次写,一次读,是在哪一次出错?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
退宿申请书怎么写呢,原因是皮肤过敏了。因为
张巡智破令狐潮中的人伦指什么
秦灭六国,统一中国的时间是A. 公元前三世纪
任达华邱淑贞一起演的电影叫什么
山东广播电视报威海发行站地址有知道的么?有
属狗和属猴婚姻相配吗
高度2.9,76元一米,别人算出26一平方,他是
清津港位于朝鲜哪个州
森茂美家装饰建材在哪里啊,我有事要去这个地
底薪2500提成3.5业绩33137怎么算
未来星宝贝生活馆地址有知道的么?有点事想过
(10分)读所给太阳照射图,回答:(1)此图表
为什么说一种物质(在水溶液中)导电该物质不
小腿两年前被撞,当时出现淤青,随时间增长淤
大人吃什么吸収好
推荐资讯
LOL纳尔对线怎么打啊,感觉打谁都很虚啊,兵
海尔热水器加完热过一会就会断电
小米手机怎么收不到彩信
如何将已供贷款金额转到住房公积金贷款户头?
呼和浩特铁一中在什么地方啊,我要过去处理事
今年农历七月初九出生的男孩叫什么名字 姓吕
展示冰柜哪个牌子好
源强饰品地下商城地址在哪,我要去那里办事
阿西莫夫的三百年庆事件怎么理解
华晨宇告白许晴真的假的?
一个男生盯着你看,与你对视也不回避。不止一
空调排水管向室内进风
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?