Linux I2C
发布时间
阅读量:
阅读量
I2C总线仅通过SCL与SDA两条信号线便完成了设备间的数据传输功能。
鉴于各类SOC均配备专属的I2C总线,为实现上层接口的统一性,设计并采用了一种三层结构的I2C体系架构。
I2C总线驱动主要负责实现针对特定I2C控制器的读写操作,并将其注册至Linux内核中的I2C框架中,从而使I2C外设能够借助该框架完成设备与总线之间的匹配。然而,总线驱动本身并不执行具体的通信任务,其作用仅限于提供通信功能的实现方式,并等待设备驱动调用相应的函数进行操作。
I2C Core模块的功能有效消除了不同I2C总线驱动之间的差异性,使I2C设备驱动无需关注各类总线控制器的具体区别,也无需深入理解其与硬件交互的方式 。
Linux系统中所构建的I2C架构共包含三个组成部分:
1)I2C core框架
为I2C适配器驱动与设备驱动的注册及注销过程提供了核心数据结构的定义及相关接口函数,同时实现了与具体适配器无关的上层I2C通信方法,为系统中每条I2C总线配置相应的读写操作。
内核通过抽象出I2C bus(/sys/bus/i2c)的方式,用于挂载与I2C适配器相连的各种I2C从设备。需要指出的是,这里的I2C Bus并非实际通信意义上的总线,而是Linux系统为了便于管理设备和驱动而虚拟化构建的结构。在该结构下,后续将挂载所需的I2C适配器(adapter)以及I2C设备
全部评论 (0)
还没有任何评论哟~
