I²C那点事儿(一)

  • 简介
  • 优缺点说明
  • 简单总结
  • 参考资料

简介

  1. 不管你是从哪里听说的这个概念,我都要先告诉你,咱们15年前家里的大彩电,就是由这样的一个协议来完成控制的。当你按下遥控器的瞬间,那颗彩电的主控芯片从遥控器的红外信号得到指令,朝着村口大喇叭喊了一嗓子,你们谁是张三,村长让你这会儿去一趟村委会给你安排个活儿。后来我们知道这个大喇叭即是总线,村长安排什么活,对应你遥控器的指令,很多你自己按不出来的效果,比如出现在彩电上的大骨头图案。如此我们应该对该协议有了一个非常直观的第一印象了。那么接下来看专业说明。

    这张图告诉你有一个主机一个从机,简单来讲,SDA为serial data端口,你知道它传数据,SCL为serial clk是串行时钟口。他们按照以下格式进行传输:
    注意它和SPI一样都是逐bit传输的。那么解决传输的内容后,我们需要确定传输的步骤,毕竟协议就是干这个事儿的。注意到START_BIT为下降沿,STOP_BIT为上升沿检测。
    第一步,村长(主机)拿出大喇叭(传到总线)告诉大家听我说,也就对应这个START_BIT,此时所有村民(从机)来活了。
    第二步,村长(主机)说张三(往总线扔地址)你过来一趟村委会找你有事(读或者写)。
    第三步,听到名字的村民吱一声(ACK位确认,给0)。没听到的不吱声(ACK给1)。
    第四步,干活去吧(村民帮村长干活或者村长帮村民做事)分别对应谁是接收者,谁读谁写。
    第五步,做完了感谢一下对方,给点礼物回馈一下(确认位确认接收完毕了)。
    第六步,搞定,发送STOP_BIT,村长大喇叭宣布此次行动张三表现的不错或者他帮助张三帮的不错。任务完成。

优缺点说明

  1. 优点:第一,可以多设备主从互动,也就是可以一个人叫一个人帮忙,也可以一群人叫一个人,也可以一群叫一群,都可以。第二, 只要两根线即可以完成各种数据传输。第三,有确认位,也就是说每次数据传对传错都是知道的。第四,硬件依赖度比通用串口UART简单。也因此在工业界广泛使用。
  2. 缺点,第一,每次只能传八位最多,第二,速度慢,工业使用足够不过。第三,硬件依赖高于SPI,且协议比SPI复杂点。

简单总结

  1. I²C是很广泛使用的工业控制协议,是作为我们专业必须完全掌握的三大基础协议之一,更不用说当前更加流行速度更加夸张的一系列Serdes接口协议。必须打好基础,基础扎实才能游刃有余。
  2. 第一部分先简单介绍到这里,争取这周之前把协议详解和代码实现的笔记写出来。

参考资料

https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol/

I²C那点事儿(一)相关推荐

  1. webassembly类型_WebAssembly 那些事儿

    WebAssembly 那些事儿 什么是 WebAssembly? WebAssembly 是除 JavaScript 以外,另一种可以在网页中运行的编程语言,并且相比之下在某些功能和性能问题上更具优 ...

  2. 计算机网络技术社团纳新海报,精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~...

    原标题:精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~ 我们是谁? 计算机协会 社团 简介 社团名称:计算机协会 创办时间:2012年 组成部门:技术部,宣传部,秘书部,外联部,策划部. ...

  3. Linux那些事儿 之 戏说USB(33)字符串描述符

    关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...

  4. Linux那些事儿 之 戏说USB(28)设备的生命线(十一)

    现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都彼此的挤在一起,所以得想 ...

  5. Linux那些事儿 之 戏说USB(27)设备的生命线(十)

    跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂.再给张小表,看看现在和上次那张表出现的时候有什么变化. state        USB_STATE_ADDRESS sp ...

  6. Linux那些事儿 之 戏说USB(25)设备的生命线(八)

    回到struct usb_hcd,继续努力的往下看. 7行,又见kref,usb主机控制器的引用计数.struct usb_hcd也有自己专用的引用计数函数,看drivers/usb/core/hcd ...

  7. Linux那些事儿 之 戏说USB(22)设备的生命线(五)

    下面接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义. struct ur ...

  8. Linux那些事儿 之 戏说USB(15)设备

    struct usb_device结构冗长而又杂乱 include/linux/usb.h struct usb_device {int devnum;char devpath[16];u32 rou ...

  9. css中关于居中的那点事儿

    css中关于居中的那点事儿 关于居中,无论是水平居中,还是垂直居中都有很多方式,下面我来介绍一些常用的. 第一部分:水平居中 1.实现行内元素的居中.方法:在行内元素外面的块元素的样式中添加:text ...

  10. 观点PK | 自动驾驶传感器“一哥之争”,这事儿你怎么看?

    自动驾驶现已成为人工智能技术应用落地的热门领域,但随着无人车迈出的步伐越大,面临的安全性方面的挑战也越大.而近期不断发生的自动驾驶车辆事故也将自动驾驶安全性的问题再次推向风口浪尖.自动驾驶车辆的安全性 ...

最新文章

  1. leetcode算法题--飞地的数量
  2. C语言告警warning: missing braces around initializer详解
  3. mmsPlayer 2.0 将开源java部分
  4. 一个好用的浏览器暗色浏览插件 Dark Reader
  5. 激活策略 查询_5个提问,详细介绍北极星指标的策略框架
  6. spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获)
  7. ubuntu阿里云快速下载
  8. Linux登录日志配置,Unix系统用户登录及操作命令日志配置的方法
  9. 如何在Mac上访问 USB 驱动器?
  10. [易飞]关于应付账款明细帐余额余总账不平解决方案
  11. 网络存储学习之网络存储技术的发展现状及趋势
  12. 利用jquery 实现 京东商城 左则商品分栏
  13. 卡尔曼滤波原理学习笔记
  14. script标签中的 defer 和 async 属性
  15. 动态内存分配算法:首次适应算法,循环首次适应算法,最坏适应算法,最佳适应算法实现
  16. DLL 注入的三种方法详解
  17. 英国政府资助!Wave Photonics领导光量子集成电路封装项目
  18. STM32F03寄存器方式点亮LED流水灯
  19. 投研报告 - Ariva(ARV)
  20. 【转载】如何巧用IPD,建立完善的产品研发管理体系?

热门文章

  1. C 语言这么厉害,它自身是用什么语言写的?
  2. 在C语言中如何高效地复制和连接字符串?
  3. 开源维护者,必有一战!
  4. 苹果:失了 5G 会何妨?
  5. 8 个 Linux 下 ls 命令的高级用法!个个惊艳!
  6. 打败 Python、JS、C# 成最受欢迎编程语言,是时候掌握 Rust 了吗?
  7. @程序员们,公司 2 年不涨薪我究竟该怎么办?
  8. 程序员除了编代码,还能做哪些职业规划?
  9. 领英:经济图谱在中国,为人才就业勾画新版图
  10. 火爆全网MySQL路线笔记!java文件读取中文乱码