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

最新文章

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

热门文章

  1. JavaSE 对象与类(二)
  2. 用于双目重建中的GPU编程:julia-cuda
  3. nvm作用、下载、使用、常见问题
  4. rn项目启动时卡在Task :app:checkDebugAarMetadata
  5. 05 RDD练习:词频统计,学习课程分数
  6. Linux服务器监控性能测试
  7. 洛谷 P4048更新题面
  8. 升级sqlite3
  9. JQUERY动态的修改<div>样式
  10. Linux系统Shell脚本第一章:Shell脚本基础及时间同步