文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>i2c总线设备测试应用程序

i2c总线设备测试应用程序

时间:2010-03-11  来源:cao5170

i2c总线设备测试应用程序        既然是应用程序无非就是read,write。是的如果没有算法加进来的话,就是这样的,更何况这是一个测试程序!        首先介绍一个系统总线(设备)给大家,如果有人接受不了这个概念可以先把它了解清楚再继续阅读,如果觉得自己还可以忍受一会儿的话,我们在后面的i2c总线中给大家详细解释。 [root@Intel rtc]# ll /dev/i2c-0 这个目录就是我们的i2c总线设备(它对应我们的i2c总线适配器),你可以把它简单的理解为总线,我们后面的操作其实就是对总线的读和写。        Code 1:         fd = open(I2C_DEV, O_RDWR);// I2C_DEV /dev/i2c-0         if(fd < 0){                 printf("####i2c test device open failed####\n");                 return (-1);         }         res = ioctl(fd,I2C_TENBIT,0);   //not 10bit         res = ioctl(fd,I2C_SLAVE,CHIP_ADDR);    //设置I2C从设备地址[6:0] 上面是打开该设备的源码,并进行了相关的设置,这里需要了解一点i2c总线的知识,简单的给大家提两句,i2c是工作在主从模式下的,也就是说不关是读还是写都是由工作在主模式下的i2c设备发起的。I2c主设备在发送的命令中包含i2c从设备的地址,也就是上面的CHIP_ADDR,这个地址是由phips公司提供给生产i2c设备芯片的厂商的。我们这个芯片的地址是0x68  [6:0]。 打开该设备之后我们对他进行读写,这里还需要了解一点i2c总线的知识,关于读写的时序!
在写i2c从设备寄存器的时候,先发送的是从设备的地址,然后是要写入的寄存器的偏移地址,最后是数据,当然你可以写一个寄存器或者多个,只要给出基址就可以了;在读从设备的时候稍微复杂一点点,先要写入要读写的从设备的寄存器偏移量,然后在再读取数据!
这里有一个细节大家一定要注意,读写是由控制位决定的,由从设备地址(7位)加上1位读写控制位,组成了一个字节! 有了上面的这些介绍我们就不难理解下面的这两个读写函数:        Code 2: static int read_HWclock(int fd, char buff[], int addr, int count) {         int res;         if(write(fd,&addr,1)!=1)        //写地址失败                 return -1;         res=read(fd,buff,count);         printf("read %d byte at 0x%x\n", res, addr);         return res; } static int write_HWclock(int fd, char buff[], int addr, int count) {         int res;         int i,n;         static char sendbuffer[PAGE_SIZE+1];         memcpy(sendbuffer+1, buff, count);         sendbuffer[0]=addr;         for(n=0; n<sizeof(sendbuffer); n++)                 printf("0x%x, ", sendbuffer[n]);         res=write(fd,sendbuffer,count+1);         printf("write %d byte at 0x%x\n", res, addr); } 好了,既然已经写道这里,我们直接给出结果就可以了: [root@Intel rtc]#./readrtc 07/10/27  6  17:23:20 [root@Intel rtc]# 这个测试结果显然是令人满意了,现在大可放心,这个八只脚的笑臭虫,还是很听话的! 测试结束之后,我们就可以沐浴更衣,去探讨i2c总线驱动的问题,他是如此之复杂,以至于我们不得不静下心来,仔细的研究他的实现!  
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/imho888/archive/2009/02/05/3861927.aspx
相关阅读 更多 +
排行榜 更多 +
弓箭手战士酷跑

弓箭手战士酷跑

飞行射击 下载
三角洲行动全面战场攀升A点进攻指南

三角洲行动全面战场攀升A点进攻指南

飞行射击 下载
僵尸射手世界大战

僵尸射手世界大战

飞行射击 下载