Linux上的I2C基础知识

什么是I2C

I2C(Inter-Integrated Circuit,eye-squared-C),也称为 I2C 或 IIC,是一种同步、多控制器/多目标(主/从)、分组交换、单端、串行通信总线,发明于 1982 年飞利浦半导体公司。

它广泛用于在短距离板内通信中将低速外围 IC 连接到处理器和微控制器。

  I2C协议可以工作在以下5种速率模式下,不同的器件可能支持不同的速率。结合目前使用的情况来看,现在的设备一般都支持400kbps,设备树中一般也都是400kbps。

  • 标准模式(Standard):100kbps
  • 快速模式(Fast):400kbps
  • 快速模式+(Fast-Plus):1Mbps
  • 高速模式(High-speed):3.4Mbps
  • 超快模式(Ultra-Fast):5Mbps(单向传输)

Adapter(Master、Controller、bus)

  Client (slave、Device)

  SDA:数据,双向
  SCL:“时钟”

    主要由Adapter驱动,有时也由Client驱动(时钟拉伸)

1. 起始条件

当时钟线SCL保持高电平,SDA数据线从高到低,此时达成I²C达成起始条件

2. Adapter 发送:客户端地址(7位)+ 方向(R/W)

3. 客户端发送ACK(成功收到之后)

4. 客户端发送数据

5. Adapter发送ACK

6. 停止条件

当时钟线SCL保持高电平,SDA数据线从低到高,此时达成I²C达成停止条件

Linux 驱动模型中的 I²C

未完待续

参考:

https://www.youtube.com/watch?v=g9-wgdesvwA&t=1485s

https://bootlin.com/pub/conferences/2022/elce/ceresoli-basics-of-i2c-on-linux/ceresoli-basics-of-i2c-on-linux.pdf

Linux上的I2C基础知识的更多相关文章

  1. linux 文件权限的基础知识

    由于自己总是记不住linux里权限的一些知识,因此简单总结如下: 查看文件权限 // 列出所有文件 ls -al // 最前面的一串10个字母的字符串 // 可能像 drwxrwxr-x // 第一位 ...

  2. Linux驱动开发1——基础知识

    1.三类驱动 字符设备驱动:字节流,/dev下有设备节点,file_operations,inode, file 块设备驱动:数据块,/dev下有设备节点,通常有文件系统 网络设备驱动:网络报文的收发 ...

  3. Linux下Apache(HTTP)基础知识梳理-运维笔记

    HTTP介绍: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传 ...

  4. linux 学习随笔-shell基础知识

    1:用户的shell历史命令保存在home/username/.bash_history中 #!!  执行用户的上一条命令 #!pw  执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...

  5. I2C基础知识

    常识 两条总线线路:串行数据总线SDA,串行时钟总线SCL 每个连接到总线的器件都有唯一的地址供其他设备寻址 每个连接到总线的器件都可以作为发送器和接收器 是多主机总线,如果两个或更多主机同时初始化, ...

  6. 服务器Linux系统安全维护基础知识介绍

    事先规划好Linux操作系统的分区 Linux操作系统的分区规划跟微软操作系统的分区规划不同.后者分区规划对于其性能的影响很小.但是Linux操作系统的分区规划则不同,其对服务器的性能影响很大.其实我 ...

  7. 第0章Linux环境到内核基础知识

    #include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...

  8. Redis项目实战---应用及理论(上)---redis基础知识介绍

    redis(Remote Dictionary Server)   一.原理及特性层面:     1.优势:        1)数据加载在内存中,执行速度快, 数据结构类似于HashMap,HashM ...

  9. R语言包在linux上的安装等知识

    有关install.packages()函数的详见:R包 package 的安装(install.packages函数详解) R的包(package)通常有两种:1 binary package:这种 ...

  10. Linux堆的一些基础知识

    目录 堆的概述 什么是堆 堆的基本操作 堆操作背后的系统调用 堆的相关数据结构 微观结构 malloc_chuck chunk相关宏 bin 宏观结构 arena heap_info malloc_s ...

随机推荐

  1. 大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge

    前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s 大规模 IoT 边缘容器集群管理的几种架构-2-H ...

  2. sqlmap 简单使用

    sqlmap 简单使用 环境:phpstudy:MySQL5.4.7 介绍 sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程.它有一个强大的检测引擎 ...

  3. JDK、JRE、JVM三者之间的关系

    JDK.JRE.JVM 以下内容转载自JDK.JRE和JVM三者之间关系_geyouchao的博客-CSDN博客 侵删,谢谢 JDK:Java Development Kit (Java开发工具包) ...

  4. JZOJ 3242. Spacing

    \(\text{Analysis}\) 最大值最小很容易想到二分答案 然后用 \(dp\) 检查 设 \(f_i\) 表示当前行最后一个为 \(i\) 时最优情况最大空格数是否小于 \(mid\) 若 ...

  5. EMBARK研究: 依那西普治疗早期nr-axSpA达48周的临床和MRI疗效

    关键词: 放射学阴性中轴型SpA; TNF拮抗剂; 磁共振影像 EMBARK研究48周结果: 依那西普治疗早期放射学阴性中轴型SpA患者的临床与MRI疗效 电邮发布日期:2016年1月25日 文献: ...

  6. 坏消息,new Date()方法在IOS系统中存在null值情况

    背景介绍 笔者最近在开发小程序,发现在使用new Date()函数在电脑模拟器上倒是没什么影响能很好实现效果,但是在我的Iphone上看到的效果跟预想有出入. 图为在电脑微信小程序模拟器的效果图,可以 ...

  7. 深度学习框架Pytorch学习笔记

    由于工作原因,需要使用到深度学习pytorch框架,所以,跟随视频学习了深度学习框架的使用方法,视频链接如下: PyTorch深度学习快速入门教程(绝对通俗易懂!)[小土堆]_哔哩哔哩_bilibil ...

  8. 时间戳转换为yyyy-MM-dd格式

    原文链接https://blog.csdn.net/hu104160112/article/details/111167033

  9. Docker之Redis保姆级别安装

    Docker之Redis保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...

  10. windows下解决getAddressInfo Failed的一种办法

    从九点到现在,解决完这个问题就四点了,其实不难,只是第一次遇到和我太菜. 就是管理员身份打开命令行然后输入ipconfig /flushdns,作用是刷新dns解析缓存,这还不够,如果只做这一步,重启 ...