32 IIC(十)I2C GPIO

源码

1. 设备树

gpio模拟iic

i2c_gpio: i2c-gpio {
				/* gpio模拟iiccompatiable必须为i2c-gpio */
                compatible = "i2c-gpio";
				/* 指定子节点的reg addr为1个32为表示, 没有size */
                #address-cells = <1>;
                #size-cells = <0>;
                pinctrl-names = "default";
				/* 设置引脚配置 */
                pinctrl-0 = <&pinctrl_i2c_gpio>;
				/* 指定使用引脚 */
                gpios = <
                        &gpio5 1 GPIO_ACTIVE_HIGH /* SDA */
                        &gpio5 0 GPIO_ACTIVE_HIGH /* SCL */
                >;
				/* 配置频率, 也可以使用i2c-gpio,delay-us来表示 */
                clock-frequency = <400000>;
                status = "okay";

				/* i2c client */
                ds1339: rtc@68 {
                        compatible = "dallas,ds1339";
                        reg = <0x68>;
                        status = "disabled";
                };
        };

2. i2c-gpio的使用

i2c-gpio模块已经做的很完善了,一般而言只需要根据实际情况修改dts文件即可

  • 配置compatible = "i2c-gpio";

  • pinctrlSDASCL配置为GPIO、开极(与下面的i2c-gpio,sda-open-draini2c-gpio,scl-open-drain互斥)

  • 指定SDASCL引脚

  • 指定frequency

    • i2c-gpio,delay-us = <5>;
    • clock-frquecy = <400000>;
  • 指定addr和size解析

    • #address-cells = <1>;
    • #size-cell = <0>;
  • i2c-gpio,sda-open-drain; i2c-gpio,scl-open-drain;

    表示SDA引脚已经被设置为为开极、开漏不需要驱动程序再次设置

    表示SCL引脚已经被设置为为开极、开漏不需要驱动程序再次设置

    两者如果存在则表示gpio已经被设置为开极、开漏(例如pinctl已经实现)。如果不存在则驱动程序会去将引脚再次设置为开极、开漏。所以此时则不需要设pinctl

3. imx6ull使用gpio模拟i2c

3.1 实物图

3.2 原理图

3.3 设备树

此模块驱动为i2c-gpio模块,源码位于kernel中

  • make menuconfig将i2c-gpio编译成模块(M),或者编进内核(Y)

  • make modules编译所以modules

    目标文件Linux-4.9.88/drivers/i2c/busses/i2c-gpio.ko

  • 修改dts文件,并上传到arch/arm/boot/dts/

  • make dtbs

  • dtb文件拷贝到/boot目录重启

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值