如何用示波器调试波形
序
无论是做嵌入式硬件工程师,还是做嵌入式软件工程师,示波器的使用都可以算是必备技能了,因为我们在做一些牵扯到时序的项目时,遇到一些问题,看是看不出来的,用示波器抓波形往往更直观一些。恰好手头一个项目用到了SN74HC164PWRG4 串转并8位输出移位寄存器,这里以此为例讲下如何调试波形。
74HC164简介
1.管脚图
图1是该芯片管脚图,A,B是与非门输入端,Qa~Qh是8位并行输出端,CLR是清除寄存器内数据,CLK是时钟管脚。
图1 管脚图
2.逻辑图
从图2可以看出QA=!!(A&B)=A&B
,QB=!!QA=QA,即若B=1,则QA与A逻辑关系保持一致,另外QH是第一个时钟时的数值,QA是第八个时钟时的值。
图2 逻辑图
3.真值表
图3是74H164的真值表,当CLR为0时,可以认为芯片不工作
图3 真值表
案例
硬件原理图
图4 实际接法
图4是项目中的实际接法,用IO口1作为芯片唯一的数据输入端,IO口2模拟时钟输入端,输出端只用到了QA~QD(LED灯,低电平点亮)。
源代码
#define CHIPCLK PAout(3) //PA3作为时钟输入
#define CHIPDAT PAout(4) //PA4作为数据输入/*参数高四位表示QA,QB,QC,QD,QA为最高位,为了符合人的习惯,点亮将相应位置一就行*//*中间加的几个延时使时钟与数据错开,看着更舒服*/void led(uint8_t state){uint8_t i;for(i=0;i<8;i++) //需要移位8次(本项目实际4次也可以){CHIPCLK=0; //和下面 CHIPCLK=1;组成一个上升沿用于数据移位delay_us(10); //延时10us,记作delay_1if(state&0x01) //从低位右移,数据切换CHIPDAT = 0;elseCHIPDAT = 1; delay_us(10); //delay_2CHIPCLK=1;//和上面 CHIPCLK=0;组成一个上升沿用于数据移位state>>=1; //数据右移,准备下一次移位delay_us(20); //delay_3}}int main(void){ int j = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置系统组优先级delay_init(); //延时初始化RCC_Config(); //打开GPIOA时钟GPIO_Config(); //将PA3和PA4配置成推挽输出while(1){led(0xA0); //0x1100 0000 点亮LED1,LED3}}
LED(0XA0)波形分析
上面那个代码是结合实际情况写的,对应波形看着不太协调(但是仅仅是看着不太协调,没有任何问题),调用led(0xa0),输出的8位应该是0101 1111,又因为是先发低位,所以按时序实际是1111 1010,看懂应该没问题,下面截图,黄色是时钟,蓝色是数据
1首先看下正确波形
看上图,从左至右,箭头处对应的是8个时钟上升沿,看相应时刻的数据电平 1111 1010,和算的一样,没毛病,下面以第8个时钟沿为例,分析下代码中三个延时的作用。
2.去掉delay_1(看代码延时注释)
结合上面代码分析,本来在第七个时钟的下降沿拉低之后,延时10us,蓝色高电平拉低,然后去掉delay_1时,在时钟拉低瞬间,数据切换蓝色电平拉低,瞬间觉得波形不好看了有木有(主要是不好分析波形了)。
2去掉delay_2
看红色箭头这里,本来蓝色电平拉低之后延时10us,时钟才拉高,结果去掉之后,蓝色电平拉低瞬间,时钟拉高,这时候波形更不协调了,那么delay_1和delay_2都去掉呢?
可以看到图形基本走样了,时钟线快变成一条直线。
3.去掉delay_3
可以看到去掉delay_3之后,每一次移位,时钟先拉低,然后完成数据切换,时钟拉高,但是拉高不做保持,瞬间拉低进行下一次移位,相当于时钟波形的高电平端被截掉了。
总结
本篇文章目的是给一个案例,一是如何从波形分析数据,二是如何设置合理的延时时间,从而使展现的波形更有利于分析。
如何用示波器调试波形相关推荐
- 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统
本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...
- 如何用示波器测量市电?
在ZDS2022示波器推广的过程中,经常有一线的工程师来与我们交流在市电测量上的一些疑惑,大致是以下几个问题: 1.为什么我用示波器测量市电总是跳闸呢? 2.测量市电为什么一定要将三脚插头的地线掰断才 ...
- 如何用示波器准确地测量电源纹波?
如何用示波器准确地测量电源纹波? 2016-11-01 22:51 | 海洋仪器 测量电源纹波本身有一定技巧性.下图1给出了一个不正确使用示波器测量电源纹波的实例.在这个例子中出现了以下几个错误:一是 ...
- 示波器调试RS485通信波形图
由于笔者在调试STM32移植的MODBUS协议的时候遇到了一些问题,需要借助示波器来看波形,而关于485通信波形相关的资料网上不多,所以把自己调试过程中的波形记录下来. 硬件:STM32单片机,1个主 ...
- 用示波器调试模拟串口
串口是单片机与外部联系的主要通道,一般地,单片机都会设置有标准的串口.但是,在实际工作时往往会发现,由于通信的通道数多于原有的标准串口,开发者不得不用普通的I/O口模拟标准串口以满足实际工作的需要.用 ...
- 如何用示波器导出csv数据
前言 要保存示波器的波形数据,需要将数据保存为csv格式,便于matlab读取波形和还原波形,或者绘制出波形,理论上你示波器能存多少数据,matlab都能分析,进行时域分析或者频域分析,今天我就来讲一 ...
- keil仿真和使用示波器调波形
keil仿真和使用示波器调波形 一.keil仿真和使用示波器调波形 (一)仿真设置 (二)调试 二.使用示波器查看 (一)软件下载 (二)认识软件 (三)用Logic显示波形 三.总结 四.参考资料 ...
- 【二代示波器教程】第5章 示波器设计—波形快速刷新方案
完整教程下载地址: https://www.armbbs.cn/forum.php?mod=viewthread&tid=45785 第5章 示波器设计-波形快速刷新方案 本章节 ...
- 示波器数据用matlab进行fft,示波器CSV波形数据导入Matlab进行FFT分析.doc
示波器CSV波形数据导入Matlab进行FFT分析 1,将CSV文件拖到workspace窗口,弹出的Import Wizard窗口中,点选"Next",新窗口中选第二项" ...
最新文章
- npm构建脚本_NPM脚本简介
- 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
- tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
- 谷歌已推送 Android Q Beta 1
- 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对
- python--继承
- 什么是Redis的VM机制
- php四段拼接ip,合并相同的ip段算法
- windows强制删除文件命令
- 有没有发现不会写简历,感觉什么都不会?其实写简历也是一种艺术。
- 用计算机弹歌旧梦一场歌词,早知惊鸿一场何必情深一往是什么歌 《旧梦一场》歌词哪里听...
- 智能机器人走迷宫c语言游戏,(动态规划)机器人走迷宫问题(示例代码)
- 计算机专业学英语建模,英语翻译段子如下:三维建模技术主要的方法就是利用计算机三维制作软件进行三维基础建模,这主要包括多边形建模方式建模、NUR...
- 长江口陆地、岛屿变迁与沙地人迁徙史.doc
- 我的飞桨学习赛:英雄联盟大师预测
- vue elementui 表格搜索筛选栏组件封装
- Springboot实现手机短信服务
- src和href的区别
- 中小学数学卷子自动生成程序-----队友项目评价
- 硬件负载均衡和软件负载均衡
热门文章
- 如何实现电脑远程操控西门子触摸屏画面
- u盘插linux电脑不好使,u盘插电脑没反应怎么办的几种真正解决方式
- 论文笔记32 -- Conformer: Local Features Coupling Global Representations for Visual Recognition
- 微软4000亿收购动视暴雪,背后逻辑是什么?
- xp系统创建wifi连接服务器,xp笔记本连接无线wifi简便教程
- 工业级环网交换机是做什么的?
- CTSCAPIO 2017游记
- c++ 0x8000ffff灾难性故障_硬盘出了故障就换?教你一招,不花一分钱就能修复!...
- #一日一图#谁来暖床!
- beeline安装_Beeline使用