查看: 2581|回复: 0

[评测分享] 【ALINX AXU2CGB试用】IIC 复用器驱动源码分析

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 597 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2021-6-28 17:24:49 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 robe.zhang 于 2021-6-28 17:24 编辑

    【ALINX AXU2CGB试用】IIC复用器驱动源码分析


    IIC 总线结构是这样的,一条总线上可以存在多个从机,一主多从通讯,每个从机有各自的地址来区分,此结构只有一条总线,一个adapter
    1.png
    IIC 复用器硬件原理图示是这样的,一个IIC 接口复用为四个IIC,通过地址来区分每一个IIC接口。类似于usb hub 的功能,一分四,四个下行IIC 共享一个上行IIC接口。复用器是把一条IIC 总线分出来四条总线,对应驱动中的四个adapter
    2.png
    IIC 复用器linux驱动核心源码位于:drivers\i2c\i2c-mux.c 中
    先看struct i2c_mux_core 结构体,里面有两个函数,select 和 deselect,选中和不选两个函数,比如设置 A0A1 为 00选中 IIC0,01选中 IIC1,02选中IIC2,03选中 IIC3,等等
    3.png
    再看 i2c_mux_alloc 函数,分配一个 struct i2c_mux_core 结构体,赋值 select  deselect 函数
    4.png
    再看 i2c_mux_add_adapter 函数,主要用来添加 复用器适配器主设备的,也就是对应最上面图示的I2C0,I2C1,I2C2,I2C3 的
    5.png
    6.png
    7.png
    第 309 行设置发送函数,发送前先选中,然后发送,然后不选。发送函数稍后I2C 驱动核心代码会看到
    8.png
    9.png
    第 407行,添加多个适配器 i2c_add_numbered_adapter,最终调用i2c_register_adapter 注册适配器。i2c_register_adapter稍后I2C 核心代码能看到细节
    10.png
    11.png
    I2C 复用器核心代码就这么多,很简单的。看一个驱动实例:pca954x
    12.png
    Probe 函数第421 行分配struct i2c_mux_core 结构体,并初始化,赋值 pca954x_select_chan,pca954x_deselect_mux 两个函数,稍后详细看两个函数
    第478 安装中断
    第485 添加适配器
    第491 开启中断线程专门处理中断
    13.png
    14.png
    15.png
    再看 pca954x_select_chan 函数,第246 行,是通过写chan 信息来选中对应的 IIC 总线
    17.png
    调用了 __i2c_smbus_xfer 来写入 chan 信息
    16.png
    __i2c_smbus_xfer  要么调用 adapter->algo->smbus_xfer_atomic;要么调用 i2c_smbus_xfer_emulated 写入 chan 信息
    adapter->algo->smbus_xfer_atomic; 函数是在adapter 中已经实现的,i2c_smbus_xfer_emulated不是通过 smbus 实现的,是通过 IIC 控制器模拟发送数据。
    18.png
    19.png
    i2c_smbus_xfer_emulated 模拟发送 chan 信息过程:先根据 smbus协议,不同的case 准备msg 信息,然后在461行调用__i2c_transfer 发送msg 信息,模拟smbus 通信过程
    20.png
    21.png
    22.png
    23.png
    24.png
    最后看Pca9540 复用器框架图,IIC总线一分二,他不是用 A0A1控制下行 IIC 总线选中状态的,而是通过smbus 总线,写寄存器决定选用哪一个下行IIC总线。
    25.png
    26.png
    驱动代码和实物工作过程是对应的,驱动就是用程序来描述硬件的工作过程。Linux 驱动,需要遵循子系统框架。所以看代码就知道硬件的工作过程


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 08:53 , Processed in 0.111645 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.