zoukankan      html  css  js  c++  java
  • I2C(四)linux3.4(写代码)


    title: I2C(四)linux3.4(写代码)
    date: 2019/1/29 17:18:42
    toc: true

    I2C(四)linux3.4(写代码)

    老师的参考代码

    https://gitee.com/layty/Jz2440/tree/master/Driver/code/39th-i2c

    写clinet

    回顾上一节的构造clinet,第四种方式需要构造i2c_driver.detect,不需要单独的dev来指定地址,因为i2c_detect会来检测地址并挂接client;而其他三种都是构造i2c_board_info

    写i2c_driver

    这里需要注册字符设备驱动等,使用adapt提供的接口来操作i2c设备

    //读
    i2c_smbus_read_byte_data(at24cxx_client, addr)
    //写
    i2c_smbus_write_byte_data(at24cxx_client, addr, data)
    

    写adapt

    这里操作硬件,一般来说会使用中断,触发数据传输的时候会有休眠唤醒的过程,主要是构造adapt中的i2c_algorithmmaster_xfer来传输数据

    //休眠
    timeout = wait_event_timeout(i2c->wait, i2c->msg_num == 0, HZ * 5);
    //完成后唤醒
    wake_up(&i2c->wait);
    // probe 时候申请中断
    request_irq(res->start, s3c24xx_i2c_irq, IRQF_DISABLED,pdev->name, i2c);
    

    待续(懒的写了)

    这个代码就参考下老师的代码或者内核的代码,新内核的设备驱动代码在

    driversmisceeprom
    

    其他适配器的代码还是在老位置

    driversi2ci2c-core.c
    

    总的来说就是懒得写步骤了,参考老师代码写驱动比看文字快多了,代码放到gitee上以后方便查看

  • 相关阅读:
    leetcode 851. Loud and Rich
    674. 最长连续递增序列
    896. 单调数列
    905. 按奇偶排序数组
    917. 仅仅反转字母
    922. 按奇偶排序数组 II
    925. 长按键入
    929. 独特的电子邮件地址
    933. 最近的请求次数
    自己动手丰衣足食写java贪吃蛇
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10335001.html
Copyright © 2011-2022 走看看