RK3568 I2C使用

本文介绍了ROCKCHIP RK3568芯片的I2C总线控制器的特性,包括支持的主模式、时钟频率和寻址模式。详细阐述了配置I2C设备的两个步骤:定义和注册I2C设备以及定义和注册I2C驱动。同时,提供了I2C收发数据的示例代码,并解答了在I2C通信中可能出现的问题及调试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

ROCKCHIP 系列芯片为客户提供了标准 I2C 总线,方便客户实现对不同外接设备的控制和访问。I2C 总线控制器通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。
Rockchip I2C 控制器支持下列功能︰

  1. 兼容 I2C 与 SMBus 总线
  2. 仅支持主模式下的 I2C 总线
  3. 软件可编程时钟频率支持到 400kbps,部分芯片可高达1000kbps
  4. 支持 7 位和 10 位寻址模式
  5. 一次中断或轮询至多 32 个字节的数据传输

RK3568有 6 个片上 I2C 控制器,各个 I2C 的使用情况如下表:
在这里插入图片描述
配置 I2C 可分为两大步骤:
定义和注册 I2C 设备
定义和注册 I2C 驱动

定义和注册 I2C 设备

在注册 I2C 设备时,需要结构体 i2c_client 来描述 I2C 设备。而在标准 Linux 中,只需要提供相应的 I2C 设备信息,Linux 就会根据所提供的信息构造 i2c_client 结构体。
所提供的 I2C 设备信息以节点的形式写到 DTS 文件中,修改dts,添加新的i2c设备。
在 arch/arm/boot/dts/rk3568-firefly-aioj-mipi101_JDM101014_BE40_A1.dts中添加i2c设备的相关信息:

&i2c1 {
   
	status = "okay";
    clock-frequency = <100000>;
    focaltech@38 {
   
        status = "okay";
        compatible = "focaltech,ft8201";
        reg = <0x38>;
        //focaltech,power-gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
        focaltech,irq-gpio = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;
        focaltech,reset-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
        focaltech,display-coords =  <0 0 800 1280>;// x_min, y_min, x_max, y_max
        focaltech,max-touch-number = <5>;
        //focaltech,have-key;
        //focaltech,key-number = <3>;
    };
};

定义和注册 I2C 驱动

定义 I2C 驱动

在定义 I2C 驱动之前,用户首先要定义变量 of_device_id 和 i2c_device_id。
of_device_id 用于在驱动中调用 DTS 文件中定义的设备信息,其定义如下所示:

 static const struct of_device_id fts_dt_match[] = {
   
    {
   .compatible = "focaltech,ft8201", }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值