单片机常用工具

2019-04-15 17:28发布

工欲善其事必先利其器,我们做单片机开发的时候,不管是调试电路还是调试程序,都需要借助一些辅助工具来帮助查找和定位问题,从而帮助我们顺利解决问题。没有任何辅助工具的单片机项目开发很可能就是无法完成的任务,不过好在实际上我们总是有很多种工具可用的。本章就要介绍一些最常用的单片机项目开发辅助工具,学习他们的使用方法,让它们协助我们进行项目的开发和调试。
20.1 万用表
20.1.1 什么是万用表

万用表,也称作多用表、复用表等,是电子工程师最基本也最不可或缺的测量工具。它的基本功能包括:测量交直流电压、交直流电流、电阻阻值,检测二极管极性,测试电路通断等。有些高档一点的还会包含电容容值测量、三极管测试、脉冲频率测量等。万用表大体可分为两类:指针万用表和数字万用表,先来看图认识一下,如图20-1所示。
 
20-1  指针万用表、数字万用表、自动量程万用表 目前,指针万用表基本上已经被淘汰了,只在某些特殊场合才能见到(比如科研和教学机构),而数字万用表是当今的绝对主流。图中最右边的自动量程万用表也是数字万用表的一种,顾名思义,它能自动切换量程,不用你自己再手动拨动了,但档位(指电压、电流、电阻等这些不同的测量项目)还是要手动拨的,无疑自动量程万用表更高级一点,用起来也更省事。所以我们下面就以手动量程的数字万用表为例,来讲解万用表的使用方法。
20.1.2 万用表的使用方法
要用万用表完成一项实际的测量工作,除了要有如图20-1的万用表的主体机身之外,还得有两支表笔才行,表笔通常都是一只黑 {MOD}、一只红 {MOD},如图20-2所示。        20-2 万用表表笔、机身上的表笔插孔特写 对照图中的表笔插孔,使用万用表进行具体测量时,黑 {MOD}表笔要插到标有“COM”的黑 {MOD}插孔里,而红 {MOD}表笔根据测量项目的不同,插到不同的插孔:测量小电流(≤200mA)信号时插到“mA”插孔,测量大电流(大于200mA)信号时插到“20A”插孔,其余测量项目均插到标有“VΩ”的插孔。要特别注意进行不同测量项目时千万不要插错了位置! 插好表笔之后还要选择档位和量程,靠机身中间的档位旋钮开关来实现,如图20-3所示。  
20-3 万用表档位开关 围绕旋钮开关的一圈分为了多个档位:电阻Ω、电容F、关闭OFF、三极管hFE、直流电压V—、交流电压V~、直流电流A—、交流电流A~、二极管、通断。有的档位不分量程,而有的档位则包含多个量程,看图即可一目了然了。下面我们介绍几个最常用的档位的使用方法。 交直流电压:交流和直流电压的测量方法是完全相同的,仅根据具体的被测信号选择不同的档位量程即可。首先在测量前对被测信号的幅值应该有一个大概的评估,然后根据这个大概值去选择档位:比如照明电是220V交流,那么选择交流电压750V档位(绝不能选择低于被测信号最大值的档位,以免损坏万用表);单片机系统多数都在5V以下,那么选择直流电压20V档位。选择好档位后就可以把表笔接入被测系统了,如果是交流电压自然就无所谓方向了,两支表笔的低位也就是等同的了,把它们分别接触到两个被测点上即可,如果是直流信号,那么最好是红 {MOD}表笔接电压高的一点,而黑 {MOD}表笔接电压低的一点。有时候我们习惯上只说某一点的电压是多少多少,而不是说哪两点之间的电压是多少,其实此时这某一点都是针对参考地来说的,即该点和参考地之间的电压,那么通常来说黑表笔就是接触到参考地上的了。 电阻:电阻阻值的测量很简单,先把档位开关打到Ω档,如果不知道大概的阻值范围,就选择最大量程,然后用两支表笔分别接触待测电阻的两端即可,根据屏幕显示的数值可进一步选择更加合适的量程。值得一提的是,多数万用表进行测量时都有一个反应时间,慢的话需要等上几秒才能显示出一个稳定的测量值,所以大家在使用的时候也不要太心急哦。 交直流电流:电流的测量相对复杂一点,因为测量电流将万用表串联的回路中。那么首先需要我们把待测回路在某一个点上断开,把红表笔从VΩ插孔换到mA20A插孔中(同理根据事先大概的评估来选择,如无把握就选择20A孔,如实测数值很小则再换到mA孔),把档位开关打到mA20A档位上,然后用万用表的两支表笔分别接触断点的两端,也就是用表笔和万用表本身将断开的回路再连起来,这样万用表就串在原来的回路中了,此时就可以在屏幕上读到电流的测量值了。需要特别注意的一点是:当每次测量完电流后,都必需把插在电流插孔上的红表笔插回到VΩ插孔,以免其他人随后拿去测其他信号时造成意外短路损坏被测设备或万用表。 二极管和通断:有的万用表上二极管和通断是同一个档,有的是分开的两个,这从一个侧面说明它们在原理上相同的。万用表从两支表笔之间输出一个很小的电流信号,通常为1mA或更小,然后测量两支表笔之间的电压,如果这个电压值很小,小到几乎为0,那就可以认为此时两支表笔之间是短路的,即被测物是连通的导线或等效阻值很小而近似通路,反之如果这个电压值很大以致超量程了(通常屏幕会在高位显示一个1后面是空白或者是OL之类的提示),那么就可以认为两支表笔之间的被测物是断开的或者说绝缘的,这就是通断功能。通常当万用表检测到短路(即“通”)时还会发出提示声音。那么二极管呢,同样是这个原理,如果测到的电压值大约等于一个PN结的正向导通电压(硅管0.5~0.7V、锗管0.2~0.3V),那么说明此时与红表笔接触的就是二极管的阳极,黑表笔接触的是阴极,反之如果显示超量程那么说明二极管接反了,你需要再反过来再测,如果正反电压都很小,或者都很大,那么说明二极管可能是坏了。 介绍完了万用表最常用的功能和使用方法,那么再来看它在我们单片机开发中能起到什么作用的。当你自己辛辛苦苦搭建好了一套单片机系统,满怀期待的上电,而她却很不给面子的罢工时,该怎么办呢?首先就要检查电源是否正常:用万用表的直流电压档测量单片机的供电电源,看是否是在5V左右(以5V单片机系统为例,其它电压的系统请对号入座),以先确定作为整个系统基础的电源是否有故障。然后再检查复位信号电压是否正常、其它控制信号电压是否正常等。一步步查找,一步步排除问题,再查找排除问题的过程中,通断功能就是一个很好的帮手,它可以告诉你电路板的哪条线路是通的,哪条线路没通上,或是哪条线路对地或对其它线路短路了等等。而其它的电阻、电流、频率等也都各有用处,只是不想电压和通断如此常用,就不再赘述了,大家在实践中慢慢体会吧。
20.2 示波器
20.2.1 什么是示波器

示波器,“人”如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心功能就是为了把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等等。它的发展同样经历了模拟和数字两个时代,还是先来看图认识一下,如图20-4所示。  
20-4 模拟示波器、数字示波器、示波器探头 目前,模拟示波器也基本上被淘汰了,现在是数字示波器的天下。同理,我也将只以数字示波器为例来加以讲解。 数字示波器,更准确的名称是数字存储示波器,即DSO(Digital Storage Oscilloscope)。这个“存储”不是指它可以把波形存储到U盘等介质上,而是针对于模拟示波器的即时显示特性而言的。模拟示波器靠的是阴极射线管(CRT,即俗称的电子枪)发射出电子束,而这束电子在根据被测信号所形成的磁场下发生偏转,从而在荧屏上反映出被测信号的波形,这个过程是即时地,中间没有任何的存储过程的。而数字示波器的原理却是这样的:首先示波器利用前端ADC对被测信号进行快速的采样,这个采样速度通常都可以达到每秒几百M到几G次,是相当快的;而示波器的后端显示部件是液晶屏,液晶屏的刷新速率一般只有几十到一百多Hz;如此,前端采样的数据就不可能实时的反应到屏幕上,于是就诞生了存储这个环节:示波器把前端采样来的数据暂时保存在内部的存储器中,而显示刷新的时候再来这个存储器中读取数据,用这级存储环节解决前端采样和后端显示之间的速度差异。 很多人在第一次见到示波器的时候,可能会被他面板上众多的按钮唬住,再加上示波器一般身价都比较高,所以对使用它就产生了一种畏惧情绪。这是不必要的,因为示波器虽然看起来很复杂,但实际上要使用它的核心功能——显示波形,并不复杂,只要三四个步骤就能搞定了,而现在示波器的复杂都是因为附加了很多辅助功能造成的,这些辅助功能自然都有它们的价值,熟练灵活的应用它们可以起到事半功倍的效果。作为初学者,我们先不管这些,我们只把它最核心的、最基本的功能应用起来即可。
20.2.2 示波器的使用
跟万用表类似,要使用示波器,首先也得把它和被测系统相连,用的是示波器探头,如图20-4所示。示波器一般都会有2个或4个通道(通常都会标有14的数字,而多余的那个探头插座是外部触发,一般用不到它),它们的低位是等同的,可以随便选择,把探头插到其中一个通道上,探头另一头的小夹子连接被测系统的参考地(这里一定要注意一个问题:示波器探头上的夹子是与大地即三插插头上的地线直接连通的,所以如果被测系统的参考地与大地之间存在电压差的话,将会导致示波器或被测系统的损坏),探针接触被测点,这样示波器就可以采集到该点的电压波形了(普通的探头不能用来测量电流,要测电流得选择专门的电流探头)。 接下来就要通过调整示波器面板上的按钮,使被测波形以合适的大小显示在屏幕上了。只需要按照一个信号的两大要素——幅值和周期(频率与周期在概念上是等同的)来调整示波器的参数即可,如图20-5所示。  
20-5 示波器幅值、时间轴旋钮 如上图,在每个通道插座上方的旋钮,就是调整该通道的幅值的,即波形垂直方向大小的调整。转动它们,就可以改变示波器屏幕上每个竖格所代表的电压值,所以可称其为“伏格”调整,如以下两幅对比图所示:左图是1V/grid,右图是500mV/grid,左图波形的幅值占了2.5个格,所以是2.5V,右图波形的幅值占了5个格,也是2.5V。推荐是将波形调整到右图这个样子,因为此时波形占了整个测量范围的较大空间,可以提高波形测量的精度,如图20-6所示。     20-6 示波器伏格调整对比图 除了图20-6通常上方的伏格旋钮外,通常还会在面板上找到一个大小相同的旋钮(不一定像图20-6所示的位置),这个旋钮是调整周期的,即波形水平方向大小的调整。转动它,就可以改变示波器屏幕上每个横格所代表的时间值,所以可称其为“秒格”调整,如以下两幅对比图所示:左图是500us/grid,右图是200us/grid,左图一个周期占2个格,周期是1ms,即频率为1KHz,右图一个周期占5个格,也是1ms,即1KHz。这里就没有哪个更合理的问题了,具体问题具体对待,它们都是很合理的,如图20-7所示。     20-7 示波器秒格调整对比图 很多时候只进行上述两项调整的话,是能看到一个波形,但这个波形却很不稳定,左右乱颤,相互重叠,导致看不清楚,如图20-8所示。  
20-8 示波器触发电平调整不当的示意图 这就是因为示波器的触发没有调整好的缘故,那么什么是触发呢?简单点理解,所谓触发就是设定一个基准,让波形的采集和显示都围绕这个基准来。最常用的触发设置是基于电平的(也可基于时间等其它量,道理相同),大家看下上面的几张波形图,在左侧总有一个T和一个小箭头,T是触发的意思,这个小箭头指向的位置所对应的电压值就是当前的触发电平。示波器总是在波形经过这个电平的时候,把之前和之后的一部分存储并最终显示出来,于是就能看到图20-720-8所示的波形。如图20-9所示,我们可以看到,无论如何波形也不会经过T所指的位置,即用永远达不到触发电平,所以失去了基准的波形看上去就不稳定了。怎么调节这个触发电平的位置呢,在示波器面板上找一个标了Trigger的旋钮,如下图,转动这个旋钮就可以改变这个T的位置了。  
20-9 示波器触发旋钮 除了可以改变触发电平的值以外,还可以设置触发的方式:比如选择上升沿还是下降沿触发,也就是选择让波形向上增加的时候经过触发电平还是向下减小的时候经过触发电平来完成触发,这些设置一般都是通过Trigger栏里的按钮和屏幕方便的菜单键来完成。 只要经过上述的这三四步,你就可以把示波器的核心功能应用起来了,可以用它观察单片机系统的各个信号了。比如说上电后系统不运行,就用它来测一下晶振引脚的波形正常与否吧。需要注意的是,晶振引脚上的波形并不是方波,而是更像正弦波,而且晶振的两个脚上的波形是不一样的,一个幅值小一点的是作为输入的,一个幅值大一点的是作为输出的,如图20-10所示。  
20-10 示波器实测的晶振波形 20.3 逻辑分析仪
20.3.1 什么是逻辑分析仪

由于电路的发展是从模拟发展到数字这样的过程,因此测量工具的发展也遵循了这个顺序。现在提到测量,首先我们想到的是示波器,尤其是一些老工程师,他们对示波器的认知度非常高。而逻辑分析仪是一种新型测量工具,是随着单片机技术发展而发展起来的,非常适合单片机这类数字系统的测量分析,而通信方面的分析中,比示波器要更加方便和强大。 一个待测信号使用10MHZ采样率的逻辑分析仪去采集的话,假如阈值电压是1.5V,那么在测量的时候,逻辑分析仪就会每100ns采集一个样点,并且超过1.5V认为是高电平(逻辑1),低于1.5V认为是低电平(逻辑0)。而后呢,逻辑分析仪会用描点法将波形连起来,工程师就可以在这个连续的波形中查看到逻辑分析仪还原的待测信号,从而查找异常之处。 逻辑分析仪和示波器都是还原信号的,示波器前端有ADC,再加上还原算法,可以实现模拟信号的还原。而逻辑分析仪只针对数字信号,不需要ADC,不需要特殊算法,就用最简单的连点就可以了。此外,示波器往往是台式的,波形显示在示波器本身的显示屏上,而逻辑分析仪当前大多数是和PC端的上位机软件结合的,在电脑上直接显示波形。如图20-所示,是一款逻辑分析仪的实物图,采样率为500M16个通道,采样深度硬件深度为32M,经过压缩算法,最多可以实现每通道5G的存储深度,图20-12是逻辑分析仪的上位机软件。 20-11 逻辑分析仪实物图 图20-12 逻辑分析仪上位机软件 20.3.2 逻辑分析仪的参数
逻辑分析仪有三个重要参数:阈值电压、采样率和采样深度。 阈值电压:区分高低电平的间隔。逻辑分析仪和单片机都是数字电路,它在读取外部信号的时候,多高电压识别成高电平,多高电压识别成低电平是有一定限制的。比如一款逻辑分析仪,阈值电压是:0.7~1.4V,那么当它采集外部的数字电路信号的时候,高于1.4V识别为高电平,低于0.7V识别为低电平。 采样率:每秒钟采集信号的次数。比如一个逻辑分析仪的最大采样率是100M,那么也就是说他一秒钟可以采集100M个样点,即每10ns采集一个样点,并且高于阈值电压的认定为高电平,低于阈值电压的认定为低电平。我们前边学UART通信的时候学过每一位都会读取16次,而逻辑分析仪的原理也是类似的,就是在超频读取。你信号是1M的频率,我用100M的采样率去采集,那么一个信号周期我就可以采集100次,最后用我们小学学过的描点法把采集到的样点连起来,就会还原出信号,当然100倍采样率的脉宽误差大概是百分之一。根据奈奎斯特定律来说,采样率必须是信号频率的2倍以上才能还原出信号,因为逻辑分析仪是数字系统,算法简单,所以最低也是4倍于信号的采样率才可以,一般选择10倍左右效果就比较好了。比如你的信号频率是10M,那么你的逻辑分析仪采样率最低也得是40M的采样率,最好能达到100M,提高精确度。 存储深度:我们刚才讲了采样率,那采集到的高电平或者低电平信号,我们要有一个存储器存储起来。比如我们用100M采样率,那么1秒就会产生100M个状态样点。一款逻辑分析仪能够存储多少个样点数,这是逻辑分析仪很重要的一个指标。如果我们的采样率很高,但是存储的数据量很少,那也没有多大意义,逻辑分析仪可以保存的最大样点数就是一款逻辑分析仪的存储深度。通常情况下,数据采集时间=存储深度/采样率。 此外,逻辑分析仪还有输入阻抗和耐压值等几个简单参数。所有的逻辑分析仪的通道上,都是有等效电阻和电容的,由于测量信号的时候分析仪通道是并联在通道上的,所以分析仪的输入阻抗如果太小,电容过大,就会干扰到我们线上的信号。理论上来讲,阻抗越大越好,电容越小越好。通常情况下,逻辑分析仪的阻抗都在100K以上,电容都在10pf左右。所谓的耐压值,就是说如果你测量超过这个电压值的信号那么分析仪就可能被烧坏,所以测量的时候必须要注意这个问题。
20.3.3 逻辑分析仪的使用步骤
1、硬件通道连接。首先我们要把逻辑分析仪的GND和待测板子的GND连到一起,以保证信号的完整性。然后把逻辑分析仪的通道接到待测引脚上,待测引脚可以用多种方式引出来。 2、通道数设置。一般情况下,大多数逻辑分析仪有8通道、16通道、32通道等数目。而我们采集信号的时候,往往用不到那么多通道,为了我们更清晰的观察波形,可以把用不到的通道隐藏起来。 3、采样率和采样深度设置。首先要对待测信号最高频率有个大概的评估,把采样率设置到它的10倍以上,还要大概判断一下我们要采集的信号的时间长短,在设置采样深度的时候,尽量设置的有一定的余量。采样深度除以采样率,得到的就是我们可以保存信号的时间。 4、触发设置。由于逻辑分析仪有深度限制,不可能无限期的保存数据。当我们使用逻辑分析仪的时候,如果没有采用任何触发设置的话,从开始抓取就开始计算时间,一直到存满我们设置的存储深度后,抓取就停止。在实际操作过程中,开始抓取的一段信号可能是无用信号,有用信号可能就是其中一段,但是无用信号还占据了我们的存储空间。在这种情况下,我们就可以通过设置触发来提高存储深度的利用率。比如我们如果想抓取UART串口信号,而串口信号平时没有数据的时候是高电平,因此我们可以设置一个下降沿触发。从点击开始抓取,逻辑分析仪不会把抓到的信号保存到我们的存储器中,而是会等待一个下降沿的产生,一旦产生了下降沿,才开始进行真正的信号采集,并且把采集到的信号存储到存储器中。也就是说,从点击开始抓取到下降沿这段时间内的无用信号,被我们所设置的触发给屏蔽掉了,这是一个非常实用的功能。 5、抓取波形。逻辑分析仪和示波器不同,示波器是实时显示的,而逻辑分析仪需要点击开始,开始抓取波形,一直到存储满了我们所设置的存储深度结束,然后我们可以慢慢的去分析我们抓到的信号,因此点击“开始抓取”这个是必须要有的。 6、设置协议解析(标准协议)。如果你抓取的波形是标准协议,比如UARTI2CSPI这种协议,逻辑分析仪一般都会配有专门的解码器,可以通过设置解码器,不仅仅像示波器那样把波形显示出来,还可以直接把数据解析出来,以十六进制、二进制、ASCII码等各种形式显示出来。 7、数据分析。和示波器类似,逻辑分析仪也有各种测量标线,可以测量脉冲宽度,测量波形的频率,占空比等信息,通过数据分析,查找我们的波形是否符合我们的要求,从而帮助我们解决问题。
20.3.4 UART、I2C、SPI举例介绍
我们使用LA5016逻辑分析仪抓取串口通信数据、I2CSPI的数据界面。 首先,我把逻辑分析仪的GND和我们的KST-51开发板的GND接起来,随便找一个通道,比如用通道3和板子的P3.1引脚接起来。然后让单片机以2400的波特率、无校验的方式发送几个字节的数据。由于UART通信平时默认是高电平,当数据来的时候,会先出现一位起始位,因此我们把触发方式设置成下降沿触发。而后我们要设置一下采样率和采样深度,因为我们的信号是2400波特率的,采样率超过1M就很准了,抓几个字节,采样深度也要求不高,我们干脆都设置成1M,那么总的采集时间计算下来就是1秒。点击Start按钮,这个时候,逻辑分析仪还没有开始采集,因为它要等待一个下降沿产生才开始采集信号。我们让单片机发送串口通信数据,逻辑分析仪就会开始抓取信号,抓到的信号会直接显示在对应软件的界面上,如图20-13所示。
图20-13 抓取UART信号 点击右侧Analyzers右侧的加号,选UART通信协议,进入配置界面,将波特率改成2400,无校验位,选择通道2,点击OK,就可以直接把数据解析出来,如图20-14所示。  
图20-14 UART数据解析 当我们设置好串口通信选项后,点击OK,直接就会在我们的通道上把十六进制显示在波形上边的悬浮图上,如果要显示其他进制的数字,还可以点击UART右侧的那个小圆圈,点击显示为其他格式,包括二进制、ASCII、十进制都可以显示出来。此外,如果我们的数据量很大,解析出来后想要用文本形式显示,也可以点击那个小圆圈,点击输出选项,就可以把数据导出为txt格式,如图20-15所示。  
图20-15 数据导出20-15中的Time就是这个信号发生时间,Value就是解码值,Parity是校验,如果数据错误也会在后边提示错误,这个功能是不是很酷呢? 同样的方法,我们也可以去抓取和解析I2CSPI的信号数据。I2CSPI都不是一条线,比如I2C一个引脚是SCL,一个引脚是SDA,我们用我们分析仪的通道3接到SCL上,通道4接到SDA上,也可以将数据抓出来并且解析出来,其中SDA悬浮的就是解析的数字,如图20-16所示。  
20-16 I2C数据解析SPI4线的,大家在使用的时候,尤其要注意配置CPOLCPHA的值,如果这两个值配置的不对,或者是解析不出来数据,或者是解析的数据是错误的数据。解析出来的波形数据分别悬浮在MOSIMISO的通道上面,如图20-17所示。
 
图20-17 SPI数据解析 20.3.5 逻辑分析仪测量数字电路比示波器的优势
示波器是专业测量模拟信号的,而测量分析数字信号,逻辑分析仪比示波器强大许多,主要有以下几个方面。 1、测量数字信号时,示波器通常可以用来观察有没有信号或者是信号的质量如何,逻辑分析仪主要用来分析信号高低电平时序时间,以及通信的是什么数据。 2、逻辑分析仪通道数通常比示波器多。示波器常见有单通道、双通道和四通道。而逻辑分析仪常见有8通道、16通道、32通道或者更多,测量多个信号运行状态,尤其是并行数据,通道最够多才能把所有的通道测量分析出来。 3、具有延迟能力,可以保存更长时间的数据。示波器是实时显示的,实际上他只能显示其中一小段数据,可以实现快速刷新,带来的缺点就是存储深度很低。而逻辑分析仪有较大的存储深度,可以保存大量的数据,而后一点点进行分析。 4、具有多种灵活的触发功能,可以实现对欲获取的数据进行挑选,对系统运行中的程序段进行调试。示波器通常只有上升沿、下降沿和电压设置的触发,而逻辑分析仪不仅仅有上升沿和下降沿触发,还可以设置并行数据等更复杂的触发。 5、具备强大的数据解析能力。对于一些复杂的协议,示波器显示的是波形,而逻辑分析仪可以直接把十六进制数据解析出来。除了我们前边讲过的三种协议外,现在很多逻辑分析仪都具备几十种协议解析器,可以方便的显示出解析的数据,并且解析出来的数据可以显示成为ASCII码、二进制、十进制、十六进制等等,方便直观。 6、可以将抓到的波形以CSV等格式导出提供给第三方工具,比如matlab进行时域分析。     在模拟时代,示波器有着不可替代的优势,但是步入数字世界,逻辑分析仪拥有更强大的功能,可以称之为分析数字通信的利器。