明远智睿技术论坛

 找回密码
 立即注册
搜索
查看: 3920|回复: 2
打印 上一主题 下一主题

i.MX6Q I2C驱动测试

[复制链接]

1

主题

2

帖子

25

积分

新手上路

Rank: 1

积分
25
跳转到指定楼层
楼主
发表于 2016-12-13 16:07:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
i.MX6S I2C驱动中有一个例子:气压高度传感器。想问一下,测试这个模块的应用程序源码在哪里?
回复

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
沙发
发表于 2016-12-14 10:35:06 | 只看该作者
很少用这个东西,所以没写这个应用,方法跟其他I2C的方法一样的,首先访问I2C的设备地址,在访问相关寄存器
回复 支持 反对

使用道具 举报

1

主题

2

帖子

25

积分

新手上路

Rank: 1

积分
25
板凳
 楼主| 发表于 2016-12-16 11:28:02 | 只看该作者
i.MX6Q I2C芯片ADS1110 linux设备文件节点/dev/i2c-0 已解决 源码如下:

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

#define I2C_DEV "/dev/i2c-0"
#define CHIP_ADDR 0x48

static int read_I2C(int fd, char buff[], int addr, int count)
{
        int res;
        if(write(fd,&addr,1)!=1){
                printf("write failed\n");
                return -1;
        }

        while(1){
                res=read(fd,buff,count);

                int lum_value = buff[0]*256 + buff[1];
                printf("The lum value is %d\n", lum_value);

                usleep(100000);
        }

        return res;
}

int main()
{
        int fd, res;
        fd = open(I2C_DEV, O_RDWR);
        if(fd < 0){
                printf("####i2c test device open failed####\n");
                return (-1);
        }

        res = ioctl(fd,I2C_TENBIT,0);
        res = ioctl(fd,I2C_SLAVE,CHIP_ADDR);

        char buff[4];

        read_I2C(fd, buff, CHIP_ADDR,4);

        close(fd);

        return 0;
}

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|明远智睿  

GMT+8, 2024-11-27 06:36 , Processed in 0.063242 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表