RK3399 I2C 外设接入

I2C 探测

参考
rk3399 自带了i2c的探测功能. 需要我们将其打开. 当i2c外设接入后可以先用i2c_detect来探测设备是否成功被识别.

打开I2C_detect
  1. 修改config
    rk3399/source/kernel/arch/arm64/configs
    添加:
    添加config_i2c_rockchip
  2. 修改kconfig文件
    rk3399/source/kernel/drivers/i2c/busses/Kconfig
config I2C_ROCKCHIP
  tristate "Rockchip I2C interface"
  depends on ARCH_ROCKCHIP
  help
    If you say yes to this option, support will be included for the
    Rockchip I2C interface.

    This driver can also be built as a module.  If so, the module
    will be called i2c-rockchip.
  1. Makefile修改
    rk3399/source/kernel/drivers/i2c/busses/Makefile
    修改makefile
  2. 编译报错修改
    然后编译会时出错,还需修改源码:
    修改源文件
    打开:kernel/drivers/i2c/busses/i2c-rockchip.c
    注释头文件
    RK3399 I2C 外设接入_第1张图片
    后接着编译:

再注释文件rockchip_i2c_probe函数中的
RK3399 I2C 外设接入_第2张图片

还有:
rockchip_i2c_xfer函数中:

RK3399 I2C 外设接入_第3张图片
fix_xfer2

4、开始探测I2C设备:
首先看下我们的新产生的节点:
vi kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
RK3399 I2C 外设接入_第4张图片

我的RK3399板子I2C1下面接了一个at24cxx,其地址是0X50

修改完dts后重新编译 , 将resource.img烧入重启测试.
同时外设的sda和scl需要接到rk3399的i2c1对应的管脚.

开始使用RK的探测工具探测I2C1:

rk3399_firefly_box:/ # echo 1 > /dev/i2c_detect

dmesg

I2C 驱动编写

你可能感兴趣的:(Linux,driver)