深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第一篇:I2C总线协议深度解剖

第一篇:I2C总线协议深度解剖

副标题 : 两根线如何征服千亿设备?详解硬件工程师必须掌握的通信奥义


1. 为什么I2C仍是嵌入式经典?

1.1 总线拓扑的哲学

拓扑对比图
在这里插入图片描述
SPI需4线+N片选 vs I2C仅2线级联
UART点对点 vs I2C多主从架构

成本控制实例 :某智能手表传感器模组布线成本节省37%

1.2 技术演进时间线

  • 1982~2023关键节点
年份事件速率提升
1982Philips发布初版标准100kHz
1998专利开放引发生态爆发400kHz
2007加入高速模式(HS-mode)3.4MHz
2014最新版UM10204规范5MHz

1.3 当代应用场景

  • 工业领域 :PLC模块中的板载温度传感器链
  • 消费电子 :手机摄像头模组的控制总线

2. 物理层核心机制

2.1 电气特性深度解析

  • 开漏输出原理
    电路中仅使用一个N沟道晶体管。晶体管的漏极直接输出,没有连接到电源电压。工作原理:当晶体管导通(开启)时,输出端接近地线;当晶体管关闭时,输出端是悬空的,需要外部上拉电阻连接到高电平,以确保输出端能够达到高电平状态。
    优点:简化了驱动电路,方便与不同电压的电路接口,常用于I2C等总线通信协议中。
    缺点:输出高电平时依赖外部上拉电阻,对电路的设计提出了额外要求;输出电流能力较弱。

  • 为何需要上拉电阻?避免总线"锁死"的数学证明

  • 上拉电阻计算黄金公式

  Rp(min) = (VDD - VOL(max)) / IOL  Rp(max) = tr / (0.8473 × Cb)  其中:  tr = 上升时间(规范要求<1μs@100kHz)  Cb = 总线总电容(包括线路+器件引脚)  
  • 实例计算:当VDD=3.3V, Cb=200pF时,Rp取值区间

2.2 地址扩展的演进

  • 7位 vs 10位寻址对比表
特性7位地址10位地址
设备数量112个1008个
首字节格式0bAAA AAAA R/W0b1111 0AX R/W
典型应用传感器大型存储阵列

3. 协议层关键时序

3.1 起止信号的时间密码

  • 时序参数规范表
参数标准模式快速模式单位
tSU:STA4.70.6μs
tHD:STA4.00.6μs
tSU:STO4.00.6μs
  • 常见设计错误
    案例1:FPGA主频过高导致tSU:STA不满足
    案例2:未考虑线延迟引发的建立时间违例

3.2 ACK/NACK应答机制

  • 从机响应流程图
  Master发送字节 → 释放SDA → 从机在第9时钟拉低SDA → Master检测ACK  
  • NACK的三种含义
  1. 从机地址不匹配
  2. 写入时从机寄存器不可写
  3. 读取时主机应终止传输

3.3 时钟拉伸(Clock Stretching)

  • 典型应用场景
    低速从机(如EEPROM)的数据准备期
    安全芯片的加密计算耗时阶段
  • Verilog处理代码片段
  always @(posedge scl) begin  if (slave_busy)  scl_out <= 1'bz;  // 释放SCL线  else  scl_out <= scl_gen;  end  
4. I2C 协议时序要求

4.1 I2C传输开始结束时序
SCL: 高电平
SDA: 高电平 -> 低电平 传输开始
低电平 -> 高电平 传输结束
在这里插入图片描述
4.2 I2C有效数据时序
SCL:高电平时,SDA保持不练
SDA: SCL低电平时,SDA允许变化
在这里插入图片描述
4.3 I2C数据传输时序
Byte format: MSB first
在这里插入图片描述
在这里插入图片描述

配套资源
  1. I2C协议检查表 (PDF下载):包含22个关键参数速查表
  2. I2C 协议 2021版本 :62页完整I2C协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 索引优化以及慢查询优化

在数据库性能优化中&#xff0c;索引优化和慢查询优化是两个关键环节。合理使用索引可以显著提高查询效率&#xff0c;而识别和优化慢查询则能提升整体数据库性能。本文将详细介绍MySQL索引优化和慢查询优化的方法和最佳实践。 一、MySQL 索引优化 1.1 索引的基本概念 索引是…

vue使用Pinia实现不同页面共享token

文章目录 一、概述二、使用步骤安装pinia在vue应用实例中使用pinia在src/stores/token.js中定义store在组件中使用store登录成功后&#xff0c;将token保存pinia中向后端API发起请求时&#xff0c;携带从pinia中获取的token 三、参考资料 一、概述 Pinia是Vue的专属状态管理库…

通俗版解释CPU、核心、进程、线程、协程的定义及关系

通俗版解释&#xff08;比喻法&#xff09; 1. CPU 和核心 CPU 一个工厂&#xff08;负责干活的总部&#xff09;。核心 工厂里的车间&#xff08;比如工厂有4个车间&#xff0c;就能同时处理4个任务&#xff09;。 2. 进程 进程 一家独立运营的公司&#xff08;比如一家…

用 VS Code / PyCharm 编写你的第一个 Python 程序

用ChatGPT做软件测试 编写你的第一个 Python 程序——不只是“Hello, World”&#xff0c;而是构建认知、习惯与未来的起点 “第一行代码&#xff0c;是一个开发者认知世界的方式。” 编程的入门&#xff0c;不只是运行一个字符串输出&#xff0c;更是开始用计算机思维来理解、…

amd架构主机构建arm架构kkfileview

修改本机使用镜像仓库地址 vim /etc/docker/daemon.json {“experimental”: true, “registry-mirrors”: [ “https://docker.m.daocloud.io”, “https://docker.1panel.live”, “http://mirrors.ustc.edu.cn/”, “http://mirror.azure.cn/”, “https://docker.hpcloud.c…

[Linux] vim及gcc工具

目录 一、vim 1.vim的模式 2.vim的命令集 (1):命令模式 (2):底行模式 3.vim配置 二、gcc 1.gcc格式及选项 2.工作布置 三、自动化构建工具makefile 1.基本使用方法 2.配置文件解析 3.拓展 在linux操作系统的常用工具中&#xff0c;常用vim来进行程序的编写&#xff1b…

数据库3——视图及安全性

视图及安全性 学习内容学习感受 学习内容 一、实验目的与要求&#xff1a; 1、设计用户子模式 2、根据实际需要创建用户角色及用户&#xff0c;并授权 3、针对不同级别的用户定义不同的视图&#xff0c;以保证系统的安全性 二、实验内容&#xff1a; 1、 先创建四类用户角色&…

Oracle数据库如何进行冷备份和恢复

数据库的冷备份指的是数据库处于关闭或者MOUNT状态下的备份&#xff0c;备份文件包括数据文件、日志文件和控制文件。数据库冷备份所用的时间主要受数据库大小和磁盘I/O性能的影响。由于数据库需要关闭才能进行冷备份&#xff0c;所以这种备份技术并不适用724小时的系统。尽管冷…

SAP HCM 0008数据存储逻辑

0008信息类型&#xff1a;0008信息类型是存储员工基本薪酬的地方&#xff0c;因为很多企业都会都薪酬带宽&#xff0c;都会按岗定薪&#xff0c;所以在上线前为体现工资体系的标准化&#xff0c;都会在配置对应的薪酬关系&#xff0c;HCM叫间接评估&#xff0c;今天我们就分析下…

FPGA在光谱相机中的核心作用

FPGA&#xff08;现场可编程门阵列&#xff09;作为光谱相机的核心控制与加速单元&#xff0c;通过硬件级并行处理能力和动态可编程特性&#xff0c;实现高速、高精度的光谱数据采集与处理。以下是其具体作用分类&#xff1a; 一、高速光电信号处理 ‌实时光谱复原‌ 通过硬…

入门OpenTelemetry——部署OpenTelemetry

OpenTelemetry 部署模式 OpenTelemetry Collector 按部署方式分为 Agent 和Gateway 模式。 Agent 模式 在 Agent 模式下&#xff0c;OpenTelemetry 检测的应用程序将数据发送到与应用程序一起驻留的&#xff08;收集器&#xff09;代理。然后&#xff0c;该代理程序将接管并…

Windows 上安装下载并配置 Apache Maven

1. 下载 Maven 访问官网&#xff1a; 打开 Apache Maven 下载页面。 选择版本&#xff1a; 下载最新的 Binary zip archive&#xff08;例如 apache-maven-3.9.9-bin.zip&#xff09;。 注意&#xff1a;不要下载 -src 版本&#xff08;那是源码包&#xff09;。 2. 解压 Mave…

摩方 12 代 N200 迷你主机(Ubuntu 系统)WiFi 抓包环境配置教程

摩方12代N200迷你主机标配 Intel AX201无线网卡&#xff0c;支持 WiFi 6 协议&#xff08;802.11ax&#xff09;及蓝牙5.2。此网卡兼容主流抓包工具&#xff0c;但需注意&#xff1a; 驱动兼容性&#xff1a;Ubuntu 20.04及以上内核版本&#xff08;5.4&#xff09;默认支持AX2…

轻量、优雅、高扩展的事件驱动框架——Hibiscus-Signal

在现代企业级应用中&#xff0c;事件驱动架构&#xff08;EDA&#xff09;已成为解耦系统、提升扩展性的利器。今天给大家推荐一个非常优秀的国产轻量级事件驱动框架 —— Hibiscus Signal&#xff0c;它不仅天然整合 Spring Boot&#xff0c;还提供完整的事件生命周期支持&…

集合-进阶

Collection collection的遍历方式 迭代器遍历 不依赖索引 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class mycollection {public static void main(String[] args) {//1.创建集合并添加元素Collection<String> co…

【八股战神篇】Java集合高频面试题

专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xff0c;上万道面试题&#xff0c;进行综合排序提炼出排序前百的高频面试题&#xff0c;并对这些高频八股进行关联分析&#xff0c;将每个高频面试题可能进行延伸的题目再次进行排序选出高频延伸八股题。面试官都是以点破…

Android之横向滑动列表

文章目录 前言一、效果图二、使用步骤1.xml布局2.代码3.HomeHxBean3.adapter4.item布局5.两个drawable 总结 前言 横向滑动列表有多种实现方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介绍recyclerview。 一、效果图 二、使用步骤…

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…

【机器人】复现 WMNav 具身导航 | 将VLM集成到世界模型中

WMNav 是由VLM视觉语言模型驱动的&#xff0c;基于世界模型的对象目标导航框架。 设计一种预测环境状态的记忆策略&#xff0c;采用在线好奇心价值图来量化存储&#xff0c;目标在世界模型预测的各种场景中出现的可能性。 本文分享WMNav复现和模型推理的过程&#xff5e; 下…

英语学习5.17

attract &#x1f449; 前缀&#xff1a;at-&#xff08;朝向&#xff09; &#x1f449; 含义&#xff1a;吸引&#xff08;朝某处拉&#xff09; 例句&#xff1a;The flowers attract bees. &#xff08;花吸引蜜蜂。&#xff09; distract &#x1f449; 前缀&#xff…