时序图

news/2024/9/30 3:36:34

时序图

  • 时序图
    • 1. 参考资料
    • 2. 基础
    • 3. 符号
      • 3.1. 斜线形式的上升沿、下降沿
      • 3.2. Either or 信号
      • 3.3. 波形省略
        • 3.2.1. 虚线
        • 3.2.2. 波浪号
      • 3.4. 地址&数据表示
    • 4. 实例-WT588F语音芯片时序图
      • 4.1. 了解背景
      • 4.2. 分析
      • 4.3. 列逻辑
      • 4.4. 根据逻辑写代码(伪代码)
    • 5. 总结
    • others

1. 参考资料

  • 时序图秒懂指南--单片机时序图基本观看原理--STM32单片机数据手册时序图/波形图的电平逻辑入门--洋桃电子大百科P009
  • 单片机芯片时序图究竟怎么看? - jason的回答 - 知乎

2. 基础

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

3. 符号

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

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

3.2. Either or 信号

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

3.3. 波形省略

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

3.2.1. 虚线

3.2.2. 波浪号


3.4. 地址&数据表示

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

4. 实例-WT588F语音芯片时序图

4.1. 了解背景

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

4.2. 分析

分析这张时序图:

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

4.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拉高

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

#define CLK P1 // 引脚定义
#define DATA P2void operation(data) // data是发送的指令数据
{CLK = 1;                    // 初始化高电平DATA = 1;CLK = 0;                    // CLK拉低延时5msdelay_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; 
}

5. 总结

  1. 请依据时序图写出伪代码

others

我记得最一开始接触时序图的时候,觉得它好难,不想看。但是这次复习这部分知识的时候,又觉得好简单,视频两倍速我都觉得速度有点慢。复习的时候这种时刻最爽了,感觉现在的自己比之前厉害好多。

从我的经验来说,根据时序图进行编码的时候需要注意两个问题:

  • 一是在通讯的代码中不要随便打印内容进行debug。这个说起来很蠢,但是我就是这样干的,为了检查代码运行是否正常,在通讯程序中添加了串口打印,本身程序执行就是需要时间的,这种处理很有可能影响正常通讯。
  • 二是如果项目是在RTOS基础上构建的情况下,需要注意最小的延时范围。比如我之前的实践当中,配置FreeRTOS的tick是1ms,我如果想要实现300us的延时,是没有办法直接通过系统的delay函数实现的,还是需要使用硬件定时器去处理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

移动端定位打卡

签到按钮脚本 Mobile_NS.getCurrPosition(function(result){var lngdangq = result["lng"];var lathoum = result["lat"];var minDistance = null;//alert("addr"+addr);var dkzt = $f("dkzt").val();//alert(dkzt);if(dkzt==0){//$f(…

3秒修复老照片,一键智能变高清!

你肯定有一些年代久远的老照片,以及网络下载的图片或视频,不够高清还非常模糊,如果能一键修复成高清就好了!现在推荐一款神奇的Real-ESRGAN镜像,可以将模糊老照片和视频修复成高清晰,动动手分分钟帮你一键焕新!操作指南这就马上附上!你肯定有一些年代久远的老照片,以及…

使用pyautogui向下滚动条到底

使用pyautogui向下滚动条到底 一、pyautogui简介 pyautogui是一个用于模拟鼠标和键盘操作的Python模块,它可以用来自动化执行一些重复性的任务,提高工作效率。在这篇文章中,将学习如何使用pyautogui模块来实现向下滚动条到底的功能。 二、安装pyautogui模块 在使用pyautogui…

EC11的中断实验——NVICEXTI

本文隶属于《GD32 示波器项目软件部分重难点及相关疑问解决》 4-EC11的中断实验——NVIC&EXTI 4-1 实验目标以及原理图 GD32E230外部中断EXTI(中断/事件控制器)包括21个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。EXTI有三种触发类型:上升沿触…

使用stable diffusion设计logo的提示词

使用stable diffusion设计logo的提示词 Stable Diffusion是一种基于图像处理和机器学习的算法,可以用于生成各种类型的图像,包括Logo设计。本文将介绍如何使用Stable Diffusion来设计Logo,并提供一些提示词以帮助读者更好地理解和应用这种技术。 1.了解Stable Diffusion的基…

方正字体 3.0 和 5.0 的比较

默认字体就是宋体(方正书宋)主要区别在于英文字体。5.0 中的斜体、宋体、黑体和楷体的英文字体都变化较大。 个人认为 5.0 更为合理。因为斜体和楷体本身就是较为接近手写字体的字体。而 5.0 中的英文斜体和楷体改的更像手写了。

springboot+vue快速部署前后台项目,无需服务器

问题 前言 我们都知道,现在的主流开发大多数为,前后端分离,目前流行的框架,大多数是spring boot+element ui 这些框架,这无疑是给开发部署项目带来了便利,我们后台开发无需关心前端如何部署的,前端同样也无需关系后台如何部署,只需要确认能够访问即可。 存在有如下问题…