Linux上的I2C基础知识
2024-10-21 09:45:59
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
最新文章
- CentOS 7下MySQL服务启动失败的解决思路
- 案例研究:CopyToAsync
- Failed to create the Java Virtual Machine.问题的解决
- python基础_字典_列表_元组考试_day4
- 学习C语言的数组
- select into from和insert into select from两种表复制语句区别
- (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
- 【noip2012】疫情控制
- hdu_1403_Longest Common Substring(后缀数组的应用)
- ExceL转PDF
- 常用的Python代码段
- MTU介绍以及在windows和linux下怎么设置MTU值
- git常用命令总结--廖雪峰老师Git教程命令总结
- AtCoder Grand Contest 030题解
- How to RAMDISK on macOS
- MyBatis中使用实体中使用枚举,数据库中使用数值
- 标志寄存器在Debug中的表示
- metamask源码学习-metamask-controller.js
- JAVA常识1
- Final互评------《I do》---- 二次元梦之队