IIC驱动---应用程序开发(3)

APP层: 参考文档:Documentation/i2c/dev-interface

准备工作:

(1)内核层:查看drivers/i2c目录下的Makefile文件。()是否有编译如下文件:i2c-core.c, i2c-dev.c, i2c-drive.c 

(2)总线驱动层:在driver/i2c/busses目录下:看Makefile文件是否有i2c-s3c2410.0

(3)在linux目录下make menuconfig ,查看又没有把配置选进去,这个和Makefile的宏是等同的,比如

obj-$(CONFIG_I2C_MUX_GPIO) += i2c-mux-gpio.o  ,那么可以在menuconfig搜索CONFIG_I2C_MUX_GPIO这个宏定义。

Device_Deivers--->I2c_support   //i2c-core.c

                          ---->i2c device interface   //i2c-dev.c

                          ---->i2c hardware bus support---->s3c2410 i2C Driver   // i2c-s3c2410.c

(4)然后在linux根目录下:make uImage 编译生成内核烧录

注册设备

cat /proc/device    //可以查看设备是否被注册成功

注册驱动------平台设备驱动

卸载设备

卸载驱动

i2cdetect -y 1   //此命令可以监测到IIC总线上所有的iic设备,用于确认iic子设备的设备地址


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

int main(int argc, char**argv)
{
    int fd;
    fd = open("/dev/i2c-1", O_RDWR);
    if (fd < 0) {
        perror("open failed\n");
        exit(1);
    }

    int device_addr = 0x40; //硬件设备地址
    if (ioctl(fd, I2C_SLAVE, device_addr) < 0) {
        perror("ioctl failed\n");
        exit(1);
    }

    char wbuf[10];
    char register_addr = 0x3;
    /* Using I2C Write*/
    wbuf[0] = register_addr;
    wbuf[1] = 0x5;
    if (write(fd ,wbuf, 2) != 2) {
        perror("write failed\n");
        exit(1);
    }

    if (write(fd ,&register_addr, 1) != 1) {
        perror("write failed\n");
        exit(1);
    }

    /* Using I2C Read*/
    char rbuf[10];
    if (read(fd, &rbuf[0], 1) != 1) {
        perror("read failed\n");
        exit(1);
    } else {
        printf("rbuf value = [%d]\n", rbuf[0]);
    }
}

insmod -----

ls /sys/bus/i2c/devices/

1-003c

cat /sys/bus/i2c/devices/1-003c/name

oled

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值