• I2C和SMBus简介


    I²C(发音:I方C,在内核文档中写成I2C)是由Philips开发的协议。它是一个慢的两线协议(变速,高达400khz),具有高速扩展(3.4 MHz)。它提供了一种廉价的总线,用于连接不频繁或低带宽通信需求的许多类型的设备。I2C广泛应用于嵌入式系统。有些系统使用的变体不符合品牌要求,因此不被宣传为I2C,而是在不同的名称下,例如TWI(双线接口)、IIC。

    官方的I2C规范是NXP Semiconductors发布的“I2C总线规范和用户手册”(UM10204)。

    SMBus (System Management Bus)基于I2C协议,主要是I2C协议和信令的子集。许多I2C设备将在SMBus上工作,但一些SMBus协议添加了超出I2C协议所需的语义。现代PC主板依赖于SMBus。最常见的通过SMBus连接的设备是使用I2C eeprom配置的RAM模块和硬件监控芯片。

    因为SMBus主要是通用I2C总线的子集,所以我们可以在许多I2C系统上使用它的协议。然而,有些系统不满足SMBus和I2C电气约束;以及其他系统不能实现所有通用SMBus协议语义或消息的协议。

    术语

    使用官方文档中的术语,I2C总线连接一个或多个主芯片和一个或多个从芯片。

                           简单的I2C总线

    master 芯片是开始与从芯片通信的节点。在Linux内核实现中,它被称为 adapter 或总线。适配器驱动程序位于drivers/i2c/busses/子目录中。

    algorithm 包含可用于实现整个I2C适配器(adapters)类的通用代码。每个特定的适配器驱动程序要么依赖于drivers/i2c/algos/子目录中的算法驱动程序,要么包含它自己的实现。

    slave 芯片是在主芯片寻址时响应通信的节点。在Linux中,它被称为 client(客户端)。客户端驱动程序被保存在一个特定于它们所提供的特性的目录中,例如用于gpio扩展程序的drivers/media/gpio/以及用于视频相关芯片的drivers/media/i2c/。

    对于图中的示例配置,您将需要I2C适配器的驱动程序 和 I2C设备的驱动程序(通常每个设备有一个驱动程序)。

    本文来自博客园,作者:王楼小子,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/15146533.html

  • 相关阅读:
    Go语言 插入排序并返回排序前的索引
    使用patch-package定制node_modules 中的依赖包
    移动端 rem自适应布局 (750的设计稿)
    通过原型截获input.value的方法
    ts 使用 keyof typeof
    logrotate日志管理工具
    【LeetCode刷题】239.滑动窗口最大值
    【LeetCode刷题】剑指Offer 48.最长不含重复字符的子字符串
    【LeetCode刷题】912. 排序数组
    【LeetCode刷题】744. 寻找比目标字母大的最小字母
  • 原文地址:https://www.cnblogs.com/wanglouxiaozi/p/15146533.html
Copyright © 2020-2023  润新知