嵌入式基础:时序图

时序图

1. 基础

  • 时序图:用于表示单片机硬件的底层通信原理
  • 多波形时序图:同一时间内,多个端口组合出的电平关系变化
  • 横轴:表示时间
  • 纵轴:表示逻辑信号0或者逻辑信号1

2. 符号

2.1. 斜线形式的上升沿、下降沿

上升沿、下降沿除了直线以外,也有斜线(因为在物理上不可能出现状态的秒变化)。

2.2. Either or 信号

表示信号在这一时间既可以高电平,也可以是低电平,常见于数据线。

2.3. 波形省略

波形省略在图中有两种常见的表现形式:

2.3.1. 虚线

2.3.2. 波浪号


2.4. 地址&数据表示

时序图上常用 A 来表示 Address, D 来表示 Data

3. 实例:WT588F语音芯片时序图

3.1. 了解背景

MCU向语音芯片发送控制指令,语音芯片按照指令运行

3.2. 分析

分析这张时序图:

  1. 默认电平状态:CLK 和 DATA 都是默认高电平
  2. 开始信号及结束信号:开始信号 CLK 拉低5ms;结束信号 CLK 和 DATA 恢复高电平
  3. 操作时序:上升沿接收数据,根据图像,需要先将 CLK 拉低、配置 DATA 数据,延时一个周期,再将 CLK 拉高延时一个周期。
  4. 数据顺序:接收数据低位在先

3.3. 列逻辑

列出详细逻辑:

  1. 初始化高电平
  2. CLK 拉低延时5ms
  3. 获取 data 最低位数据(尽可能放在数据发送之外)
  4. 循环8次,MCU 发送8位数据
  5. CLK 拉低(第1次循环的时候没有明显作用,但是后续需要)
  6. DATA 设置为指令对应逻辑电平
  7. CLK 延时一个周期
  8. CLK 拉高
  9. CLK 延时一个周期
  10. 更新待发送的数据(尽可能放在数据发送之外)
  11. 循环执行完成之后将 DATA 和 CLK 拉高

3.4. 根据逻辑写代码(伪代码)

#define CLK P1 // 引脚定义
#define DATA P2

void operation(data) // data是发送的指令数据
{
    CLK = 1;                    // 初始化高电平
    DATA = 1;
    CLK = 0;                    // CLK拉低延时5ms
    delay_ms(5); 
    b_data = data & 0x01;       // 获取data最低位数据
    for(int i=0; i<8; i++)      // 循环8次,MCU发送8位数据
    {
        CLK = 0;                // 第1次循环的时候没有明显作用,但是后续需要
        DATA = b_data;          // DATA设置为指令对应逻辑电平
        delay_us(300);          // CLK延时一个周期
        CLK = 1;                // CLK拉高
        delay_us(300);          // CLK延时一个周期

        data = data >> 1;
        b_data = data & 0x01;   // 更新待发送的数据
    }
    CLK = 1;                    //  循环执行完成之后将DATA和CLK拉高
    DATA = 1; 
}

4. Review

  • 请依据时序图写出伪代码:

参考资料

  1. 时序图秒懂指南 - 单片机时序图基本观看原理–STM32单片机数据手册时序图/波形图的电平逻辑入门 - 洋桃电子大百科P009
  2. 单片机芯片时序图究竟怎么看? - jason的回答 - 知乎
  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值