PIC单片机的工作特性.ppt
第 1 章 PIC单片机的工作特点1.1 PIC单片机的工作时钟模式 大家都知道任何单片机要工作就必须供给其一个时钟,使单片机按照时钟节拍一步一步地执行程序。对于这样一个时钟,在PIC单片机上有多种工作配置方式,比起传统的51系列单片机,其时钟模式得到了极大的丰富。然而PIC对刚接触PIC单片机的工程师来说,又会因为如此多的时钟选择而引人很多困惑。在此,我们就对PIC单片机的时钟模式进行阐述。,用石英晶体或陶瓷谐振器振荡是单片机最经典的产生工作时钟的方式。一般单片机都有两个引脚OSC1和OSC2专门给用户外接石英晶体或陶瓷谐振器产生一个高稳定的振荡频率。PIC单片机也提供了这一标准时钟模式,如图1所示。,与普通常见的单片机相比,PIC单片机晶体振荡模式最大的特点是其内部振荡电路放大器的增益是可调的。如图1中的RF所示,这是因为不同振荡频率的晶体,为保证其正常可靠振荡而所需的激励功率是完全不一样的。按常规,振荡频率越低,其所需的激励功率就越小;振荡频率越高,需要送给晶体的激励功率也越大。如果振荡器输出给晶体的激励功率不符合晶体自身工作特,性的要求,就会有这两种可能的结果:若激励功率过大,振荡波形就会发生畸变(见图2)。晶体可能会振到其高次谐波上去,更精糕的是晶体可能会被振碎(如一音叉型的32768Hz晶体);若激励功率过小,晶体起振困难。起振时间很长。长时间工作还可能出现停振现象等等。很显然,这两种情形在一个可靠的设计中都必须避免。,PIC单片机振荡电路的这种可调增益使用户能够灵活合理地配置其设计的晶体振荡电路,它提供了三种增益选择模式,分别被叫做LP、XT和HS,下表列举了其适用的大致工作频率范围。,如果把示波器的探头接到OSC2引脚来观察振荡波形,正常的工作波形是一个非常漂亮的正弦波,峰峰值大于电源范围的75%且没有任何波形崎变。若峰峰值低于75%的电源范围,则可以认为是激励功率不够。最简单的解决办法就是把振荡器的增益提高,或换用品质更好的晶体;如果峰峰值足够但波形有畸变,则可以认为是激励功率过大,可以尝试改变振荡模式使其激励功率降低。另外,还有一种方法可以降低振荡器输出到晶体的激励功率,那就是使用如图中所示的RS电阻。,需要考虑晶振振荡的其他因素:,1 工作温度范围:温度越低,振荡越强;2 工作电压范围:电压越低,振荡越弱;要在极限条件下做进一步验证,避免在任何时候出现振荡欠激励或过激励。,1.2 外部时钟 在OSC1引脚上输入一个现成的频率信号作为单片机的工作时钟,称为外部时钟工作模式。实际应用中最方便得到的外部时钟是晶体厂家提供的有源晶振。它一般做成方型,有4个引脚,如图3所示。只要给它加上电源,就可以得到稳定的频率输出给单片机作为外部时钟,其缺点是功耗较大。,1.3 外部RC振荡,构成单片机时钟最简单、成本最低的方法 电阻+电容+单片机内部控制电路,构成外部RC振荡的电阻电容必须连接到OSC1引脚,在单片机内部和OSC1引脚相连的还有比较触发器和对地导通的MOS晶体管。,RC振荡原理:上电时,VDD通过R对电容C充电,OSC1引脚内部的比较触发器监测C上的充电电压。超过判别上限,MOS对地导通,对C上的电压放电;若C上的电压低于比较器判别下限,MOS管关断,重新充电,周而复始产生振荡。,影响外部RC振荡频率的因素:,1、电源电压:直接决定RC充放电的速度,导致频率发生变化。故此,外部RC振荡用在电源电压较稳定的场合。2、内部比较器电压判别门限:芯片设计时,内部比较器的判别门限电压已经确定,一般和电源电压成一定比例关系。但受半导体生产工艺的影响,会有一定的离散性。,3、环境温度的影响:主要表现在电容C自身温度特性变化;OSC1引脚对地电流的变化。通常温度升高,频率降低。4、电路分布参数的影响:主要来自芯片引脚的接入电容、印版走线的分布电容及漏电流、耦合干扰,它们是永远存在的。,RC振荡优点:1、实现方便 R+C;2、起振迅速取值:1、C:20pF 2、R:30k100K。3、f:4MHz。,2.1 PIC单片机的复位,复位是任何单片机必需的一个过程。通过复位可以让单片机以一种特定的状态开始运行。PIC单片机的复位功能比起大家熟悉的传统51系列单片机又有了很大的增强,产生复位的条件更多,设计更灵活。在PIC中档系列单片机中,有上电复位、外部复位、看门狗复位和电压检测复位等几种情形。出现任何一种复位情形,都将使单片机:,(1)所有的I/O引脚处于确定的高阻抗输入状态;(2)所有的模拟/数字输入复用引脚被配置成模拟量输入模式;(3)设定对应的复位标志;(4)特殊功能寄存器设定复位缺省值;(5)复位过程结束后程序将从复位地址 0 x0000处开始运行。,2.1.1 上电复位 PIC单片机片内已包含有完整的上电复位电路。一旦对芯片加电,内部电路就检测电源电压VDD的上升,当VDD到了设定的电压门限时就自动产生一个复位信号。由于上电复位时检测的只是电源电压VDD。这就无需像其他单片机那样,为了实现上电复位必须在芯片的主复位引脚上外接电阻电容电路。PIC单片机的上电复位电路可以简化到如图4所示。,为保证图4左边电路上电复位可靠,整个上电过程电源电压的上升率应不小于0.05V/ms。如果上电时电源电压的上升速度太慢,那就需要考虑用类似于如图4右边所示的电路。在芯片主复位引脚上必要时再增加一个二极管D,以便在断电时可以快速泄放电容上的电压,以利于在下次上电时实现可靠复位。,2.1.2 低电压检测复位 在芯片正常运行时,如果出现电源电压波动而使芯片供电电压下降,当其降到一定的幅度后,芯片内部的程序将无法可靠运行。PIC单片机的低电压检测复位功能就是检测芯片的供电电压,一旦供电电压低于设定门限,就让单片机处于复位状态与其让单片机乱跑不如让它不跑,这就是复位的最终目的。,2.1.3 外部复位 任何时候在芯片主复位引脚MCLR加一低电平,即可使芯片进入复位状态,我们称此种情形为外部复位。很显然,要实现外部复位MCLR引脚就不能和VDD直接相连。图5中的电路设计利用了芯片外部复位功能以实现按键手动便位。,建议在电路设计中不要简单地把MCLR引脚直接和VDD相连,而是在中间串接一个电阻。这样即使平时不需要外部按键复位,也保留了使用外部复位。,2.1.4 看门狗复位 如果打开了片上的看门狗,单片机的软件就必须在其计数溢出前执行clrwdt指令将看门狗清除一次。执行该指令的结果是将看门狗的循环计数器及其前级预分频器同时清0,不让计数器最后溢出而产生复位信号。,2.1.5 判别复位情况 与复位相关的标志位在两个寄存器中描述:一个是PCON寄存器,另一个是STATUS寄存器。PCON寄存器中含有POR和BOR标志位;而STATUS寄存器中有TO和PD两个标志位。,任何时候执行一条sleep指令,PIC单片机就可以进人低功耗休眠模式。中档系列芯片进入休眠模式后,振荡器停振,芯片内部的所有电路都将停止工作,但所有寄存器保持原有的状态不变。休眠时单片机内核本身的功耗可以降至最低,在电源电压为3V时一般不超过1uA。,能休眠就意味着需要唤醒。PIC单片机提供了丰富的休眠唤醒模式。外部复位,即MCLR引脚拉低;看门狗超时溢出;INT引脚上的信号沿跳变;PORTB的位74输人引脚有电平变化;,定时器1的计数溢出;A/D转换结束;模拟比较器比较结果翻转;输入捕捉模块捕捉到事件发生;同步串行接口I2C检测到起始位/停止位;并行接口有读/写请求;内部EEPROM写过程结束,不管出于何种原因芯片被唤醒后,主振荡器将重新起振。如果是晶体振荡模式则需PWRT(上电复位延时定时器)延时再加1024个振荡脉冲计数延时后程序才开始继续运行;如果是RC振荡则没有任何延时。唤醒后程序的执行分以下几种情形:(1)外部复位唤醒,芯片将真正复位,情形如普通运行时的复位相同。,(2)看门狗溢出唤醒,程序将从sleep的下面一条指令处执行而不产生芯片复位。(3)其他信号在唤醒单片机的同时也发出了中断请求信号。若GIE=0,则程序从sleep的下面一条指令处继续执行;若GIE=1,则立即进入中断服务程序。中断退出后再回到sleep的下面一条指令处继续执行。,单片机被唤醒后能继续工作的前提条件是上振荡器必须从静止状态恢复到正常振荡。所以有这么一个建议:对于需频繁休眠、唤醒的系统设计其工作时钟应首选RC振荡器,其次为LC振荡。然后是陶瓷谐振器,最后才考虑用晶体振荡器。,2.2 PIC单片机在线串行编程 传统单片机系统的开发和生产过程首先是软硬件调试和系统测试,然后通过烧写器把编好的程序烧入到芯片中,最后把芯片送交到生产线进行焊接组装。这样的操作流程可能会带来一些弊端,例如:,(1)生产和开发调试无法同步进行,安排生产前必须等待系统测试结束。这会在一定程度上影响产品上市速度。(2)生产过程中对芯片的抓握次数过多。烧写、查验和焊接等多道,工序都要把芯片从包装盒中拿进拿出。静电破坏、污渍和引脚的损坏增加了芯片在生产组装前的损耗率。,(3)细密引脚封装时烧写困难,若用管芯直接绑定时基本无法实现在绑定前烧写。(4)缺乏灵活机动性。如果在前期小批量生产时发现有设计缺陷,整个生产流程必须终止,等待设计人员修正设计缺陷后再开始生产。,(5)设定标记信息不方便。很多产品需要对其设定序列码。生产日期或版本号等信息,按照传统的先编程后生产的方式,要加人这些随产品而变的信息就显得非常不方便。,(6)现场升级不易。很多时候为争取上市速度抢占市场,早期产品可能留有一些功能缺陷,在占领了一定的市场分额后需要对早期的产品升级。传统的做法是由服务人员到客户现场更换控制芯片,或者更换整块控制板,不仅效率低而且成本高。,为解决这些弊端,PIC单片机提供了被叫做“在线串行编程(ICSP)”的功能,即使芯片被焊接到线路板之后,它也可以通过一个简单的接口实现编程烧写。该接口用到5根连线,分别是5V电源接芯片VDD引脚、参考地接芯片VSS或GND、编程电压接芯片MCLR引脚、串行编程数据PGD接芯片的RB7和串行编程时钟PGC接芯片RB6引脚。,所有的PIC中档系列单片机都具备串行编程功能,包括一次可编程类芯片。实际上,普通的编程器在对芯片烧写编程时用的就是这个ICSP模式,在众多的芯片引脚中烧写编程时只有这5个是真正用到的。所以如果你的设计中准备用到ICSP模式在线烧入你的代码,在硬件设计时须注意以下几点:,(1)MCLR引脚在编程时会被加上较高的电压。你的设计必须保证此电压的引入不会对电路的其他部分产生破坏性影响;同时还要保证被加入的编程电压的上升速度,不要在编程电压接线上直接有电容负载。,(2)电源VDD负载的大小。单片机的供电引脚VDD一般与芯片外围的许多电路相连,在线编程时必须考虑编程器提供电源电压时的驱动能力。普通的编程器能提供的VDD最多只能带3mA5 mA的负载,如果你的线路板电路需要的电流超过编程器的驱动能力,在线编程时线路板就需自己供电;,或者在单片机与其他电路的电源间串接跳线器,在编程时暂时断开板上其他电路的电源供给,只对单片机提供VDD电源;或者用Microchip工业级的烧写工具ProMate-II,它有一专门的ICSP适配器,能提供较大的电流驱动能力。,(3)RB6或RB7引脚外接电路的影响。RB6和RB7在编程时一个作为串行时钟线,另一个作为串行数据线,为了保证其上传输的数字信号完整,就不能在RB6和RB7引脚上直接外接电容或电感等非纯阻性负载,以免使传输信号产生畸变,影响编程的可靠性。,考虑到以上几点因素,我们在此推荐一种ICSP接口方式供大家在设计时参考,如下图所示。该电路在正常工作时上电复位能照常进行,保留了上电复位电路中的电容。因为隔离电阻R2的存在,在线编程时的Vpp编程电压不会影响到其他电,电路,也不会因为1000pF的复位电容而使Vpp即上升速率降低。如果RB6和RB7引脚的外电路有过大的电容值存在(包括印板走线的等效电容),也应该用类似的隔离电阻以消除容性负载对编程时钟和编程数据的影响。,ICSP编程接口是如此的简单,用户完全可以设计自己的编程工具,对你设计的产品做特殊的烧写。Microchip对所有单片机的烧写算法都是公开的,其相关技术文档可以从网上免费获取。利用ICSP功能,针对上面提到的传统烧入过程的各种弊端,可以得到如下改进:,(1)生产和开发调试可以同步进行,只要印板设计定型即可安排生产。生产时可以先用空的芯片焊接。同时,开发小组同步进行产品的开发调试工作,测试通过后再把控制代码烧入到己生产就绪的产品中,最后测试出厂。(2)生产时直接把芯片送交生产线焊接而无需经过多道中问工序,减少芯片的前期损耗。,(3)对于细密引脚封装和管芯直接绑定的产品,若用ICSP在线烧入更显方便。(4)如果发现软件设计有缺陷可以立即改正而不会影响已经生产出的产品。对Flash型的芯片还可以进行多次反复烧写。对于硬件设计不变,但软件不同的多个客户需求可以快速反应。,(5)利用客户自己设计的编程工具可以方便高效地把序列码、生产日期或版本号等信息逐个不同地烧人到芯片中。(6)现场升级变得容易。只要产品本身留有ICSP的接口且是Flash 型的芯片,服务人员到用户现场只需通过接口对其重新编程一次即可完成所有软件升级工作。,2.3 PIC单片机的芯片配置字 在介绍前面内容时已经多次提到了PIC单片机的芯片配置字,每一颗PIC单片机都有这样一个特殊的区域用以存放芯片各种工作条件的设定。这一区域是无法通过软件来访问的。惟一的访问方式就是在芯片进人编程模式后,通过编程器用专门的编程命令来读/写。,配置字的设定对芯片是否能够正常工作密切相关,在不同的芯片中其配量字内容不尽相同,但最关键最常用到的有如下几部分:(1)芯片的振荡模式选择。我们在前面关于振荡模式时已经详细说明了不同振荡模式所对应的工作方式。用户必须在配置字中选择一个正确的振荡模式。,(2)片内看门狗的启用。配置字中有专门的控制位控制片内看门狗的打开或关闭,用户软件无法控制看门狗的起停。(3)上电复位延时定时器PWRT的启用。(4)低电压检测复位BOR模块的启用。(5)代码保护控制。一旦启用了代码保护功能,就可以防止程序代码被非法读出口要特别提醒的是,对于EPROM型的窗口片,一旦用户把代码保护打开,它就再也不可能回到关闭状态,用紫外线擦除也无济于事。所以在使用窗口片调试时千万不要打开代码保护功能。对于Flash型芯片,在对芯片实施整片完全擦除后,包括代码保护等其他所有配置位信息还可恢复而能再次改写。,(6)针对不同的芯片其他还有诸如低电压编程控制等附属功能的设定,请参阅具体芯片数据手册中关于配里字的说明。,作为一个设计者,无需去记忆配置字里的哪一个数据位代表哪一个控制功能。可以这么说,任何支持PIC芯片的编程器都会提供一个类似于对话框形式的界面,并以菜单选项方式让你在烧写芯片前把相关功能的配置位一一设定。我们以Microchip的集成开发平台MPLAB-IDE6.40为例,它有一专门设定配置字的窗口,其中列举了所,有可能的设定选项,只需用鼠标一一单击选择即可设定,如图2-20所示的说明。,PIC单片机的开发环境还支持另外一种配置字的设定方法,那就是直接把配置字信息写在你的源程序中。这样的源程序在通过编译连接最终生成用于编程器烧入的HEX文件时,会把相关的配健信息一并写在HEX文件中。用户只需把这样的一个HEX,HEX文件调入到编程器环境下。就能自动设定相关的配置位信息。Microchip公司的集成开发平台MPLAB就具备此功能。其他厂家的通用编程器环境是否能按HEX文件中的信息白动设定配置字就不一而论,最好在购买编程工具前向厂家了解清楚。,对于汇编语言编程,Microchip的汇编编译器提供了“_ _CONFIG”伪指令用来在源程序文本中定义配置字内容,注意CONFIG前面有两个下划线符。配合Microchip提供的汇编预定义头文件,可以非常直观地把芯片的配置字描述在源程序中,如下例所示。,_CONFIG_CP_OFF&_WDT_OFF&_BODEN_OF&_PWRTE_ON&_XT_OSC&_WRT_OFF&_LVP_OFF&_CPD_OFF;_ _CONFIG伪指令设定芯片的配置信息;_CP_OFF-代码保护关闭;_WDT_OFF-看门狗关闭,;_PWRTE_ON-上电延时定时器打开;_XT_OSC-XT振荡模式;_WRT_OFF-禁止Flash程序空间写操作;_LVP_OFF-禁止低电压编程;_CPD_OFF-EEPROM数据读保护关闭;程序开始,org0 x000;定义程序代码起始地址 goto main;跳转到main处执行 PIC单片机内的配置字极为关键,任何时候都必须保证芯片的配置字被正确设定。不然系统可能根本无法正常工作。一个良好的习惯是把配置字直接和源程序写在一起,,这样生成的烧写HEX文件可以直接交给生产方而无需操心每次生产烧入前的配置设定。当然,这需要烧写编程器环境本身具备识别HEX文件中配置信息的能力。可直接挂接在Microchip集成开发平台MPLAB-IDE的编程器ICD-2、PicStart-Plus和ProMate-II都具备此功能。,诺斯罗普格鲁门公司“广域监视”海上侦察系统最锐利的海上眼睛,绝大多数广域雷达系统都只能将目标以光点的形式显示在屏幕上,而诺斯罗普格鲁门公司“广域监视”海上侦察系统(BAMS)的传感器阵列却灵敏得足以探测到船只的实际轮廓,从而让操作人员一眼就能分辨出目标究竟是一艘集装箱货轮、油轮,还是一艘潜艇露出水面的表面。,2012年6月,BAMS在一架MQ-4C Triton无人机(RQ-4“全球鹰”无人侦察机的海军型号)上首次亮相。在1.5万米的高空,装备有BAMS系统的无人机能探测到3700千米之外的目标。当遇到感兴趣的目标时,会进一步接近以进行确认。,