壹、ADμC812简介
ADμC812是高度集成的高精度12位数据采集系统,其功能方框图如图1所示。从图中可知,该芯片内不仅集成了可重新编程非易失性闪速/电擦除程序存储器的高性能8位(与8051兼容)MCU,还包含了高性能的自校准8通道ADC及2通道12位DAC。
ADuC812是8通道12位逐次逼近式A/D转换器,它具有如下特点(见AnalogDevices公司的资料:MicroConverter,Multichannel12-BitADCwithEmbeddedFlashMCUADuC812,2002):内含8通道高精度12位A/D转换器;高达200kHz的采样转换速率;可通过DMA控制器实现由ADC到外部数据存储器之间的高速数据存储;片内还包含2个12位D/A转换器;片内包含有温度传感器;片内集成有和8051兼容的MCU内核,工作频率为12MHz,最高可达16MHz,MCU上带有3个16位定时/计数器,9个中断源,两级中断优先级;片内带8K字节的FLASH程序存储器,640字节FLASH数据存储器,以及256字节的片内RAM数据存储器,同时还可扩展16M字节外部数据存储器以及64K字节的程序存储器;低电压3V或5V供电,有节电模式;带UART和SPI串行接口;带看门狗定时器。
ADuC812采用S-52封装,它的大部分管脚和8051相应管脚功能相同,几个主要管脚功能如下:
P1口:和8051的P1口功能不同,它只能作为模拟或数字信号的输入口,而不能作为输出口,缺省状态为8路模拟信号输入端,要使它们中的某位变为数字信号输入脚,应向P1口对应的特殊功能寄存器的相应位写入“0”信号,如果该特殊功能寄存器的相应位为“1”,则该位对应的管脚为模拟信号输入脚;
DAC0、DAC1:为两路D/A转换器的模拟信号输出脚;
SS、SCLK、MOSI、MISO:为串行设备接口(SPI)。SS为SPI接口的从属设备选择,在多机通信中使用,SCLK为SPI接口时钟,MOSI以及MISO为输入/输出数据线;
D0、D1:和SPI接口复用的数字输出脚,通过DCON特殊功能寄存器控制从D0或D1脚输出数字信号;T2:定时器2数字信号输入脚;
T2EX:数字输入脚,读取定时器2的计数器或重装该计数器的触发脚,负跳变时有效。其它脚的功能和8051相应脚的功能相同。
使用方法1.1程序存储器
程序存储器分为片内程序存储器和片外程序存储器,片内含有8K字节的FLASH可编程程序存储器,可满足大部分数据采集系统的设计要求,该段程序存储器可以用两种方式写入,一种是通过标准的UART串行接口进行串行下载写入,当PSEN管脚通过外部电阻接地时,在上电后自动进入串行下载模式,通过串行口自动从外部开发系统中下载程序;第二种方式和E2PROM的编程方式相同,通过编程器进行并行写入。
1.2数据存储器
ADuC812的用户数据存储器包含三部分,片内640字节的FLASH数据存储器、256字节的RAM以及片外可扩展到16M字节的数据存储器,其中640字节的数据存储器被分成160页,每页4字节,通过6个特殊功能寄存器来进行存取,即通过ECON、EADRL以及EDATA1~4来存取,EADRL寄存器指定要进行数据存取的页地址,ECON控制寄存器可控制EDATA1~4寄存器和EADRL指定的页内4个存储器之间进行数据交换,而ECON还可控制FLASH数据存储器的擦除、校验等操作,它的控制模式如表1所示。
外部数据存储器的寻址范围为000000H~0FFFFFFH,共有16M字节地址空间,低16位地址线的连接和8051单片机系统中的外部数据存储器的地址连接方式相同,高8位的连接方式是复用P2口,利用ALE地址锁存信号在锁存P0口的低8位地址信号的同时锁存高8位地址信号,来实现16M字节地址空间的寻址。它的数据指针和8051单片机不同,是由3个8位寄存器组成,即DPP(页字节)、DPH(高位字节)、DPL(低位字节)。
1.3A/D转换器
ADuC812包含一个8通道单电源12位逐次逼近A/D转换器,A/D转换器的线性误差为±1/2LSB,转换时间为5μs,可以提供内部2.5V参考电源,同时也可以外接从2.5V到AVDD的参考电源,通过ADCCON1~3三个特殊功能寄存器来控制A/D转换,转换结果可保存在ADCDATAH/L二个特殊功能寄存器中,转换数据的低8位保存在ADCDATAL寄存器中,而高4位保存在ADCDATAH的低4位中,ADCDATAH的高四位用来保存采样的通道号。如果采样数据较大,如以200kHz的速率对被输入的模拟信号进行连续采样,这时必须用DMA模式,将采样数据直接保存在外部数据存储器中,采样结束后再对数据进行处理。
三个控制寄存器的功能如下。
(1)ADCCON1控制采集和转换时间以及转换模式,各位的功能如下:
CK1、CK0选择主时钟分频系数,从主时钟分频来产生ADC时钟,CK1-0为00~11,分别按1、2、4、8分频。AQ1、AQ0选择ADC采样保持时钟,分频系数从ADC时钟分频产生,AQ1-0为00~11时分别按1、2、4、8分频。T2C:定时器2溢出触发位,通过置位该位,可使用定时器2的溢出信号作为ADC转换触发信号。EXC:ADC转换外部触发使能位,通过置位该位,可由外部引脚(CONVST)来触发ADC转换。(2)ADCCON2控制通道选择和转换模式:
其中,ADCI为中断标志位;DMA为DMA模式使能位;CCONV为连续转换模式使能位;SCONV为单次转换模式使能位;CS3、CS2、CS1、CS0为通道选择位,用户通过程序指定须进行A/D转换的通道。CS3-0为0000~0111时指示8个通道号,1000时指示温度传感器,1111为DMA终止信号,其他情况保留。
(3)ADCCON3用于给出ADC状态指示位,只有第7位为BUSY位,其它位保留,BUSY位为只读位,在一个有效的ADC转换或校验周期中,该位为“1”,当转换或校验结束后,该位清“0”。
1.4D/A转换器
ADuC812包含两个12位的D/A转换器,每个D/A转换器可用于转换12位或8位数据,两个D/A转换器共用一个控制寄存器DACCON,每个转换器还有两个数据寄存器,实现A/D转换的12位数据在寄存器中是右调整,低8位在DACxL寄存器中,高4位在DACxH的低4位中,控制寄存器DACCON各位的作用如下所示:
其中,MODE用于控制DAC转换的模式,“1”为8位模式,“0”为12位模式;RNG1、RNG0用于输出范围控制,“1”为0~VDD,“0”为0~VREF;CLR1、CLR0为输出清除位,“0”使输出强迫为0V,“1”使输出正常;SYNC为两通道输出同步控制位,为“1”时,改写DACxL寄存器,输出即产生变化,要使两通道同步变化,须在SYNC为“0”时,更新两个通道的DACxL/H寄存器,然后使SYNC位置“1”,两通道同步更新输出值;PD1、PD0为节电模式位,“0”关闭相应通道的D/A转换,“1”打开D/A转换。
D/A转换器的参考电压可由DACCON控制寄存器通过软件选择VREF或VDD,使输出电压范围分别为0~VREF或0~VDD,D/A转换的响应时间小于15μs。
如所有与8051兼容的器件一样,对于程序和数据存储器,ADμC812具有各自独立的地址空间:64KB外部程序地址空间和16MB外部数据地址空间。但与其他器件不同的是,它包含了片内闪速存储器技术,向用户提供8KB的闪速/电擦除程序存储器、640B的闪速/电擦除数据存储器。
芯片集成了全部辅助功能块以充分支持可编程的数据采集核心。这些辅助功能块包括看门狗定时器(WDT)、电源监视器(PSM)以及ADCDMA功能。另外,为多处理器接口和I/O扩展提供了32条可编程的I/O线、I2C兼容的SPI和标准UART串行端口。
与以往的80C51单片机不同,ADμC812具有独特的在线调试和下载功能,由支持ADμC812的开发工具包QuickStart开发系统来提供。也就是说,在用户系统保留ADμC812的情况下,通过开发系统与ADμC812的串口通信,可直接对用户系统进行调试,并在调试完成后将已调试好的程序下载到ADμC812中。
虽然ADμC812具有上述各种优良性能,但由于它是一种新型微控制器,与以往的单片机相比,在用法上有许多不同之处。因此,在进行ADμC812系统开发应用时,仍然有许多问题须要注意。下面,将我们在应用ADμC812开发产品时发现的一些应注意的问题及其解决办法介绍如下。
贰、应用中存在的若干问题1.在线调试注意事项
ADμC812与其他单片机突出不同之处在于支持它的开发系统不同。QuickStart开发系统是支持ADμC812的开发工具包,功能完善,包括下载、调试和模拟等功能。
(1)RS232接口电路:对于用户开发系统来说,在线调试和下载功能最重要,也是最常使用的,但二者都需通过PC机上的串行端口与ADμC812的UART串行端口之间连接的串行端口电缆进行数据通信才能发挥作用。因此,用户在开发应用系统的同时,应设计一个RS232接口电路(如图2所示)来实现PC机与ADμC812的串口通信。
由于RS232接口电路是PC机和用户开发系统的唯一通路,因此,它是在线调试和下载功能实现的关键。在用户系统的开发研制过程中,经常会出现在线通信故障问题。导致该现象发生的原因有很多,但最有可能的是接口电路工作异常所产生。要判断RS232接口电路工作是否正常,可按以下步骤逐一检查RS232通信是否正常。
①V+和V-引脚电压是否足够高(分别超过+8V和-8V)。若电压较低,则可能ADM202芯片已损坏。②R1IN脚是否存在±12V的脉冲信号。若存在,则说明PC机方面通信发送信号正常。③R1OUT脚是否存在+5V信号。若存在,则说明ADM202接收PC机信号工作正常。
④T1IN脚是否存在+5V信号。若存在,则说明ADμC812对PC机的通信产生响应;否则是ADμC812通信存在问题,说
明ADμC812工作不正常。
⑤T1OUT脚是否存在±12V的脉冲信号。若存在,但ADμC812还无法进入在线调试状态,则说明DB9与PC机之间的串行接口电缆有问题。
(2)PSEN引脚
用户系统在具备RS232接口电路之后,还需通过一个与地相连的1kΩ电阻将ADμC812的PSEN引脚拉至低电平(见参考文献[1]、[2]),才能进入在线调试和下载状态。因此,PSEN引脚拉低是在线调试和下载功能实现的另一关键所在。值得强调的是,PSEN引脚与地之间连上1kΩ电阻并不一定就能保证PSEN为低电平。若静电造成PSEN引脚损伤,则1kΩ电阻不能将PSEN引脚拉低。经试验证明,在PSEN引脚损伤不严重时,可通过把PSEN直接对地短路将其拉至低电平;但若损伤严重,则即使直接接地,器件仍然不能工作。因此,在使用ADμC812时,应特别小心、谨防静电。如焊接芯片时应将电烙铁接地,并戴上防静电手镯。由于ADμC812的调试器是在用户系统复位时检测PSEN引脚状态的,因此,为提高通信成功几率,可在用户系统复位瞬间将PSEN引脚直接对地短路。但在ADμC812芯片进入在线调试或下载状态之后,PSEN引脚仍应通过1kΩ电阻接地。当然,若需要在下载程序后脱机运行,应将PSEN引脚与1kΩ下拉电阻断开,否则,ADμC812将一直保持在线调试状态。
(3)资源占用问题
ADμC812具有3个16位定时器/计数器,即:定时器0、定时器1和定时器2。每一个定时器/计数器包含2个8位寄存器THX和TLX(X=0,1和2)。所有3个定时器/计数器均可配置作为定时器或计数器,此功能和普通单片机相同。由于与其他单片机不同,ADμC812具备在线调试功能,因此,芯片处于在线工作状态下某些功能将会受到限制。这是因为在线调试时,计算机和芯片之间的通信占用一定的资源所导致。经实践证明,定时器1就是被占用的资源之一。若用户在线调试的程序中使用了定时器1,则无论是设断点调试,还是单步或连续运行,都会有程序无法执行的情况发生。但若将程序中的定时器1屏蔽掉,则程序能正常运行,实现用户预定的功能。当然,在线调试程序时可以使用定时器0和定时器2,因它们未被占用。虽然在线调试时,定时器1无法使用,但并不意味着用户不能在用户系统中利用该定时器。用户可先将预定功能用定时器0实现,在调试通过之后,再改用定时器1来实现;也可直接用定时器1实现,但只能盲调,因程序必须下载后脱机运行。
2.A/D转换器的使用问题
ADμC812内集成的ADC转换模块,包含了8通道、12位、单电源A/D转换器,这些A/D转换器是由基于电容DAC的常规逐次逼近转换器组成的,接收的模拟输入范围为0至+VREF(+2.5V)。另外,此模块还为用户提供片内基准、校准特性,模块内的所有部件能方便地通过3个寄存器SFR接口来设置。总之,ADμC812的ADC模块具有与一般ADC芯片相比拟的性能,并且操作简单、可靠性高,采集速率可高达200kHz。
(1)基准电压:A/D转换器的2.5V基准电压既可由片内提供,也可由外部基准经VREF引脚驱动。若使用内部基准,则在VREF和CREF引脚与AGND之间都应当连接100nF电容以便去耦。这些去耦电容应放在紧靠VREF和CREF引脚处。为了达到规定的性能,建议在使用外部基准时,该基准应当在2.3V和模拟电源AVDD之间。由于片内基准高精度、低漂移且经工厂校准,并且当ADC或DAC使能时,在VREF引脚会出现此基准电压。因此,在进行系统扩展时,可将片内基准作为一个2.5V的参考电源来使用。若要把片内基准用到微转换器之内,则应在VREF引脚上加以缓冲并应在此引脚与AGND之间连接100nF电容。在实际应用中应当特别注意,内部VREF将保持掉电直到ADC或DAC外围设备模块之一被它们各自的使能位上电为止。
(2)模拟输入:与其他ADC芯片相比,ADμC812的ADC模块有一个缺点,就是ADC正常工作的模拟输入范围为0~+2.5V;而允许输入的电压范围只能为正电压(0~+5V)。经实验证明,若输入的模拟电压超过+2.5V(最大值为+5V),ADC的采样结果为最大值(0FFFH),虽然结果不对,但并没有影响ADμC812正常工作;但是,一旦输入负的模拟电压,则会影响ADμC812正常工作,表现为ADC的基准电压(VREF=+2.5V)消失和采样结果不正确,且若长时间输入负电压,将有可能损坏芯片。因此,在实际应用中,若发现启动ADC之后VREF端无电压,则应立即将芯片复位,并检查模拟输入信号的采集放大部分。在确保进入ADμC812的模拟信号在0~+2.5V范围内之后,才能再次启动ADC。实际应用时,应保证输入的模拟电压为正电平。
3.并行I/O端口的使用问题
与其他单片机一样,ADμC812也有4个通用数据端口(P0~P3)与外部器件交换数据,且除了用作通用I/O之外,某些端口还能实现外部存储器操作。另有一些端口则与器件上外围设备其他功能多路复用。
(1)P1口
值得注意的是,在ADμC812中端口0、2和3是双向端口,而端口1是只输入端口。在图3中可以看到在P1口的电路中包括了位锁存器和输入缓冲器,但没有输出驱动器,因而P1口只能被配置为数字输入或模拟输入,不能用于输出。
当P1口用作模拟输入时,它对应于ADμC812内8通道模数转换的输入端口ADC0~ADC7。若在实际使用中,不须将8个通道ADC都用上,可将剩余的P1口引脚设置为数字输入,但此时须注意,它与标准的8051单片机用作数字输入的通用I/O口不同,认为高电平有效。因此,P1口用作数字输入时,在检测是否有输入信号之前,须将0写至对应端口,然后再判断。这就要求系统在设计时,应将用作数字输入的P1口外加1个下拉电阻,一般为几kΩ。
(2)P2口
ADμC812的P2口也是双向端口,包含输入缓冲器、输出锁存器和输出驱动器。通过与P2口相应的端口SFR,可将P2口的各端口引脚独立地配置为数字输入或数字输出,以及对它们进行读、写访问。这些与一般单片机P2口作通用I/O口的用法相同。但当ADμC812接有外部数据存储器时,P2口不仅要用于输出中8位地址(A8~A15),还要用于输出高8位地址(A16~A23),此用法类似于P0口。不同的是,P0口是数据和地址总线复用,而P2口是中位、高位字节地址总线复用。因此,P2口在用于外扩大容量数据存储器时,也应通过一个锁存器将高位字节地址锁存,如图4所示。
4.外部寻址问题
与其他单片机不同,ADμC812具有24根地址线。它可寻址的外部数据存储器空间为16MB,此超大容量的存储空间可满足众多应用领域的需求。由于外部数据存储器空间高达16MB,只用DPTR作间址寄存器是不够的。因此,ADμC812的数据指针是由3个8位寄存器来组成,分别是DPP(页字节寄存器)、DPH(高位字节寄存器)和DPL(低位字节寄存器),在进行内部和外部代码访问或外部数据访问时,由它们来提供存储器地址。与其他单片机一样,DPTR仍然是由DPH和DPL两个寄存器来构成,且用法相同;而DPP是用于传送A23~A16最高8位地址的寄存器,这相当于若将外部数据寄存器每64KB划分为1页,则不同的DPP值将对应于不同的页,因此取名为页寄存器。
5.SPI串口对P3口的影响
为便于MCU与各种外围设备进行通信,ADμC812提供了三种串行I/O端口:UART接口、I2C兼容的串行接口和串行外设接口(SPI)。其中,SPI接口是工业标准的同步串行接口,它允许MCU与各种外围设备以串行方式(8位数据同时同步地被发送和接收)进行通信。由于只须使用4条线就可与多种标准外围器件直接接口,因此,SPI接口在串口通信方面有
着广泛的应用。然而,我们在使用ADμC812的SPI串口进行通信时,发现它与其他芯片(具有SPI串口功能)不同,此SPI串口的使能会对P3口产生影响,其现象表现为:无论P3口实际输入电平为何值,P3口的内部锁存器都认定为高电平,从而程序中的JB或JNB等判断转移指令将失去作用。这说明,SPI串口使能将使P3口只能作为输出口来使用。因此,在同时使用SPI串口和P3口作输入口时,为避免错误发生,必须在每次P3口检测输入信号之前都将SPI串口禁止。
结束语:ADμC812作为一种新型的微控制器,具有一般单片机所不能比拟的强大功能。它内部集成的8通道高精度ADC和双12位DAC,使其能极有效地简化仪器中数据采集系统部分,同时它所提供的三种串口通信方式,可满足各种串行器件的接口问题。它的在线调试和下载功能可极大地方便用户系统的开发研制。经过一段时间探索和应用,我们已基本掌握ADμC812的各种功能,总结出一些经验和教训,本文旨在为用户提供借鉴参考。
叁、ADuC812常见问题及回答
问:我能把一个高阻抗模拟信号源直接接到ADμC812的输入端吗?是否必须先把信号缓冲?
答:对高阻抗信号源的主要限制是ADμC812模拟输入端的输入漏电流,它的典型值是±1μA。这个电流流过610Ω的信号源内阻时,将会产生610μV的误差。在2.5V基准源的情况下,这是1LSB(或2.5V/4096)。因此,大于610Ω的信号源内阻就能够产生直流测量误差。
问:听说了有关ADμC812“自校准”功能的一些特点,我如何使用这些功能?它能校准ADμC812的ADC失调误差和增益误差吗?
答:ADμC812的“自校准”涉及到一些软件程序的使用,在应用技术笔记μC005中作了说明,该应用笔记可在网址www.analog.com/microconverter/technotescode.html找到。校准过程能校准ADμC812的ADC失调误差和增益误差。问:ADμC812要求的采样时间是多少?我应如何确定ADCCON1中采样时间选择位的值?
答:几乎在所有情况下,ADμC812一个ADC时钟周期的采样时间(ADCCON1.2=0,ADCCON1.3=0)就足以在内部跟踪/保持放大器切换到保持方式前捕获到输入信号。唯一例外是高阻抗信号源的模拟输入。但是,由于大于610Ω的信号源内阻会导致直流误差,因此在这种情况下,无论如何要先进行缓冲。
问:我应如何选择ADμC812的ADCCON1寄存器中的转换时间?什么是ADC的时钟分频位?
答:ADμC812的遂次逼近型ADC由主时钟分频后驱动,为了保证ADC的正确工作,ADC时钟必须在400kHz至4MHz之间,当ADC时钟在400kHz至3MHz之间时获得最佳性能。这个范围的频率很容易从400kHz主时钟频率获得,对于16MHz的主时钟只需4分频就行了。例如,对于12MHz的主时钟,可以通过设置ADCCON1中的相应位(ADCCON1.5=1,ADCCON1.4=0),把ADC时钟的分频系数设为4(也就是ADCCLK=MCLK/4=3MHz)。ADC总转换时间是15个ADC时钟,外加1个ADC同步时钟,再加上选择的采样时间(1、2、3或4个ADC时钟)。以上面例子为例,设采样时间为1个ADC时钟,那末总的转换时间是17个ADC时钟周期(对于3MHzADC时钟来说,是5.67μs)。问:我怎样确定ADμC812在连续转换模式下的采样速率?
答:在连续转换模式下,前一个转换结束后,便开始一次新的转换。采样速率就是上述总的转换时间的倒数。在上面的例子中,连续转换模式下的采样速率为176.5kHz。
问:在硬件CONVST模式下,ADμC812的孔径延迟是什么?孔径误差我能预知吗?答:在硬件CONVST模式下,用一个外部逻辑输入来触发ADC转换。
ADμC812的孔径延迟是从外部触发信号的上
升沿到采样保持放大器切换到保持状态瞬间的时间间隔,这个时间等于采集时间(通过ADCCON1选择)加上0.5到1.5个ADC时钟周期的同步时间。当CONVST触发与ADC时钟不同步时,会引起一个ADC时钟周期的孔径误差,这个孔径误差能够通过外界CONVST信号与ADC时钟同步来避免。由于ADC时钟是由主时钟简单分频而成的,你无法直接得到它。因此,为了使你的CONVST信号与ADC时钟同步,你必须使CONVST与另一个被分频的主时钟同步,这个分频主时钟的分频系数应是产生ADC时钟的分频系数(由ADCCON1选择)的整倍数。
问:如果ADμC812在还没有完成一次转换的期间,接收到第二个CONVST触发信号(软件SCONV,定时器2触发,或硬件CONVST触发),会产生什么结果?
答:第二个CONVST触发信号将被忽略不计。在这种情况下,第二个触发信号将被丢失。为了避免采样信号的丢失,在启动转换前,应确保你的软件检查ADC的忙标志(ADCCON3.7)。在定时器驱动或硬件驱动模式下,应确保定时器溢出速率或输入信号边沿速率大于ADC转换时间加上采样时间(由ADCCON1控制)。问:我要用ADμC812的内部电压基准源,我应如何使用VREF和CREF引脚?答:二者到地各接一个0.1μF瓷片电容进行去耦,接线要短。
问:我想用ADμC812的内部电压基准源驱动其他电路,我应该从VREF引脚还是从CREF引脚获取电压?这些引脚流出/
吸收电流的能力如何?
答:用VREF引脚。CREF引脚是缓冲器的一个内部节点,它的电压不等于VREF。关于VREF引脚的流出和吸收电流的能力,实际上等于零,它是一个具有50kΩ内阻的2.5V电源。如果你想用该电压去驱动其他电路,那末必须在这个引脚上加一个电压缓冲器。当然,和通常的做法一样,VREF和CREF引脚应通过0.1μF瓷片电容接地进行去耦。问:ADμC812能使用外部电压基准源吗?
答:可以,你可用外部电压基准源直接驱动VREF引脚,这看起来像一个50kΩ负载接到2.5V电压上。你是否想用电容对VREF结点去耦,取决于你所选取的电压基准源。然而,CREF引脚和任何其他线路接法一样,必须用一个0.1μF瓷片电容接地进行去耦。虽然外部电压基准源高达AVDD是允许的,即VREF=AVDD,但此时VREF引脚和CREF引脚应该短接在一起,以便将它们内部缓冲器傍路掉。
问:我怎样使ADμC812的内部电压基准源有效和无效?内部电压基准源有效后,基准电压稳定时间有多长?
答:每当你允许ADC(通过ADCCON1)或者允许DAC(通过DACCON)时,ADμC812的内部电压基准源就会自动有效。一旦有效,电压基准源需要65ms接通时间才能稳定到精确值。问:我需要为ADμC812提供一个外部复位电路吗?
答:你必须提供一个外部上电复位(POR)电路来驱动ADμC812的RESET引脚。在电源电压(AVDD和DVDD)低于2.5V时,你的复位电路必须使RESET引脚保持高电位。另外,VDD保持在2.5V以上至少超过10ms,RESET信号才允许变低。外部POR电路必须能在1.2V或更低的电压下工作,详细情况见ADμC812用户手册。问题:ADuC系列产品需不需要外部上电复位电路?
答案:早期的ADuC产品时需要外接上电复位电路的。型号包括ADuC812,ADuC816和ADuC824。可以使用复位芯片如ADM809,ADM810。具体电路可以参考这三款芯片的评估板设计原理图。问:ADμC812有两个DAC,我如何使两个DAC的输出电压同步更新?
答:ADμC812有一个同步更新位(在DACCON中),可用来确保两个DAC输出值同时被更新。使用该功能时,在新值重装到两个DAC寄存器前,应将同步更新位清零。一旦新数据载入两个DAC寄存器中,将该位重新置1,这样两个DAC的输出同步变成新值。
问:如何使用ETIM寄存器?
答:Flash/EE的擦除/编程定时是从主时钟得来的,当主时钟频率为11.0592MHz时,你完全不需要写ETIM寄存器。但是,在其他主时钟频率(FCLK)下运行时,你必须改变ETIM1和ETIM2的值,以避免降低Flash/EE的寿命和数据保存能力。ETIM1和ETIM2形成16位字,ETIM2为高字节,ETIM1为低字节,这个16位字必须如下设置,以确保最佳的Flash/EE寿命和数据保存能力。
ETIM2,ETIM1=100μs·FCLK
ETIM3应该始终保持其默认值201(C9H)。
问:使用片内的看门狗定时器时,数据手册说必须设置两个刷新位来复位定时器,我需要按什么顺序来设置这两位?在将它们设置为1后,还需要将每位清零吗?
答:为了刷新看门狗定时器,你只需要设置WDR1和WDR2这两位,从这两位读出的总是零。设置这两位的顺序必须先设置WDR1,然后立刻设置WDR2。相关的例子见www.analog.com/microconverter上的示例程序目录中的“WDtimer.asm”。问:有人告诉我ADμC812有加密位来限制对Flash/EE程序存储器和数据存储器的访问。为什么我在ADμC812数据手册中找不到关于该特征的任何介绍?
答:ADμC812中有加密位,但是它们功能不正确,因此没有把它们作为这个片子的功能提供。加密位存放在Flash/EE数据区的第160页(A0H),而手册中正式给出的运行区域是从0到159页(00—9FH)。应当避免将数据写到未公开的第160页,因为它可能使芯片锁死。详见ADμC812堪误表。问:我如何使用ADμC812片内温度传感器?
答:ADμC812的温度传感器输出电压与芯片的温度成反比。在25℃时,输出电压大约为600mV,随着温度的改变,输出电压以-3mV/℃变化。所以,当工作温度升高时,温度传感器的输出电压减小。当然,用ADC将温度传感器的输出电压转换为数字量。
应当注意:上面所述的两个数字25℃时的600mV和-3mV/℃是典型值,不同芯片的这些数值有差异。温度传感器具有良好的线性,因此,用校准程序在两个温度下进行校准之后(一个针对失调,另一个针对温度梯度),就可以完成相当准确的温度测量。要记住片内温度传感器测量的是芯片的温度,而不是环境温度,如果要确定周围空气温度,不要忘了把自身发热的因
数加到公式中。
问:我怎样计算在给定条件下ADμC812消耗的总功率?
答:下面是ADμC812总电流的简单计算表,下面所有的值都是典型值。在你给定的主时钟频率(MCLK)下,只要把所有有效的外设电流简单地加上芯片内核(正常模式)消耗电流就可以了。
VDD=5V
芯片内核(正常模式)芯片内核(空载模式)ADCDAC电压基准源
于电源我还需要知道那些事项?
答:不能,你不能用分离电源运行ADμC812,DVDD和AVDD之间的最大绝对差值是±0.3V。因此,ADμC812最好用单电源运行,只在必要的时候,在DVDD和AVDD之间用一个小的铁氧体磁珠(0805芯片大小)或者是一个小电阻(1Ω或2Ω)进行隔离。当然,在靠近每一电源引脚与地之间应接一个0.1μF瓷片电容去耦,在印制板的某些地方还应有大容量电解电容接在电源与地之间进行去耦。如果你选择了带铁氧体磁珠或小电阻隔离的分离电源,那么必须确保在分离电源的每一边都有本地的瓷片电容和电解电容。问:我能用多快的主时钟运行?
答:ADμC812的8052内核能够在比规定的最大主时钟16MHz快得多的时钟频率下运行,不会有任何错误。可是,当采用比规定速度快得多的主时钟运行时,ADμC812的模拟性能会降低。所以我们不推荐使用高于16MHz的晶振或时钟振荡器。问:ADμC812具有静态MCU芯片特点吗?我能用多慢的主时钟运行?
答:是,ADμC812具有静态8052内核特点。这个内核运行的主时钟频率可以降低到直流(DC)。可是,ADC时钟信号是从主时钟分频得到的,ADC时钟频率过低会降低ADC性能。为了确保ADC性能,最低的ADC时钟频率是400kHz。ADC时钟等于主时钟除以1,2,4或8(由ADCCON1选择),所以,为了确保ADC工作,最低主时钟频率也是400kHz。问:在ADμC812中,P1口主要用于模拟输入,我能把P1口的引脚用作数字输入/输出吗?
答:P1口的引脚能用作模拟输入或数字输入,但不能用于数字输出。所有P1口引脚的默认配置为模拟输入。在这种状态下,P1口寄存器保持为FFH(全为1)。为了把某些P1口引脚配置为数字输入,只要把P1口寄存器中的相应位清零就行了。问题:ADUC8XX系列的开发方法和开发工具是怎样的?
答案:ADuC8xx的开发方法是非常简便的。ADUC8XX系列提供了评估板套件,以帮助用户熟悉ADuC8xx的开发方法和开发环境。以ADUC831为例,EVAL-ADUC831QSZ套件包括评估板一块,下载线,9V电源和相应的软件光盘。评估版套件中的光盘中包含了开发中用到的所有的软件,数据手册,应用笔记,评估板原理图、例子代码等信息。如果没有购买评估板的用户想要得到此光盘,可以联系800-810-1742或者发email至china.support@analog.com索取。下面根据光盘中提供的各种开发软件对开发方法做一介绍。
Aspire:它是一个集成开发环境。可以编辑、编译、仿真及在线调试基于汇编语言和C语言的程序。如果要使用在线调试功能,需要使用ACCUTRON公司的ACE仿真器。这个ACE仿真器与PC的接口是USB,与芯片的接口只需一个管脚,所以称为单管脚调试。
Keil:它是一个集成开发环境。它支持编辑、编译、软件仿真。目前最新版本的KeilC51支持UART口直接硬件在线调试,而不需仿真器(ACE)。用户可在Keil的网站www.keil.com下载最新版本的软件。
WSD:它是下载程序的工具。当用Aspire或Keil编译生成*.hex文件后,可以用此软件把程序从PC上下载到芯片中。PC与芯片之间的连接是通过串口实现的。在两种评估板套件中,都包含了串口下载线。如果没有购买评估板套件,您也可以自己在市场上买一根串口线。但是需要在您的电路板上加入一颗RS232电平转换芯片。如果您已经有ACE仿真器,也可以不用WSD,而用ACE直接下载。
DEBUGV2:它是在线调试汇编语言的工具。也是通过串口来实现的。不需要任何仿真器。
WASP:它是用来评估ADuC8xx产品内部ADC性能的软件。它也是通过串口与芯片通信。不需要任何仿真器。如需更加详细的软件使用方法,请参看光盘中的文档8XXGetStartedvx.x.pdf。
注意:光盘中提供的Keil和Aspire软件是试用版的,有代码大小的限制。如要获取完整版,请联系ARM与Accutron公司
1.6μs·MCLK+5mA0.75μs·MCLK+5mA1.3mA250μA200μA
VDD=3V
0.8μs·MCLK+1.5mA0.25μs·MCLK+1.5mA1.0mA200μA150μA
问:ADμC812的模拟和数字电源有各自独立的引脚,我能用分离的电源运行吗?例如3.3V的DVDD和5V的AVDD。关
购买。
EVAL-ADUC831QS
问题:为什么无法下载程序至ADuC8XX?
Eval-ADuC831QSP
答案:无法下载程序至ADUC8XX系列的原因有很多,可以从以下几个方面来确定:检查晶振是否工作正常,电源是否满足要求;串口通信双向是否正常,通过超级终端,硬件上复位,超级终端窗口会显示芯片型号,由此判断串口是否工作正常;RS232电平转换芯片的逻辑电平是否和ADuC8XX兼容。即如果ADuC8xx的供电是3.3V,则使用的RS232芯片也得用3.3V的芯片。如果是5V,接口电平也应彼此匹配。EA是否接高电平,/PSEN是否通过1kOhm电阻下拉到地;检查WSD的版本是否支持该产品。检查WSD的配置是否正确,尤其是时钟频率的配置。
进入下载模式的操作是否正确,操作步骤如下图所示。
问题:在使用ASPIRE软件时,会出现“CannotfindPOD”的错误?
答案:在使用APSIRE软件进行仿真时,出现“CannotfindPOD”的错误是因为未连接硬件的仿真器ACE。如要购买ACE仿真器,请联系ACCUTRON公司。
目前最新版本的KeilC51工具已支持在线硬件调试功能,而无需仿真器ACE,用户可在Keil网站下载试用软件测试,试用软件代码大小限制为2K。
问题:在使用Keil编译时,程序是否会有大小的限制?
答案:使用ADI公司提供的软件光盘,其中Keil会有2K代码的限制。如需完全版,请联系Keil公司。问题:如何通过WSD向DATAFLASH中下载数据?数据文件格式是怎样的?
答案:数据文件的格式为页码+四个字节的数据,例如0,10,99,10,99(第0页,数据1,数据2,数据3,数据4)。下面是一个数据文件的例子(页面地址,数据1,数据2,数据3,数据4),0,10,99,10,991,FF,F8,11,982,12,9B,C2,973,13,AC,13,9C4,A4,95,1D,955,A5,94,15,946,A6,93,16,937,17,B2,17,928,18,91,18,919,19,90,B9,9010,20,C9,20,8911,21,88,21,8812,22,87,22,8713,C3,86,23,8614,24,C5,24,8515,25,84,25,84
下载的步骤与WSD下载程序的步骤相同。如果选中“只下载数据”,那么会有提示让你选要下载的文件。问题:如何扩展MicroConverter外部数据存储区?
答案:Microconverter可以支持外部RAM的扩展达到16Mbyte.在Port2加一个锁存器用来控制高8位地址(A8~A15)及页地址(A16~A23).Port0控制低八位地址(A0~A7)。具体连接如下图所示。
问题:为什么晶体不起振?
答案:在XTAL1和XTAL2管脚各需要连接一个电容至地,电容的取值与晶体的要求有关,一般为15pF左右。问题:内部温度传感器的作用是什么?
答案:ADUC8XX系列产品内置温度传感器,但ADuC847/ADuC848内部没有集成温度传感器。它的主要功能是用来监测芯片本身工作时的温度,不能用来监测环境温度。在25度时,传感器通常有一个典型值输出,客户可以先校准以保证精确度,传感器的输出与温度成反比。
问题:MicroConverter分别有模拟地和数字地引脚,PCB中如何处理?
答案:为了获得最佳的ADC/DAC性能,在布局布线时需要注意,ADuC8XX系列产品分模拟地(AGND)和数字地(DGND),可以按照以下三个方面来考虑。
系统分单独的模拟部分和数字部分,如果这两个部分的接地点距离芯片很近,则需要将芯片的模拟地接到系统模拟地平面,数字地管脚接到系统数字地平面,且两个地平面在中间相连,如图a所示。
系统分单独模拟部分和数字部分,但是它们在某点共地。在这种情况下,将ADuC8XX的模拟地和数字地管脚都接到模拟地,如图b所示。
系统中只有一个地平面,必须先确定模拟部分与数字部分物理上是完全独立的,以避免数字信号干扰模拟信号,此时,芯片可放置在模拟部分与数字部分的中间,模拟地和数字地管脚直接接到地平面上。
问题:ADuC841/842/843为什么时钟不能到16MHz?
答案:ADuC841/842/843分为5V电源和3V电源两种不同的芯片,5V的芯片不能工作在3V下,同样3V的芯片不能用5V供电,而且所带的Flash空间大小也不一样,有8K,32K,62K三种,在选购时要注意区别。3V电源的产品主时钟最高为8.38MHz,寄存器PLLCON中的CD2~CD0不能设为000,5V电的产品能够工作到16.78MHz。问题:P0口做输出时应该怎么设置?
答案:P0口作为输出时,需要加上拉电阻,一般为10kOhm,这是因为P0为漏级开路结构(open-drain)。问题:使用I2C接口时需要注意什么?
答案:I2C的串行数据线(SDATA)和串行时钟线(SCLOCK)为双向,ADuC8XX既可以作为主设备(softwaremaster)也可以为从设备(hardwareslave),而且当作为主设备时可以控制多个从设备。以ADUC812为例,具体连接如下,必须在SCLOCK和SDATA加上拉电阻。
问题:如何使用内部的XRAM?
答案:ADuC8XX系列产品内部集成2Kbytes的XRAM,尽管XRAM是由内部提供的,但是在访问这段空间时需要使用MOVX指令。当使用内部XRAM时,Port0和Port2可以作为通用I/O口使用。
问题:以前用ADUC812,哪些产品可以作为它的升级产品?管脚是否兼容,它们之间的差异是什么?
答案:ADUC812是最早的一代ADUC8XX系列产品,现已不推荐客户使用。ADUC83X和ADUC84X系列产品可作为ADUC812的升级产品。ADUC831/832与ADUC812管脚完全兼容,程序存储器8倍于ADUC812。ADUC841/842/843是单指令周期的ADUC831/832,最高处理能力达20MIPS。更多详情请参考1.1产品简介。问题:在使用UART口进行硬件调试时,有的定时器无法使用?
答案:在用UART进行调试时,会用到其中的一个定时器的资源来产生调试时通信的波特率。ADuC812用的是Timer1,ADuC814、ADuC816和ADuC824用的是Timer2。ADuC83xandADuC84x用的是Timer3。所以在调试时,无法使用相应的定时器。所以如果想调试定时器,必须用ACE仿真器,因为它用的是单引脚进行仿真,而不是UART接口,不使用定时器资源。
问题:ADuC8XX的辅助DAC上电后的状态是什么?
答案:ADuC8XX的DAC上电后是disable状态,其输出表现为高阻。如果希望其在上电后输出一个0电平,需要在其输出管脚处加一个到地的下拉电阻。问题:TIC如何使用?
答案:TimeIntervalCounter(TIC)是ADuC8XX系列提供的片上时间间隔计数器,可以计时1/128秒到255小时。通常它的时钟不使用系统主时钟,可以工作在powerdown模式。当计数达到预设的数值时,寄存器的相应位会被置1,同时可以用来产生中断。
问题:我使用uC004中的串口下载协议来下载我的代码。如果默认9600的波特率,下载成功。但是我想提高下载代码是的波特率,于是我通过写命令改变了波特率,此时器件返回0x06(ACK)。改完波特率后,我使用新的波特率写RESET命令,但是接收不到器件对RESET的响应?
答案:RESET命令会把波特率也设置回9600,所以器件在RESET后只能以9600波特率进行通信,而不是RESET前的波特率。
问题:WSD安装时或者使用时会报系统错误?
答案:请使用最新版的WSD软件,WSD7.0.5是目前写本FAQ时的最新版本。新版本的WSD的系统兼容性会更好。问题:ADuC834,ADuC836的数据手册中LFCSP封装中28和29管脚没有定义,它们是什么?答案:28管脚是SCLOCK;29管脚是SDATA/MOSI。问题:ADuC8xx系列中怎样进行程序加密?
答案:ADuC内部的FLASH/EE具有三种安全模式:LOCKMODE,SECUREMODE,SERIALSAFEMODE。这三种模式的具体区别请参看数据手册。您可以根据需要选择模式。这些安全模式可以通过串行通讯协议使能。关于具体使用方法请参见uC004应用笔记。uC004可以在ADuC的开发光盘中或者ADI网站找到。
因篇幅问题不能全部显示,请点此查看更多更全内容