澳门威尼斯人官网手机网 > 控制/MCU > 正文

基于S3c2440的I2C驱动与测试程序追踪交叉分析

2018年11月08日 17:08 次阅读

VMware虚拟机+Fedora10, 硬件平台TQ2440, 内核2.6.30.4

对应的驱动程序豁然开朗, 然后自己添加了一些dev_dbg后, 对于不理解的地方也有了一定的参考提示, 记录下来与大家分享。

基于S3c2440的I2C驱动与测试程序追踪交叉分析

测试程序如下:

/*i2c_test.c

* hongtao_liu

*/

#include

#include

#include

#include

#include

#include

#include

#include

#define I2C_RETRIES 0x0701

#define I2C_TIMEOUT 0x0702

#define I2C_RDWR 0x0707

/*********定义struct i2c_rdwr_ioctl_data和struct i2c_msg,要和内核一致*******/

struct i2c_msg

{

unsigned short addr;

unsigned short flags;

#define I2C_M_TEN 0x0010

#define I2C_M_RD 0x0001

unsigned short len;

unsigned char *buf;

};

struct i2c_rdwr_ioctl_data

{

struct i2c_msg *msgs;

int nmsgs;

/* nmsgs这个数量决定了有多少开始信号,对于“单开始时序”,取1*/

};

/***********主程序***********/

int main()

{

int fd,ret;

struct i2c_rdwr_ioctl_data e2prom_data;

fd=open(“/dev/i2c-0”,O_RDWR);

/*

*dev/i2c-0是在注册i2c-dev.c后产生的,代表一个可操作的适配器。如果不使用i2c-dev.c

*的方式,就没有,也不需要这个节点。

*/

if(fd《0)

{

perror(“open error”);

}

e2prom_data.nmsgs=2;

/*

*因为操作时序中,最多是用到2个开始信号(字节读操作中),所以此将

*e2prom_data.nmsgs配置为2

*/

e2prom_data.msgs=(struct i2c_msg*)malloc(e2prom_data.nmsgs*sizeof(struct i2c_msg));

if(!e2prom_data.msgs)

{

perror(“malloc error”);

exit(1);

}

ioctl(fd,I2C_TIMEOUT,1);/*超时时间*/

ioctl(fd,I2C_RETRIES,2);/*重复次数*/

/***write data to e2prom**/

e2prom_data.nmsgs=1;

(e2prom_data.msgs[0]).len=2; //1个 e2prom 写入目标的地址和1个数据

(e2prom_data.msgs[0]).addr=0x50;//e2prom 设备地址

(e2prom_data.msgs[0]).flags=0; //write

(e2prom_data.msgs[0]).buf=(unsigned char*)malloc(2);

(e2prom_data.msgs[0]).buf[0]=0x10;// e2prom 写入目标的地址

(e2prom_data.msgs[0]).buf[1]=0x58;//the data to write

ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);

if(ret《0)

{

perror(“ioctl error1”);

}

sleep(1);

/******read data from e2prom*******/

e2prom_data.nmsgs=2;

(e2prom_data.msgs[0]).len=1; //e2prom 目标数据的地址

(e2prom_data.msgs[0]).addr=0x50; // e2prom 设备地址

(e2prom_data.msgs[0]).flags=0;//write

(e2prom_data.msgs[0]).buf[0]=0x10;//e2prom数据地址

(e2prom_data.msgs[1]).len=1;//读出的数据

(e2prom_data.msgs[1]).addr=0x50;// e2prom 设备地址

(e2prom_data.msgs[1]).flags=I2C_M_RD;//read

(e2prom_data.msgs[1]).buf=(unsigned char*)malloc(1);//存放返回值的地址。

(e2prom_data.msgs[1]).buf[0]=0;//初始化读缓冲

ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);

if(ret《0)

{

perror(“ioctl error2”);

}

printf(“buff[0]=%xn”,(e2prom_data.msgs[1]).buf[0]);

/***打印读出的值,没错的话,就应该是前面写的0x58了***/

close(fd);

return 0;

}

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注澳门威尼斯人官网手机微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于Linux平台上S3C2440的物流配送系统...

43620431

发表于 2018-08-28 10:07 1158次阅读
基于Linux平台上S3C2440的物流配送系统...

以S3C2440为核心的嵌入式温室环境监测系统设...

UML序列图(Sequence Diagram)一般用于确认和丰富一个环境的逻辑。一个使用情境就是系...

发表于 2018-08-26 08:55 270次阅读
以S3C2440为核心的嵌入式温室环境监测系统设...

以S3C2440为平台对智能模拟人控制箱和按压通...

一般情况下, 串口通信采用两种方法: 一种方法是利用Window s 的通信API 函数; 另一种方...

发表于 2018-08-01 11:28 326次阅读
以S3C2440为平台对智能模拟人控制箱和按压通...

关于uboot的功能分析透彻方案

如果我们想快速的移植uboot,那么我们就要先将我们用到的uboot的功能分析透彻,uboot最终目...

发表于 2018-07-31 09:37 453次阅读
关于uboot的功能分析透彻方案

郭天祥ARM9视频教程TX2440、S3C2440+光盘原理图资料下载

发表于 2018-07-06 07:09 351次阅读
郭天祥ARM9视频教程TX2440、S3C2440+光盘原理图资料下载

三星S3C2440处理器中断别名

发表于 2018-07-06 06:39 301次阅读
三星S3C2440处理器中断别名

s3c2440启动代码分析

发表于 2018-07-05 00:25 191次阅读
s3c2440启动代码分析

SDRAM详解

发表于 2018-06-27 04:15 168次阅读
SDRAM详解

请问如何设置S3C2440时钟的时间?应该注意哪些事项?

发表于 2018-06-26 07:03 338次阅读
请问如何设置S3C2440时钟的时间?应该注意哪些事项?

基于S3C2440 处理器的支持IPv6协议防火...

现有防火墙系统大多是针对于IPv4开发的,由于IPv4地址空间不足,且安全性较差,现有网络升级到IP...

发表于 2018-04-04 11:39 283次阅读
基于S3C2440 处理器的支持IPv6协议防火...

基于ARM S3C2440的太阳跟踪系统设计

从实用角度考虑,太阳跟踪系统的低功耗设计显得尤为重要,ARM微处理器在保证高性能的前提下能够尽量降低...

发表于 2018-04-01 11:08 364次阅读
基于ARM S3C2440的太阳跟踪系统设计

s3c2440的工控机菜单设计

发表于 2018-03-07 22:14 126次阅读
s3c2440的工控机菜单设计

基于S3C2440和PCL6045BL的四轴运动...

运动控制系统已被广泛应用于工业控制领域。近年来,工业控制对运动控制系统的要求越来越高。传统的基于PC...

发表于 2018-01-26 12:11 390次阅读
基于S3C2440和PCL6045BL的四轴运动...

创建串口测试程序

发表于 2018-01-25 10:59 705次阅读
创建串口测试程序

基于ZigBee的Android智能移动设备控制...

本文主要介绍了基于ZigBee的Android智能移动设备控制系统设计,利用Android智能移动设...

发表于 2017-12-27 14:16 1030次阅读
基于ZigBee的Android智能移动设备控制...

基于BOA和nRF24L01的智能家居系统

  针对目前智能家居方面比较流行的ZigBee和ZWave无线通信技术的一些不足,提出了一种基于BO...

发表于 2017-12-15 11:03 1027次阅读
基于BOA和nRF24L01的智能家居系统

基于S3C2440和加速度传感器的自由摆平板控制...

本设计的重点在于通过加速度传感器MMA7455采集各关节处角度信息,并根据得到的角度值及任务要求控制...

发表于 2017-11-30 08:32 490次阅读
基于S3C2440和加速度传感器的自由摆平板控制...

晒一下刚毕业时的测试程序

发表于 2017-11-09 22:30 586次阅读
晒一下刚毕业时的测试程序

小白求助 ARM2440 外接 5v 电源,需要 3.3V、2.5V、1.8V 如何产生?

发表于 2017-11-01 16:28 1467次阅读
小白求助   ARM2440 外接 5v 电源,需要 3.3V、2.5V、1.8V 如何产生?

配置s3c2440的时钟CLKCON控制器不需要配置吗?

发表于 2017-10-25 10:05 622次阅读
配置s3c2440的时钟CLKCON控制器不需要配置吗?

s3c2440如何设置fclk

设置LockTime变频锁定时间设置FCLK与晶振输入频率(Fin)的倍数设置FCLK,HCLK,P...

发表于 2017-10-23 11:34 535次阅读
s3c2440如何设置fclk

基于ARM的扩散/氧化控制系统的设计

随着信息化、智能化、网络化的发展,嵌入式系统得到了前所未有的发展。由于嵌入式系统具有体积小、性能强、...

发表于 2016-05-27 13:34 595次阅读
基于ARM的扩散/氧化控制系统的设计

基于嵌入式Linux的语音识别系统硬软件设计

在嵌入式Linux操作系统下,运用多进程机制完成了对语音识别芯片、超声波测距和云台的控制,并将语音识...

发表于 2015-07-02 10:34 1805次阅读
基于嵌入式Linux的语音识别系统硬软件设计

基于S3C2440处理器Linux平台的物流配送...

 现代的物流系统已经进入了信息化的阶段。信息化配送系统对信息化物流有着重要的影响。物流配送信息化,就...

发表于 2015-06-26 10:31 636次阅读
基于S3C2440处理器Linux平台的物流配送...

ARM+DSP的嵌入式四轴运动控制器设计

传统的基于PC及低端微控制器日渐暴露出高成本、高消耗、低可靠等问题,已经不能满足现代制造的要求。##...

发表于 2015-01-14 13:57 2618次阅读
ARM+DSP的嵌入式四轴运动控制器设计

IPv6防火墙设计系统 构建全方位的安全防护网络

随着网络应用的不断发展,网络安全显得越来越重要。基于X86 架构的边界防火墙成本较高,且难以遍布网...

发表于 2013-01-08 11:44 580次阅读
IPv6防火墙设计系统 构建全方位的安全防护网络

基于ZigBee和S3C2440的手持式校准仪研...

为保证自动气象站各要素测量值准确性,需要定期进行校准。针对自动气象站的现场校准需要设计了一种手持式校...

发表于 2012-12-25 10:35 492次阅读
基于ZigBee和S3C2440的手持式校准仪研...

基于嵌入式和无线收发模块的教学楼节能系统

本文以嵌入式技术、新兴的ZIGBEE 无线通信技术和传感器技术相结合设计教学楼节能控制系统。

发表于 2012-10-22 16:43 827次阅读
基于嵌入式和无线收发模块的教学楼节能系统

基于CC2430的便携式无线搜救器设计

本文提出了一种基于CC2430 的便携式无线搜救器的设计方法。本方法运用调度算法优化通信,增加了在通...

发表于 2012-09-25 17:15 1017次阅读
基于CC2430的便携式无线搜救器设计

基于嵌入式Linux的视频采集编码系统实现

本文设计了嵌入式远程监控系统中的视频采集端。提出了基于 ARM Linux的视频采集编码设计方案,采...

发表于 2012-09-06 16:37 2929次阅读
基于嵌入式Linux的视频采集编码系统实现

基于ZigBee和S3C2440的手持式校准仪研...

 为保证自动气象站各要素测量值准确性,需要定期进行校准。针对自动气象站的现场校准需要设计了一种手持式...

发表于 2012-09-06 14:25 517次阅读
基于ZigBee和S3C2440的手持式校准仪研...

基于S3C2440的nRF2401驱动设计

通信频率为2.4GHz 的ISM 频段,由于其免许可证、波长较短、天线的尺寸小、外围器件少等优点,适...

发表于 2012-08-02 15:40 1824次阅读
基于S3C2440的nRF2401驱动设计

基于S3C2440嵌入式系统主板的电磁兼容性设计

本文以嵌入式系统主板为平台,运用 EMIStream仿真软件,并采用源端串联端接阻抗的方法分析了解决...

发表于 2012-07-25 10:49 1062次阅读
基于S3C2440嵌入式系统主板的电磁兼容性设计

基于直方图变换的LED背光源节电调光方法

摘要: 背光源的功耗最高可占液晶显示模组总功耗的50%以上,文章提出一种基于直方图变换的背光源节电调...

发表于 2012-07-19 15:41 1413次阅读
基于直方图变换的LED背光源节电调光方法

基于S3C2440家庭网关设计方案

伴随着社会经济水平的提高,人们对家居生活质量的要求也越来越高。同时随着嵌入式技术的不断发展,以及移动...

发表于 2012-07-06 16:02 3047次阅读
基于S3C2440家庭网关设计方案

单片机实验开发板测试程序详解

  通常我们网站提供的试验开发板是焊接并测试好的成品板,如果是购买套件的网友,可以开始51单片机实验...

发表于 2012-05-22 15:21 5194次阅读
单片机实验开发板测试程序详解

基于S3C2440和USB摄像头的网络视频采集系...

本文根据网络视频采集的需要,将网络传输与视频采集相结合,设计了以S3C2440为核心的USB摄像头视...

发表于 2012-03-30 11:17 4921次阅读
基于S3C2440和USB摄像头的网络视频采集系...

LTC2207在S3C2440和EP3C25控制...

本设计中数据采集系统的核心器件是凌力尔特公司的A/D转换芯片LTC2207。本文研究了在ARM核S...

发表于 2012-02-28 11:23 882次阅读
LTC2207在S3C2440和EP3C25控制...

基于S3C2440的Ethercat实现

基于S3C2440的Ethercat实现,EtherCAT 是开放的实时以太网络通讯协议,Ether...

发表于 2011-12-15 09:59 3127次阅读
基于S3C2440的Ethercat实现

基于ARM的指纹采集仪的设计

在个人身份识别领域,指纹识别作为目前最为成熟的生物识别技术之一,成为很多应用场合的首选。和PC环境相...

发表于 2011-10-25 16:32 804次阅读
基于ARM的指纹采集仪的设计

嵌入式系统快速重启的设计研究

本文论述了嵌入式系统的启动过程,由于嵌入式系统在每次重启的时候都要执行一次代码的拷贝过程,这样会浪费...

发表于 2011-10-12 15:24 430次阅读
嵌入式系统快速重启的设计研究

基于S3C2440嵌入式Linux的步进电机驱动...

在嵌入式Linux开发过程中需要为指定设备编写和编译驱动程序,这与以往在PC机上的Linux驱动开发...

发表于 2011-09-27 11:56 1596次阅读
基于S3C2440嵌入式Linux的步进电机驱动...

基于嵌入式技术的汽车安全防御系统设计

近年来嵌入式技术与Internet技术的结合, 使嵌入式技术在远程控制、智能交通、电视会议、安防等领...

发表于 2011-09-22 15:23 568次阅读
基于嵌入式技术的汽车安全防御系统设计

基于ARM处理器S3C2440的无线监控系统设计

无线网络技术在近一两年开始全面普及,无论是在家庭用户还是企业用户中,我们都能看到无线技术的影子。 认...

发表于 2011-09-22 15:10 2049次阅读
基于ARM处理器S3C2440的无线监控系统设计

基于ZigBee技术的节水灌溉系统设计

“节约用水,人人有责”,水资源正在变成一种宝贵的稀缺资源。因此,推广节水灌溉也已成为世界各国为缓解水...

发表于 2011-09-21 14:35 1018次阅读
基于ZigBee技术的节水灌溉系统设计

基于嵌入式S3C2440的船舶导航系统设计

文章在以ARMS3C2440为核的硬件平台上应用Linux操作系统开发了船舶导航系统,完成了系统的硬...

发表于 2011-09-15 18:36 432次阅读
基于嵌入式S3C2440的船舶导航系统设计

基于S3C2440处理器的嵌入式视频采集系统

研究了嵌入式Linux的开发技术,建立起基于Mini2440开发板的Linux开发平台,包括搭建交叉...

发表于 2011-08-29 17:39 871次阅读
基于S3C2440处理器的嵌入式视频采集系统

Samsung S3C2440平台上的Vxwor...

研究基于S3C2440平台上的Vxworks BSP移植具有重要的意义。本文就BSP的概念、BSP移...

发表于 2011-08-10 11:42 2180次阅读
Samsung S3C2440平台上的Vxwor...

S3C2440开发板-LCD基础(源代码)

VSPW称为垂直同步信号的脉宽,VBPD称为垂直同步信号的后肩,VFPD称为垂直同步信号的前肩。HS...

发表于 2011-05-03 10:03 2784次阅读
S3C2440开发板-LCD基础(源代码)

基于S3C2440的嵌入式Linux根文件系统

  嵌入式Linux早已成为IT界家喻户晓的一个名字,使用Linux进行嵌入式产品开发有一个很大的优...

发表于 2010-12-10 10:31 652次阅读
基于S3C2440的嵌入式Linux根文件系统

基于S3C2440与GPS的物流配送系统设计实现

  引言   现代的物流系统已经进入了信息化的阶段。信息化配送系统对信息化物流有着重要的影响。物流...

发表于 2010-12-08 09:17 524次阅读
基于S3C2440与GPS的物流配送系统设计实现

基于S3C2440的WindML图形驱动设计

  O 引言   随着信息技术的迅速发展,嵌入式系统的应用领域越来越广,嵌入式系统对图形用户界面的...

发表于 2010-10-19 11:08 480次阅读
基于S3C2440的WindML图形驱动设计

基于ARM9处理器芯片S3C2440的服装舒适性...

  一般来说,当人体皮肤温湿度处于热湿舒适性状态时,人们的智力、体力(手工)或感觉方面的表现均处于高...

发表于 2010-10-11 10:06 796次阅读
基于ARM9处理器芯片S3C2440的服装舒适性...

基于S3C2440的电视发射机控制单元设计

随着广播电视事业的发展,电视发射机技术的应用越来越广泛。为了能有效保证电视信号的质量,对电视发射机监...

发表于 2010-06-14 06:57 321次阅读
基于S3C2440的电视发射机控制单元设计

S3C2440A嵌入式手持终端电源管理系统设计

S3C2440A嵌入式手持终端电源管理系统设计 电源管理(Power Management,PM)...

发表于 2009-10-30 08:57 430次阅读
S3C2440A嵌入式手持终端电源管理系统设计