关于单片机的N多问题
73. 在此以PIC16F87X为例:MCU处于sleep时,用WDT定时,如何使其在宽温度范围内工作定时相对一致,误差尽量小呢?
答:一般MCU处于sleep时,WDT(看门狗)是停止状态,用WDT的主要目的,是在程序运行当中,MCU受到外面杂讯干扰,导致程序运行乱掉或MCU当掉,此时就须WDT(一般WDT时钟来源是选用内部RC振荡)来自救及做复位动作,而当MCU处于sleep时,其MCU是处于省电模式状态,因主振停止所以程序不运行,此时就WDT可以停止动作(此模式WDT时钟来源是选用主晶振系统),如果MCU处于sleep时,又要WDT能继续动作,此时只有一个目的,就是用WDT的时间段来做定时工作(因程序停止运行,无法清除WDT计数器,故WDT计数一定会溢出),而在这个模式下因主振停止(因要省电)的WDT时钟来源只能选用内部RC振荡,所以RC振荡的频率会受工作温度及电压变动而产生飘移,所以要省电模式下不建议用WDT来做定时。
如果要省电模式下做定时工作,有一个很好建议,可采用HOLTEK MCU双振荡系列,如HT49XX,HT47XX,HT48XX,HT46R6X等系列,其优点在省电模式下,其主振停止而保持第二振荡系统维持振荡,此振荡系统为RTC(Real Time Clock 32768Hz振荡系统),工作电流维持在2~3uA(工作电压3V)之间,又因是用32768晶振,不受工作温度及电压变动的影响,可准确做定时工作。
74. 在开发一个需要长时间可靠运行的电子测量设备,有关单片机(DSP)系统的故障自诊断相关问题(包括主控制器,外围器件,如AD,RAM,ROM等)如何解决?
答:DSP是专门用在数字信号处理的晶片,与单片机相比DSP器件具有较高的集成度,而且具有更快的CPU,更大容量的记忆体,计算能力强大,运算速度快,能够满足系统的要求内置有串列传输速率发生器和FIFO缓冲器。提供高速,同步串口和标准非同步串口。有的片内集成了A/D和采样/保持电路,可提供PWM输出。DSP器件采用改进的哈佛结构,具有独立的程式和资料空间,允许同时存取程式和资料。内置高速的硬体乘法器,增强的多级流水线,使DSP器件具有高速的资料运算能力。DSP的计算能力虽然很强,但其事件管理能力较弱,而且直接支援的I/O口很少。为了方便地实现人机交互,采用DSP与单片机协同工作的方式:以单片机为主机,通过通讯介面对DSP实现控制;同时利用单片机较强的外围设备管理能力实现人机介面,显示等功能。主要工作流程是:弹簧的输入输出信号经过滤波电路进行调理后,由A/D转换器转换为数字信号,再进入DSP进行运算,得到的诊断结果通过通讯介面电路送入单片机,单片机将结果显示在液晶显示器上,并经过串口送入到其它应用介面。
因为DSP电路完成数据采集及数字滤波,软件的设计主要包括DSP编程和单片机编程。DSP程式的主要任务是初始化,管理DSP外围电路和完成,在故障自诊断方面,主控制器部份大都是利用内置的演算法完成故障诊断等任务,单片机程式包括键盘控制程式,液晶驱动显示程式,与DSP及其它机器通信的程式。其它部份的故障自诊断,可参考本板开头说明部份来处理等。
75. 在电路上有一个温控开关串联在供电回路,正常情况电阻很小,温度升高后,电阻增加。这时cpu的工作电压大概在3。1v左右,好象是工作在复位状态,液晶不断闪烁,想在软件中这样判断:如果有连续5次上电复位,且每次间隔不超过100ms,就关闭所有功能。但是这样的话,cpu会一直工作在复位状态,会不会有问题?
答:也就是说,电压会在3。1V左右波动,而CPU的最低工作电压是在3。1V,所以会造成CPU一直复位。如果是这种情况,可能会造成CPU复位不正常。正常的上电复位是指电源电压从0V上升到VDD;掉电复位是指电源电压从VDD跌落到0V,后又恢复到VDD的过程;所以不管怎样,复位过程必须是电压从0V上升到VDD的过程。如果象所说的那样,电压从3。1V以上掉到3。1V以下,而又没有完全掉到0V,然后又上升,这样很容易造成CPU复位不完全而无法正常工作。
一般的解决方法是采用低电压复位电路,可以采用三极管复位电路,或采用低电压复位IC,如HOLTEK的HT70xx系列就是很好的低电压复位IC,可以到以下网址查阅到相关的资料:http://www.holtek.com.cn/products/power_4.htm
76. 比如用400减50,在程序语句上如何利用SUBB实现呢?
答:MCS-51单片机的指令系统中的减法指令只有一组带借位的减法指令(SUBB),而没有不带借位的减法指令。若要进行不带借位的减法操作,则需要在减法之前先用指令对进位C清零,具体指令:CLR C ,然后再相减。在进行多字节减法时首先应进行低字节的不带进位的减法,具体做法是先 CLR C,再用SUBB,而以后的高字节相减则都需要使用带进位的减法,直接使用SUBB指令即可。
77. 单片机系统为了省电,经常要进入掉电(POWER DOWN)状态,此时单片机的I/O口的PIN应设置为何种状态能获得最低功耗?
答:单片机I/O口可用作输入和输出状态。以HOLTEK一款最简单的I/O单片机HT48R05A-1为例,当作为输入时可设置成带上拉电阻的斯密特输入;作为输出时是CMOS输出。如果程序进入省电状态(HALT)时,首先,各个有用的I/O仍需输出一定值,以保证外部电路工作正常,同时请小心不要让外部电路保持长耗电状态(如长时间导通继电器);对于暂时不用的I/O口,为了节约功耗我们建议将I/O置为输出状态,并且输出为低。
78. 怎么样才能快速学会使用51系列和cygnal系列单片机?
答:建议购买一套ARM的开发学习板和仿真器(可以在网上查到适合自己的),结合教材在实践中学习ARM的基本开发方法。首先可以通过简单的程序编写熟悉ARM的指令集、体系结构、运行模式等基本原理,如果有一定的单片机知识基础,相信很快就能对此熟练掌握。接下来,因为32位ARM的应用大多会使用操作系统,所以此时可根据个人的计算机知识程度选择一个适合自己学习的嵌入式实时操作系统,多上机实作掌握嵌入式系统设计的基本方法,学习操作系统的应用程序的编程,并进一步掌握包含软硬件的基于ARM的系统应用开发。这一步需要具有高级语言的编程及操作系统知识,可能对非计算机专业的人员会有较大的难度,不过事在人为,相信只要有决心,难关总是可以被攻破的。另外,网上也有很多关于ARM开发的论坛,可以常上去下载相关的学习资料,请教高手,相互交流,相信会有所帮助。
79. 同样的功能实现,采用RISC和CISC内核的MCU,代码量哪个更大,即哪种需要更大的RAM以及ROM?
答:微处理随着微指令的复杂度可分为RISC及CISC这两类。下面先针对这两项做说明:
一、复杂指令集电脑CISC(Complex Instruction Set Computer)
CISC是一种为了便于编程和提高记忆体访问效率的晶片设计体系。早期的电脑使用组合语言编程,由于记忆体速度慢且价格昂贵,使得CISC体系得到了用武之地。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel的80x86和Motorola的68K系列等。
1.CISC体系的指令特征
使用微代码。指令集可以直接在微代码记忆体(比主记忆体的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式。
庞大的指令集:可以减少编程所需要的代码行数,减轻程式师的负担。高阶语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到记忆体以及记忆体到寄存器的指令。
2.CISC体系的优缺点
优点:能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。
缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。
二、精简指令集电脑RISC(Reduce Instruction Set Computer)
RISC是为了提高处理器运行的速度而设计的晶片体系。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。而超流水线以及超标量技术已普遍在晶片设计中使用。RISC体系多用于非x86阵营高性能微处理器CPU,像HOLTEK MCU系列等。
1.RISC体系的指令特征
精简指令集:包含了简单、基本的指令,透过这些简单、基本的指令,就可以组合成复杂指令。
同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。
单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。
2.RISC体系的优缺点
优点:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度将是CISC的2~4倍。由于RISC处理器的指令集是精简的,它的记忆体管理单元、浮点单元等都能设计在同一块晶片上。RISC处理器比相对应的CISC处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术,开发更快的下一代处理器。
缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快记忆体,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。
综合上面所述,若要再进一步比较CISC与RISC之差异,我们可以由以下几点来分析:
1、指令的形成
CISC因指令复杂,故采微指令码控制单元的设计,而RISC的指令90%是由硬体直接完成,只有10%的指令是由软体以组合的方式完成,因此指令执行时间上RISC较短,但RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。
2、定址模式
CISC的需要较多的定址模式,而RISC只有少数的定址模式,因此CPU在计算记忆体有效位址时,CISC占用的汇流排周期较多。
3、指令的执行
CISC指令的格式长短不一,执行时的周期次数也不统一,而RISC结构刚好相反,故适合采用管线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。显然的,在设计上RISC较CISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISC较CISC还是站了上风,但RISC因指令精简化后造成应用程式码变大,需要较大的程式记忆体空间,且存在指令种类较多等等的缺点。
80. 如何设计出具有照像、存储、输出、视频同步。本线路可接监视器,用为监视之用;在不拍照时,图像是时实的,在拍照的时候,在监视器的图像会停在那,显示所照的相片。照下来的照片可存储起来,要查看的时候可以调用。如何才能做到?
答:针对数位相机一些技术层面说明:
数位相机使用JPEG或MPEG-4影像压缩标准 ,其负责中枢的专用控制晶片组逐渐走向单晶片化,一般单晶片内含资料压缩与记忆体控制。若从整个系统的控制方式来看,影响数位相机质量的参数包含:镜头,曝光装置,观景窗,瞻前萤幕、影像储存,Gamma修正,彩色平衡与修正,储存装置与编辑软体等,主要分为两大控制部份:其一是负责I/O介面,JPEG影像处理,资料压缩与储存,其二是负责处理所有自动光学处理功能如自动光圈(Auto Iris,简称AI)、自动聚焦(Auto Focus,简称AF),自动曝光(Auto Exposure,简称AE)与白平衡(White Balance)控制,过去这两大部份的控制系使用两颗微控制器(MCU)分别处理,目前已渐由单颗MPU或DSP另加一颗微控制器组成所取代。
经由光电转换元件CCD(或CMOS Sensor)将撷取到的物体所反射光的亮度、色彩与分布处理以后转换成数位信号,再将拍得图像存至数位相机的记忆体里。信号传递方式是类比R。G。B。信号自CCD转换成数位R。G。B。,整个过程中经信号放大、Gamma修正与白平衡修正才得以达成;数位R。G。B。资料再转换成亮度资料(Y)与两色差(Cr,Cb)。当影像资料进行压缩,压缩比若为1/4时图像资料所占的记忆容量就跟着降至1/4,例如记忆容量6Mbit的图像资料减至1。5Mbit,Y。Cr。Cb资料经再次取样重排后一个图框的数位资料记忆容量整个会降至3Mbit,其中Y占1。5Mbit, Cr、Cb两个合占1。5Mbit,整个转换过程不会影响垂直与水平的解析度,称为线的再次取样回复使用。
再论CCD(Charged Coupled Device)中文译为「电子耦合元件」,它就像传统相机的底片一样,是感应光线的装置,可以将它想像成一颗颗微小的感应粒子,铺满在光学镜头后方,当光线与影像从镜头透过、投射到CCD表面时,CCD就会产生电流,将感应到的内容转换成数位资料储存起来。CCD画素数目越多、单一画素尺寸越大,收集到的影像就会越清晰。因此,尽管CCD数目并不是决定影像品质的唯一重点,我们仍然可以把它当成相机等级的重要判准之一。
播放处理系经由记忆体读出所撷取之数位信号资料,透过解压缩电路及内插法处理转成PC或TV需要之信号。曝光控制,则由CCD(或CMOS)驱动电路里的Timing Generator来负责。
81. Holtek和AT系列编程有何不同,现有AT系列程序如何转为Holtek?
答:从指令集来看,ATMEL的AVR系列是8位RISC型的单片机,共有118条指令,而HOLTEK是63条指令,要将AVR的汇编程序转为HOLTEK的汇编需要熟悉两者的汇编指令将AVR的程序转译成HOLTEK汇编,而不能直接在HOLTEK芯片上使用,如果程序是用C编写,则大部分应该是可以直接使用的,但数据定义以及寄存器的定义可能需要改变;另外在编程的过程还需要考虑两者硬体结构的差异对指令实现功能的影响,有时候可能会因为硬体的不同,需要对项目进行重新的规划。
82. Holtek和AT系列有无FLASH可电擦写的型号?
答:目前HOLTEK没有FLASH可电擦写的型号,可以使用OTP芯片的DICE或者开窗片对EPROM进行紫外线擦除,实现对芯片的多次编程。
83. 在一个由MCU的产品中,开发完成,批量生产时,需要测试。然而,测试员可能不能测试到软件的每一处。在写程序时,做一个专门的测试流程,在某种条件满足时(比如几个键盘的同时按下),进入测试程序。测试程序中用一些比较短的时间来工作。如何实现?
答:以HOLTEK IC生产厂商的角度来看,对于一个MCU成品,一旦它的外围器件连接OK,它的MCU芯片基本逻辑功能运行正常,此MCU成品基本上就是良品了。因为IC在出厂前,都经过了逻辑、烧写测试,所以发给客户的封装片都是合格的。客户生产时所产生的不良片,大多数是I/O遭到破坏造成的(例如ESD破坏、高电压破坏),如果IC的I/O逻辑功能运行正常就说明此IC可以运行任何程序,并不需要测试到软件的每一处才能保证MCU成品的良率。因此您的测试方法已经可以保证IC的良率了。
84. 有没有很好的办法来解决加密问题但是又不破坏MCU的方法?
答:单片机系统产品的加密和解密技术永远是一个矛盾的统一体,针对科研成果保护是每一个科研人员最关心的事情,目的不使自己的辛苦劳动付注东流。对其单片机加密方法一般有采用软体加密,硬体加密,软硬体综合加密,时间加密,错误引导加密,专利保护等措施。有矛就有盾,有盾就有矛,有矛、有盾,才促进矛、盾质量水平的提高。而加密只讲盾的运用,以下就简单叙述加密的方法:
硬体加密:使他人不能读你的程式。
l 高电压或镭射烧断某条引脚,使其读不到内部程式,用高电压会造成一些器件损坏,即把单片机资料汇流排的特定I/O永久性地破坏,解密者即使擦除了加密位,也无法读出片内程式的正确代码。此外还有破坏EA引脚的方法。
l 重要 RAM 资料采用电池对RAM进行掉电资料保护。即先将一系列资料写入RAM并接上电池,然后将其余的晶片插上。这样,当单晶片微处理器系统运行后,CPU首先从RAM读出资料,这些资料可以是CPU执行程式的条件判别依据,也可以是CPU将要执行的程式。如果资料正确,整个系统正常运行。反之,系统不能运行。
l 汇流排乱置法。汇流排乱置法通常是将MCU和EPROM之间的资料线和位址线的顺序乱置。软体加密:其目的是不让人读懂你的程式,不能修改程式,可以在程序重要资料区先用DES混码存放,但使用时须配合外面输入Decode码(金钥匙)来解编。或者是在无程式的空单元也加上程式机器码,最好要加巧妙一点等。
用真真假假方法加密:(1)擦除晶片标识。(2)DIP 封装改成 PLCC、TQFP、SOIC、BGA 等封装。
85. 在开发一个需要长时间可靠工作的控制系统(发电机系统),如何设计复位电路?
答:单片机复位可分为内部与外部事件复位。外部事件复位包括上电复位、RES复位和低电压复位。
上电复位和RES复位是人为的正常复位,以保证程序计数器被清零且程序从头开始执行。要正常进行这两种复位动作,需要外接正确的RES复位电路,一般来说不同的单片机的复位电路稍有不同,单片机厂商都会提供标准的复位电路资料。以HOLTEK IC为例,我们提供的复位电路是RES脚接100K欧姆的电阻至VDD;RES脚再接10K电阻和0。1uF的电容至VSS。
当电源电压受外部干扰,低于正常工作电压时,会造成程序功能运行不正常,严重的还可能造成单片机死机。此时发电机系统就会造成严重的后果,我们就需要用低电压复位来解决这个问题。通常我们可以用两个方法实现低电压复位:1、外加一个电压检测芯片(例如7033)加到RES脚上,当电源电压低于某个临界值时,电压检测芯片会给出一个低电平到RES脚是单片机复位,防止单片机死机。2、有些厂家的单片机内部会有一个低电压检测LVR的功能,例如HOLTEK单片机。当电源电压低于某一个临界值时,单片机会自动复位避免死机,外部不需要再连接任何检测电压的电路。
除了外部电源不稳定会造成单片机复位,内部WDT溢出也会造成复位,即内部事件复位。对于需要长时间稳定工作的系统来说,看门狗是十分必要的,它可以避免程序跑飞造成的错误。
当复位发生时,要保证复位后能与复位前的各个状态无缝的连接起来,就需要用软件来判定复位前程序执行到哪个程序段。以HOLTEK MCU为例,除了上电复位之外,通用寄存器复位前后的值不会发生变化。那么就可以设定一些寄存器记录程序当前运行在哪一个程序功能段。一旦发生复位,只需要读出那些寄存器的值就可以跳转到复位之前运行的程序功能段运行。另外HOLTE MCU内部有两个特殊标志位PD和TO,可以根据此两位的值来判定具体是什么原因造成的复位。
86. 从芯片封装及设计过程中增强芯片自身干扰能力的角度分析,有哪些好的抗干扰措施?封装过程中是否可以加屏蔽的技术,layout时可否采取措施?设计方面需要注意哪些问题?
答:一般在IC内部的抗干扰的处理方法,各家有各家的看家本领,例如在静电放电防护电路(ESD protection circuits)是积体电路上专门用来做静电放电防护之用,此静电放电防护电路提供了ESD电流路迳,以免ESD放电时电流流入IC内部电路而造成损伤。因ESD来自外界,所以ESD防护电路都是做在PAD的旁边。在输出PAD,其输出级中大尺寸的PMOS及NMOS元件本身便可当做ESD防护元件来用,但是其布局(layout)方式必须遵守Design Rules中有关ESD布局方面的规定。又例如传统的积体电路设计中,在电源、地的引出上通常将其安排在对称的两边。如左下角是地,右下角是电源。这使得电源杂讯穿过整个矽片。改进的技术将电源、地安排在两个相邻的引脚上,这样一方面降低了穿过整个矽片的电流,一方面使外部去耦电容在PCB设计上更容易安排,以降低系统杂讯。另一个在积体电路设计上降低杂讯的例子是驱动电路的设计。一些单片机提供若干个大电流的输出引脚,从几十毫安培到数百毫安培。
这些大功率的驱动电路集成到单片机内部无疑增加了噪音源。而跳变沿的软化技术可消除这方面的影响,办法是将一个大功率管做成若干个小管子的并联,再?每个管子输出端串上不同等效阻值的电阻,以降低di/dt。
87. 对于有WATCHDOG功能的单片机,如何去检查确认其是否起作用?比如说有的单片机要在程序执行HANGUP时,WATCHDOG才执行RESET,如何确认呢?
答:以HOLTEK最基本的I/O单片机HT48R05A-1为例说明。在单片机特殊寄存器STATUS中有PD和TO位,它们是可读不可写的。读取PD和TO的值,就可以判断出不同的复位原因,例如上电复位、正常工作下RES复位,HALT状态下RES复位、正常工作下WDT复位、以及HALT状态下WDT复位。因此只需要判断此两位的数值,就可以确认WDT是否起作用了。
如果需要WDT在HALT(即HANGUP)状态时发生复位动作,那么只需在正常工作时正确的喂狗(即CLR WDT),且看门狗的时钟来源选择内部RC时钟,当程序进入HALT状态后一旦WDT溢出会发生复位了。
88. 要研究一个将同步串口数据转换到以太网或USB的模块,能否推荐一个DSP或现在的高速单片机等,要能支持同步数据的DSP,同时这个DSP在连接REltek8139等网络芯片的开发又比较容易?
答:一般为网路多媒体应用来挑选一种DSP,是一件很复杂的工作。首先必须针对处理器的内核架构和周边配置进行全面的分析,理解多媒体资料流程(例如,视频、图像、音频和分组资料),如何在一个基于DSP的系统中传输十分重要,以便预防带宽瓶颈;另外,了解各种系统特性(包括DMA和记忆体存取)也很有帮助,这能使设计方案稳定可靠,而不只是勉强合格。网路多媒体处理器的选择取决于一项设计对性能和连接性的要求。许多应用既需要MCU也需要DSP:MCU提供系统的控制功能,DSP完成密集的数值计算。对于这些截然不同的功能可以整合入单个处理器中,如HOLTEK HT82A88F系列DSP晶片。这种器件在单一架构内执行充分的控制功能和繁重的信号处理任务,同时还提供适合多媒体连接的各种周边介面。
系统工程师在选择DSP时首先应该分析的要素包括:1。每秒执行的指令数,2。每一处理器时钟周期内完成的运算元, 3。运算单元的效率。在待评估的DSP上运行一组有代表性的基准测试程式(如音频/视频压缩演算法),就可完成这些指标的评估。评判结果将指示出系统的即时处理要求是否超出了该DSP的能力,而且同样重要的是,该DSP是否有足够的性能去应对系统新增的或不断演变发展的需求。许多标准的基准测试程式假设待处理的资料已经驻留在DSP片内记忆体中。只要工程师协调好各I/O设计考虑,采用这种方法就能对不同厂家的DSP进行更直接的比较。
另外合适的周边埠组合,省去了支援所需介面的外部电路,而减少了开发时间及成本。网路多媒体设备(NMD)可带有各种各样的标准周边。这其中最重要的是与网路介面的连接。在有线应用中,乙太网(IEEE 802。3)是在局域网上实现联网的最普遍选择;而IEEE 802。11b/a正在成为实现无线局域网连接的首选方案。作为DSP的直接延伸,现在有许多乙太网解决方案可供选用。此外针对有很好地支援微处理器功能的DSP来说,也可用于直接管理TCP/IP堆叠。同步和非同步(UART) 序列埠也是连接DSP与多媒体系统环境所必需的。在网路多媒体设备系统中,音频编码资料一般通过8到32位的同步序列埠传输;而音/视频编解码控制通道则是通过更慢的串列介面来管理,如SPI或两线式介面。另外,UART支援RS-232数据机,也能支援用于近距离红外传输的IrDATM。
还有许多的DSP支援PCI或USB的通用介面,它能通过周边晶片桥接不同类型的设备,如PCI到IDE、USB到802。11b等。PCI还有提供一条单独内部汇流排的优点,这使得PCI汇流排主控器无需通过DSP内核或其他周边单元就能向DSP记忆体发送或读取资料。另外适于网路多媒体设备市场的DSP应包括一个外部记忆体介面,以便充当非同步和SDRAM记忆体控制器。非同步记忆体介面简化了与快闪记忆体、EEPROM和周边桥接晶片的连接,而SDRAM为针对大容量资料帧的高密度计算提供了其必需的存储空间。
89. HT48系列单片机支持串行通信吗?采用哪种通信方式较合适?HT46系列单片机串行通信的I/O口PA。67与51系列的RX/TX两PIN(P3。0/P3。1)的结构有何不同,传输效能是否一样?能给个键盘与电脑通信的例程和常规通信协议吗?
答:HT48系列的单片机支持串行通信。可以通过软件编程,利用HT48系列单片机的I/O实现串行通信。在HOLTEK的网站上有使用HT48系列进行“I2C”或者“三线串行通信”实现串行通信的软硬件应用范例(http://www.holtek.com.cn/tech/tech.htm)。
HT46系列的串行通信口PA。6/SDA和PA。7/SCL是共用管脚,它们可以通过掩膜选择作为普通I/O全双工的输出输入接口,或者串行通信口。当作为串行口时,SDA/SCL是I2C通讯总线协议的从端,这和51系列的RX/TX使用的串行通信协议是不同的,51系列的TX/RX遵循的是RS-232串行协议。所以他们之间的传输效能是不可比的。
如果想用单片机做键盘产品的话,推荐使用HOLTEK的HT82K68E,它支持PS/2接口,或者是HT82K96E,它支持USB接口。这些芯片是HOLTEK专为键盘应用所设计的。具体的芯片资料请见:http://www.holtek.com.cn/products/mcu_11.htm
90. 用一个12M的晶振,怎么能实现480MB/S的数据传输率呢?
答:在集成了PLL的12MHz的晶体振荡器即可达到480MHz,相位锁定回(环)路(Phase Locked Loop,PLL)又被称为相锁回路或锁相回路,其原理是经由闭回路自动控制系统的反馈作用,驱使另一个动作不精准、频率变动量高的作用元件的动作频率,使其能快速且一直保持稳定地与正确的频率参考源达到同相甚至是同相又同频的状态,如此即是相位锁定(Phase Locked)的状态,我们若以电路外部精准、频率变动量极低的振荡频率源作为基准参考,来驱使电路内部精准、频率变动量极低的振荡频率源,使其达成相位锁定的状态,即可用来作为通讯系统的调变/解调电路。
一般480MB/S的数据传输率是运用在USB 2.0,当通用序列汇流排(Universal Serial Bus)规格于1996年1月发表时,代表业界成功研发出一套连结中低速频宽的周边元件与个人电脑之间的低成本串连管道,但是仍缺乏支援高速宽频的应用能力。于2000年4月,USB再度推出全新一代的USB 2.0版本的技术规格,可将讯号传输速度提升整整40倍,由原先 USB 1。0的最高12MHz的速度至现今USB 2。0的高速480MHz,并扩增了更先进的功能,如新型的传输装置以提高频宽使用率与增加传输装置及主机控制器之间的附加功能。
针对实际上可供使用的频宽来说,资料的传输频宽速度由原先的1 Mbytes/sec左右提高至50 Mbytes/sec,这样一个大幅度的频宽增加主要归功于USB 2.0规格运用了微讯框(micro-frame)、可容纳更多资讯的传输封包、更频繁的传输次数、分割式传输处理(split transaction)、以及一些新的执照(token)等崭新技术。USB 2.0装置的架构同时增加了两项全新的描述元(descriptor),即装置认可(Device Qualifier)与其他的速度配置(Speed Configuration),可用来明确标示出资料传输装置在其它运作速度下的功能表现。
针对电子规格的变动:在主机与新型的高速控制器之间的连结则重新定义,以支援现今高达480MHz的传输效能表现。新的高速拓璞新的标准采用90W 的差分阻抗(differential characteristic impedance)搭配差分电流模式讯号(differential current mode signaling),并采用相同的NZRI编码机制(NZRI encoding),但对SYNC讯号(SYNC signaling)、EOP讯号(EOP signaling)与闲置状况(idle state)等略作更改,但也必须搭配其他相关规范,以便严格控制游离电容(stray capacitance)、点对点抖动(peak to peak jitter)与上升/下落时间(rise/fall time)等,使得讯号的传输速度能够更加快速。
91. 在单片机程序设计中遇,从被嵌套的高级中断中如何强行返回到主程序。子程序返回指令在恢复堆栈后可不可以用跳转指令替代返回到主程序中?
答:如果是51系列,那直接用POP指令就可以实现强行返回;如果是用RISC结构的单片机(HOLTEK 单片机是RISC结构的),那一般都是硬件堆栈,没有PUSH和POP指令,所以子程序调用和返回指令必须成对使用。
92. 对单片机的速度,有何要求?Holtek的单片机能符合该项应用吗?
答:目前HOLTEK的单片机速度最高为8MHz,一条指令执行时间为0。5us,以这样的速度,可以满足大多数项目的开发;不知你说的具体是什么项目。目前HOLTEK单片机主要有OTP和Mask两种,将来会推出Flash的单片机;但HOLTEK的开发系统很完善,在开发阶段,HOLTEK还可以适当提供免费样片,相对来说,开发成本并不会比用Flash来得高。
93. PSoC是一种功能灵活和强大的软硬件嵌入式开发系统,能否用PSoC代替部分单片机系统呢?
答:在一般在嵌入式系统的应用中,都可能需要使用几十种甚至是更多的类比或数位周边元器件。熟悉MCU开发的工程师们都知道,在MCU的开发过程中,最需要花时间和精力的就是元器件的选购,以及元器件相容性方面的考虑。目前在市场上有成千上万不同种周边元器件,设计人员要想从中寻找到适合自己应用的元器件是一件令人头痛的事情。因此,设计工程师的理想方案似乎是采用定制的SoC晶片,但是如果采用定制微控制器、ASIC和PLD器件,一方面价格比较昂贵,另一方面需要设计人员具有专门的设计技能。因此,研制一个高效率、周边元器件可嵌入配置的、低功耗的8位微控制器是很有必要的。
PsoC(Programmable System on Chip)可编程系统晶片,是美国Cypress MicroSystems公司在最近推出的新一代功能强大的8位元可配置的嵌入式单片机。该系列单片机与传统单片机的根本区别在于其内部集成的数位和类比block模组,工程师可以根据不同设计要求调用不同的数位和类比block模组,完成晶片内部的功能设计;实现使用一块晶片就可以配置成具有多种不同周边元器件的微控制器,建立一种可配置嵌入式微控制器;用以实现从确定系统功能开始,到软/硬体划分,并完成设计的整个过程。因此,PSoC能够适应非常复杂的即时控制需求,使用它进行产品开发可以大大提高开发效率,降低系统开发的复杂性和费用,同时增强系统的要可靠性和抗干扰能力;因此,它特别适用于各种控制和自动化领域。所以PSoC的动态配置能力给开发者提供了快速方便的编程和开发方法,同时也为单片机的应用开拓了更大的空间。因此利用片内集成的闪速记忆体可以降低产品开发成本,缩短产品开发周期。因此,此MCU结构具有广阔的应用推广前景。
94. 单片机对modem要进行哪些初始化操作?
答:一般单片机的MODEM通讯必须要有两个背景知识,一个是AT命令集,另一个是通用非同步接收发送器(UART)。
l AT命令集
下面介绍我通讯程式例子中涉及到的AT命令。
Dn:拨号命令。该命令使MODEM立即进入摘机状态,并拨出跟在后面的号码。D命令是基本的拨号命令,它受到其他命令的修饰可构成MODEM何时拨号以及如何拨号等操作。
T:音频拨号。例如,ATDT8886666,其中8886666为电话号码。
P:脉冲拨号。例如,ATDP8886666,其中8886666为电话号码。
,:标准暂停。我们常常碰到拨打外线电话时需要暂停一下,等听到二次拨号音(外线)之后才能再拨后续的号码。缺省时暂停时间为2s(秒),它由S8寄存器指定。
Sn:表示MODEM内部的寄存器。
S0:自动回应。如果要求MODEM具有自动回应特性,则应该预先将MODEM的S0寄存器设置为非0。
S8:逗号拨号修饰符的暂停时间。该寄存器决定了当MODEM在拨号中遇到逗号(,)时应该暂停的时间。
l 通用非同步接收发送器UART
深入理解UART内部结构以及内部寄存器各位的含义,详细了解资料发送和接收的过程,有助于编写出高效、稳定的程式。一般介绍编写基本通讯程式需要知道的寄存器。实际的ADDRESS由具体接线决定。
l 串列传输速率除数锁存器(LSB、MSB)
在通讯之前要进行一些参数初始化,串列传输速率是首先应该考虑的一项。该寄存器是一个16位的寄存器,分为低8位(LSB)和高8位(MSB)寄存器。
另外单片机访问的是串列传输速率除数锁存器LSB/MSB。一般常用的工作频率是1。8432MHz。这个频率除以16就是串列传输速率的时钟频率,用于控制发送和接收资料的速度。
下面给出串列传输速率除数锁存器值的计算公式:
串列传输速率除数锁存器值=工作频率/(16×期望串列传输速率)=1843200/(16×期望串列传输速率)
l 接收缓冲寄存器和发送保持寄存器(transmit and receive holding register)
读操作单片机访问接收缓冲寄存器(RHR),写操作单片机访问发送保持寄存器(THR)。
l 中断允许寄存器(interrupt enable register)
l FIFO控制寄存器(FIFO control register)
资料发送和接收模式的选择。常用的两种模式:FIFO和DMA。其中DMA又有两种模式DMA的模式0、DMA的模式1可供选择。
95. 我使用的单片机是AT89C51,试过用弹出指令强行返回中断的方法,确实能够返回主程序,具体做法是:首先将堆栈中的地址弹出,然后压入主程序中新的地址,最后执行RETI指令就可以返回到该地址了。如果弹出指令执行完后直接用跳转指令而不通过RETI指令也能返回到主程序,但下次中断来时将不能再次响应。请问是从被嵌套的高优先级中断程序中怎样返回主程序,是不是还必须得通过最低级中断才能返回。要是直接返回的话,是否下次中断还能够正常响应?
答:对于51系列的单片机而言,当中端响应发生时,会将相应的优先级有效触发器职位;当退出中断时,执行RETI,单片机又自动将优先级有效触发器清0。因此,如果直接使用跳转指令从中断子程序出来的话,单片机没有清0优先级有效触发器,下一次中断发生时就不能响应了。
如果要从高优先级中断程序返回主程序的话,必须执行两条RETI指令,才可以清除高/低优先级有效触发器。具体的程序可以是:
MOV DPTR, #LABLE1
POP ACC ;将高优先级子程序返回地址出栈
POP ACC
PUSH DPL ;将LABLE1地址入栈
PUSH DPH
RETI