Linux上的I2C基础知识
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基础知识的更多相关文章
- linux 文件权限的基础知识
由于自己总是记不住linux里权限的一些知识,因此简单总结如下: 查看文件权限 // 列出所有文件 ls -al // 最前面的一串10个字母的字符串 // 可能像 drwxrwxr-x // 第一位 ...
- Linux驱动开发1——基础知识
1.三类驱动 字符设备驱动:字节流,/dev下有设备节点,file_operations,inode, file 块设备驱动:数据块,/dev下有设备节点,通常有文件系统 网络设备驱动:网络报文的收发 ...
- Linux下Apache(HTTP)基础知识梳理-运维笔记
HTTP介绍: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传 ...
- linux 学习随笔-shell基础知识
1:用户的shell历史命令保存在home/username/.bash_history中 #!! 执行用户的上一条命令 #!pw 执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...
- I2C基础知识
常识 两条总线线路:串行数据总线SDA,串行时钟总线SCL 每个连接到总线的器件都有唯一的地址供其他设备寻址 每个连接到总线的器件都可以作为发送器和接收器 是多主机总线,如果两个或更多主机同时初始化, ...
- 服务器Linux系统安全维护基础知识介绍
事先规划好Linux操作系统的分区 Linux操作系统的分区规划跟微软操作系统的分区规划不同.后者分区规划对于其性能的影响很小.但是Linux操作系统的分区规划则不同,其对服务器的性能影响很大.其实我 ...
- 第0章Linux环境到内核基础知识
#include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...
- Redis项目实战---应用及理论(上)---redis基础知识介绍
redis(Remote Dictionary Server) 一.原理及特性层面: 1.优势: 1)数据加载在内存中,执行速度快, 数据结构类似于HashMap,HashM ...
- R语言包在linux上的安装等知识
有关install.packages()函数的详见:R包 package 的安装(install.packages函数详解) R的包(package)通常有两种:1 binary package:这种 ...
- Linux堆的一些基础知识
目录 堆的概述 什么是堆 堆的基本操作 堆操作背后的系统调用 堆的相关数据结构 微观结构 malloc_chuck chunk相关宏 bin 宏观结构 arena heap_info malloc_s ...
随机推荐
- 大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge
前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s 大规模 IoT 边缘容器集群管理的几种架构-2-H ...
- sqlmap 简单使用
sqlmap 简单使用 环境:phpstudy:MySQL5.4.7 介绍 sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程.它有一个强大的检测引擎 ...
- JDK、JRE、JVM三者之间的关系
JDK.JRE.JVM 以下内容转载自JDK.JRE和JVM三者之间关系_geyouchao的博客-CSDN博客 侵删,谢谢 JDK:Java Development Kit (Java开发工具包) ...
- JZOJ 3242. Spacing
\(\text{Analysis}\) 最大值最小很容易想到二分答案 然后用 \(dp\) 检查 设 \(f_i\) 表示当前行最后一个为 \(i\) 时最优情况最大空格数是否小于 \(mid\) 若 ...
- EMBARK研究: 依那西普治疗早期nr-axSpA达48周的临床和MRI疗效
关键词: 放射学阴性中轴型SpA; TNF拮抗剂; 磁共振影像 EMBARK研究48周结果: 依那西普治疗早期放射学阴性中轴型SpA患者的临床与MRI疗效 电邮发布日期:2016年1月25日 文献: ...
- 坏消息,new Date()方法在IOS系统中存在null值情况
背景介绍 笔者最近在开发小程序,发现在使用new Date()函数在电脑模拟器上倒是没什么影响能很好实现效果,但是在我的Iphone上看到的效果跟预想有出入. 图为在电脑微信小程序模拟器的效果图,可以 ...
- 深度学习框架Pytorch学习笔记
由于工作原因,需要使用到深度学习pytorch框架,所以,跟随视频学习了深度学习框架的使用方法,视频链接如下: PyTorch深度学习快速入门教程(绝对通俗易懂!)[小土堆]_哔哩哔哩_bilibil ...
- 时间戳转换为yyyy-MM-dd格式
原文链接https://blog.csdn.net/hu104160112/article/details/111167033
- Docker之Redis保姆级别安装
Docker之Redis保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...
- windows下解决getAddressInfo Failed的一种办法
从九点到现在,解决完这个问题就四点了,其实不难,只是第一次遇到和我太菜. 就是管理员身份打开命令行然后输入ipconfig /flushdns,作用是刷新dns解析缓存,这还不够,如果只做这一步,重启 ...