0基础 | 硬件工程师必学 | 数据手册 | 从零看懂时序图

一、什么是时序图?——新手入门基础

(一)时序图的核心要素

  • 时间轴:从左到右表示时间流逝,是时序图的“骨架”。
  • 电平信号:只有两种状态,用0(低电平,通常为0V)和1(高电平,如3.3V/5V)表示。
  • 核心作用:展示电路中信号随时间的变化关系,帮助理解数字电路的工作逻辑。

(二)为什么要学时序图?

  • 硬件工程师的“语言”:芯片手册、通信协议(如I2C、SPI)都通过时序图定义信号规则。
  • 排查故障关键:信号时序错误会导致设备无法通信,看懂时序图才能定位问题。

二、时序图分析技巧——5个步骤轻松上手

(一)基础观察法(适合所有时序图)

  1. 从上到下看信号
    每条横线代表一个信号(如I2C的SCL时钟线、SDA数据线),上下排列展示多信号的联动。
     
  2. 从左到右看时间
    关注信号什么时候变高/变低,以及高低电平持续多久(有时间刻度时精确分析,无刻度时关注变化顺序)。
     
  3. 抓住关键变化点
     
  • 上升沿:信号从0→1(如↑)
     
  • 下降沿:信号从1→0(如↓)
     
  • 稳定期:信号保持高或低电平的时间段。

(二)进阶分析技巧(分场景应用)

场景1:单个信号怎么看?
  • 看持续时间:标注时间(如“3-6s低电平”)时,需严格遵守;未标注时,只需关注高低状态,不纠结具体时长。
     
  • 看过渡过程:实际电路中,电平不会瞬间跳变,斜线表示过渡时间(高速电路中需注意过渡时间是否过长导致信号失真)。

 案例一:考虑时间会标出时间长度,如果不标注时间长度,则不需要考虑时间

案例二:电平从某个电平到某个电平之间变换所耗费的时间,以下表示的是电平之间的过渡

案例三:物理的变化,电平的变化不可能是瞬间完成的,它需要一定的过渡时间

场景2:多个信号怎么看?
  • 找主从关系:例如SPI协议中,SCK时钟信号是“主”,MOSI/MISO数据信号随SCK变化。
     
  • 抓同步规则:如I2C协议中,SDA数据仅在SCL低电平时允许变化,高电平时必须稳定。
     
  • 注意虚线含义:虚线表示省略中间重复波形,聚焦核心信号变化(如连续传输多个字节时,中间波形用虚线简化)。

案例一:多波形图主要用于在同一时间内,多个端口组合出的电平变换关系,例如I2c总线

案例二:虚线部分省略了中间过程中的很多波形的表示,还有一种和上面的表示类似

案例三:主机、从机的发送关系

三、数字电路的“语言”——电平与逻辑关系

(一)电平的两种状态

逻辑状态

电平信号

常见电压值

含义

0

低电平

0V

电路断开、无效状态

1

高电平

3.3V/5V

电路导通、有效状态

(二)简单例子

假设某信号时序如下:
- 0-3s:高电平(1)→ 设备A启动
- 3-6s:低电平(0)→ 设备A停止
- 6-9s:高电平(1)→ 设备A再次启动

通过高低电平的变化,就能“读懂”设备的工作节奏。

四、时序图的“说明书”——信号从哪里来?

时序图中的信号规则不是凭空出现的,主要来自两大“权威”:
1. 芯片数据手册
每个芯片的引脚(如GPIO、通信接口)都会有时序图,规定输入/输出信号的时序要求(例如:时钟信号的频率范围、数据信号的建立/保持时间)。
2. 通信协议规范
如I2C、SPI、UART等协议,明确定义了信号之间的配合规则(例如:I2C的起始信号是SCL高电平时SDA从高→低,停止信号是SCL高电平时SDA从低→高)。

五、实战案例——看懂SPI和I2C时序图

(一)SPI协议:高速串行通信(以W25Q128BV芯片为例)

1. 四根关键信号线
  • SCK:时钟信号(主设备生成,控制数据传输节奏)
     
  • MOSI:主设备→从设备数据线
     
  • MISO:从设备→主设备数据线
     
  • CS:片选信号(低电平有效,选中目标设备)
2. 读数据时序步骤(图1)
  1. CS拉低:选中芯片(如W25Q128BV)。
     
  2. 发送指令0x90:告诉芯片“我要读厂商ID和设备ID”。
     
  3. 发送24位地址0x000000:指定读取位置。
     
  4. SCK驱动数据传输:每个时钟周期传输1位数据,MSB(最高位)先传。
     
  5. CS拉高:结束通信。
3. 代码小知识
// 读ID函数片段(简化版)
uint16_t w25qxx_read_id(void) {
    W25QXX_SS = 0;          // CS拉低,选中芯片
    SPI1_SendByte(0x90);    // 发送读ID指令
    SPI1_SendByte(0x00);    // 发送24位地址(分3次发)
    SPI1_SendByte(0x00);
    SPI1_SendByte(0x00);
    uint8_t mid = SPI1_SendByte(0xFF);  // 读厂商ID(EFh)
    uint8_t did = SPI1_SendByte(0xFF);  // 读设备ID(17h)
    W25QXX_SS = 1;          // CS拉高,结束
    return (mid << 8) | did;
}

(二)I2C协议:低速多设备通信(以AT24C02 EEPROM为例)

1. 两根关键信号线
  • SCL:时钟线(主机生成,同步数据传输)
     
  • SDA:数据线(双向,传输数据和地址)
2. 写数据时序步骤(图2)
  1. 起始信号:SCL高电平时,SDA从高→低(通知从设备“开始通信”)。
     
  2. 发送设备地址:7位地址+1位读写标志(写操作:地址0xA0,读操作:0xA1)。
     
  3. 发送内存地址:指定数据要写入的位置(如0x00表示从EEPROM的第一个字节开始写)。
     
  4. 发送数据:每个字节后等待从机应答(ACK,SDA拉低表示成功接收)。
     
  5. 停止信号:SCL高电平时,SDA从低→高(结束通信)。
3. 硬件小知识
  • 设备地址由芯片引脚决定:AT24C02的地址是1010 A2 A1 A0 R/W,其中A0-A2接GND时,地址为1010 0000(0xA0,写操作)。
     
  • 上拉电阻:SCL和SDA需外接上拉电阻(如4.7kΩ),确保信号稳定。

六、常见问题——零基础避坑指南

  1. Q:时序图中的斜线和竖线有什么区别?
    A:无特殊标注时,斜线表示电平过渡时间(实际电路中的真实变化),竖线是简化画法(理想状态,忽略过渡时间),两者含义相同,无需纠结。
     
  2. Q:看不懂芯片手册的时序图怎么办?
    A:先查协议规范(如I2C官方文档),再对照芯片手册的“时序参数表”,重点看信号的先后顺序和有效电平。
     
  3. Q:为什么我读出来的数据全是0xFF
    A:3大可能原因:①硬件接线错误(如CS未拉低);②软件时序写错(如发送指令顺序错误);③芯片未擦除(新芯片默认数据为0xFF,擦除后才会写入有效数据)。

七、总结——学习路线图

  1. 第一步:掌握基础概念(电平、时间轴、上升沿/下降沿)。
     
  2. 第二步:拆解简单案例(如单个信号的高低变化)。
     
  3. 第三步:动手实践(用开发板调试SPI/I2C设备,对比代码与时序图)。
     
  4. 第四步:挑战复杂时序(如DDR内存、USB协议的时序图)。

记住:时序图是硬件设计的“法律文件”,每一个信号的变化都有严格规则,看懂它,就能让芯片“听懂”你的指令!

附录:关键术语中英对照

中文

英文

缩写

含义

时序图

Timing Diagram

-

展示信号随时间变化的图形

高电平

High Level

1

电路导通状态

低电平

Low Level

0

电路断开状态

上升沿

Rising Edge

信号从0→1的变化

下降沿

Falling Edge

信号从1→0的变化

主设备

Master

-

发起通信的设备(如单片机)

从设备

Slave

-

响应通信的设备(如传感器)

(注:文中“图1”“图2”需根据实际文档中的图片编号插入,建议在Word中使用“插入图片”功能,并添加图注,如“图1 SPI读ID时序图”“图2 I2C写数据时序图”。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值