shane

ADuC7XXX系列常见问题解答

shane 在 2013-1-24 建立的討論區
最後回覆由zwm於2017-1-11提供

问题:ADUC7XXX系列的开发方法和开发工具是怎样的?

答案:ADuC7XXX的开发方法是非常简便的。ADUC7XXX系列提供了三种评估板套件,以帮助用户熟悉ADuC7XXX的开发方法和开发环境。以ADUC7020和ADUC7026为例,一种是EVAL-ADuC7020MKZ,这是一种迷你套件,它包括一块迷你评估板,电源线和串行下载线;另一种是EVAL-ADUC7026QSZ,它包括一块评估板,9V电源,串行下载线,和相应的软件光盘;还有一种是EVAL-ADUC7026QSPZ,它与前一种的区别是包括了一个硬件仿真器,可以支持硬件在线调试。评估版套件中的光盘包含了开发中用到的所有的软件,数据手册,应用笔记,评估板原理图、例子代码等信息。如果没有购买评估板的用户想要得到此光盘,可以联系800-810-1742或者发email至china.support@analog.com索取。下面根据光盘中提供的各种开发软件对开发方法做一介绍。

 


  1. IAR
    IAR Embeded
    Workbench是一套开发工具,用于对汇编、C或C++编写的嵌入式应用程序进行编译和调试,它是一套高度精密且使用方便的嵌入式应用编程开发工具。该集成开发环境包含了IAR的C/C++编译器、汇编器、链接器、文件管理器、文本编辑器、工程管理器和C-SPY调试器。通过其内置的针对不同芯片的代码优化器,IAR
    Embedded Workbench可以为ARM芯片生成非常高效和可靠的代码。(光盘中所提供的版本有32K代码量的限制)
  2. Keil
    它是一个集成开发环境。它支持编辑、编译、软件仿真。目前最新版本的Keil支持UART口直接硬件在线调试,而不需仿真器。用户可在Keil的网站www.keil.com下载最新版本的Keil
    uVision3来实现对ADUC7XXX系列单片机的编程。(光盘中所提供的版本有16K代码量的限制)
  3. ARMWSD
    它是下载程序的工具。当用IAR或Keil编译生成*.hex文件后,可以用此软件把程序从PC上下载到芯片中。PC与芯片之间的连接是通过串口实现的。在三种评估板套件中,都包含了串口下载线。如果没有购买评估板套件,您也可以自己在市场上买一根串口线。但是需要在您的电路板上加入一颗RS232电平转换芯片。

  4. PLATOOL
    它是用来配置ADuC702X和ADUC712X系列产品内部可编程逻辑阵列PLA的软件。它可以根据实际的逻辑连接生成C或汇编语言代码,也可以根据每个element的寄存器值来产生相应的逻辑电路。如需更加详细的软件使用方法,请参看光盘中的文档ADuC702xGetStartedv1.0.pdf。
    注意:光盘中提供的IAR和KEIL软件是试用版的,有代码大小的限制。如要获取完整版,请联系IAR与ARM公司购买。

 




































ADuC702X系列评估板选型表
Support Product Parts Covered Emulator Board Cables/power supply Description
Mini Kit ($30) ADuC7020 All 40-Pin parts No Mini board Serial cable Prototyping system for $30
QuickStart
Kits
($75)
ADuC7020
ADuC7024
ADuC7026
All 40-Pin
All 64-Pin
All 80-Pin
No Evaluation board Serial cable & power supply Evaluation/
Upgrade system for $75
QuickStart Plus
Kit

($249)
ADuC7026 All Parts
(7019-27)
Yes Evaluation board Serial cable & power supply Full Development System for
$249

 


 

问题:为什么无法下载程序至ADuC7XXX?

答案:无法下载程序至ADUC7XXX系列的原因有很多,可以从以下几个方面来确定

 


  1. 检查电源是否满足要求。
  2. 串口通信双向是否正常,RS232电平转换芯片的逻辑电平是否和ADuC7XXX兼容。即如果ADuC7XXX的供电是3.3V,则使用的RS232芯片也得用3.3V的芯片。

  3. PC机通信端口配置是否正确,如果不清楚实际的通信端口,可以在计算机的设备管理器里找到,如图1所示。对于一般的串口连接,通信端口应该是COM1,如果是利用USB转串口的方式,通信端口可能是COM3或COM4。一旦确定了通信端口,就可以到ARMWSD的Configure对话框中设置端口,并要将波特率设为9600,如图2所示。

    图1
    图1

    图2
    图2
  4. BM(P0.0)是否通过1kOhm电阻下拉到地,/RST是否通过1kOhm电阻上拉到DVDD,如图3所示。
    图3
    图3
  5. 如果代码量大于64K,检查ARMWSD的版本是否支持这么大代码量的下载,这主要是针对FLASH大于64K的ADUC7032、ADUC7033、ADUC7128、ADUC7129而言的,建议您使用最新版的ARMWSD软件,新版本的ARMWSD性能会更好。

  6. ADUC702X系列单片机有两个UART串口,分别是P1.0(SIN) & P1.1(SOUT),P0.7(SIN) &
    P2.0(SOUT),上电后我们只能用P1.0和P1.1来下载程序,请检查您的端口连接是否正确。
  7. 进入下载模式的操作是否正确,操作步骤如下图所示。
    点击看大图

 


 

问题:在使用Keil或IAR编译时,程序是否会有大小的限制?

答案:使用ADI公司提供的软件光盘,其中Keil会有16K代码量的限制,IAR会有32K代码量的限制。如需完全版,请联系ARM和IAR公司。

 

http://www.analog.com/zh/content/cast_faq_ADuC7XXX/fca.html#top

 

 


 

问题:什么是IAP,它有什么用途,ADUC7XXX系列单片机是否支持IAP?

答案:IAP(In

Appplication Program),即在应用中编程。顾名思义,就是在系统运行的过程中动态编程,对程序执行代码的动态修改。

 

IAP技术应用于嵌入式系统的数据存储和在线升级。例如在程序运行工程中产生4k字节数据表,为了避免占用SRAM空间,用户可以使用IAP技术将此表写入片内Flash。又如用户在开发完一个系统后要增加新的软件功能,可以使用IAP技术在线升级程序,避免重新拆装设备。

ADUC7XXX系列单片机不但支持在系统编程(ISP),而且支持在应用编程(IAP)。ADUC7XXX系列单片机在出厂时,由ADI厂家在片内固化了一段Boot代码。Boot装载程序控制芯片复位后的初始化操作,并提供对Flash编程的方法。Boot程序可以对芯片进行擦除、编程。

在系统编程是通过Boot装载程序和UART对片内Flash存储器进行擦除/编程的方法,其实现结构如图4所示。

 

点击看大图
图4
在系统编程结构
在应用编程是用户的应用代码对片内Flash存储器进行擦除/编程的方法,其实现结构如图5所示。但如果要实现IAP功能,还需要用户在Flash存储中再设计一段Boot-loader程序,起始地址为0x00080000,结束地址可根据IAP功能的代码量要求确定。

 

 

在应用编程结构
图5
在应用编程结构

 

 


 

问题:ADUC702X系列单片机的功能很强大,我怎么才能迅速掌握每一种功能的寄存器配置和编程方法?

答案:在您安装了我们提供的光盘程序后,在您的安装目录下就可以找到利用KEIL和IAR两种编译环境开发的各种功能的示例代码,可以帮助您迅速掌握ADUC7XXX系列单片机内部集成的每种功能的应用,比如ADC,DAC,I2C,SPI,UART,PLA,PWM等等。

 

http://www.analog.com/zh/content/cast_faq_ADuC7XXX/fca.html#top

 

 


 

问题:如何扩展ADUC7XXX系列单片机外部存储区?

答案:ADUC7XXX系列单片机只有ADuC7026,ADuC7027,ADuC7129可以支持外部RAM和EEPROM的扩展,可以扩展四个128kB的存储空间,可都用于SRAM或EEPROM,或者是两者合用。用于外部存储器接口的管脚如表1所示。

 

扩展外部存储区引脚
表1
扩展外部存储区引脚
每一个外部存储空间都可由三个寄存器XMCFG,XMxCON,XMxPAR控制,具体连接如图6所示。

 

 

外部存储区EEPROM/RAM接口
图6
外部存储区EEPROM/RAM接口

 

 

http://www.analog.com/zh/content/cast_faq_ADuC7XXX/fca.html#top

 

 


 

问题:ADUC702X系列单片机的四个外部中断都是高电平触发,怎么才能实现边沿触发呢?

答案:可以利用ADUC702X系列单片机内部集成的PLA实现边沿触发功能,可以配置为上升沿触发,下降沿触发或同时触发。但要注意,应该将相应的外部信号连接到任意一个PLA单元的输入引脚上,如果硬件上已经设计连接到了外部中断引脚上,则不能实现边沿触发功能了。图7所示的是实现边沿检测的典型PLA配置。

 

点击看大图
图7 边沿检测的PLA配置
设Input
信号通过elmt0值为B,Input信号通过elmt0,elmt5
两个D触发器锁存,值为C。B,C输入给elmt2,输出为D,经过elmt3锁存输出为E。则上升沿检测过程为:当Input为低时,C的初值为低;当Input为高时,在HCLK上升沿到来时,B为高,此时C仍为低,则D为高;当input在下一个HCLK周期内仍为高时,B,C均为高,则D为低,从而实现了上升沿检测,同时检测上升沿和下降沿的时序如图8所示。

 

 

边沿检测时序图
图8
边沿检测时序图
实现边沿检测的逻辑表达式及相应PLA单元的寄存器配置如下:
D = B?C 产生一个上升沿脉冲 PLAELM Code : 0x149.
D =
B?C 产生一个下降沿脉冲 PLAELM Code :
0x0145.
D = B?C + B?C 当B,C 值不同时,D为高,否则D为低。PLAELM Code :
0x014D.
要注意在使用该PLA功能时,要将第一个PLA单元的对应引脚在GPxCON寄存器中配置为PLAI应用,且在PLAIRQ中断服务程序里要记得重新配置最后一个PLA单元来复位输出,以便检测下一个输入信号边沿。
对于单边沿检测应用,要保证脉冲周期至少为1个HCLK,以便触发器锁定,脉冲间隔至少要4.5μs。对于双边沿检测应用,要保证两个边沿之间的间距至少4.5μs。

 

 


 

问题:当使用ULINK调试器的时候,程序可以正常的下载到ADuC7XXX系列单片机中,但在利用KEIL进行Debug时,为什么会显示存储器不匹配?

答案:这可能是由于当调试代码的时候,程序在SRAM中运行,当代码量小于芯片的SRAM时就不会出错,如果代码量较大,需要对KEIL进行如下配置:

Step

1: 单击Debug对话框下的红色标记的Settings

 

单击Debug对话框下的红色标记的Settings
Step
2: 要选中“Download to Flash”,然后点击OK退出。

 

 

Step 2

 

 


 

问题:对于ADUC702X系列单片机,当使用外部晶体或信号源的时候,需要如何配置才能利用它们产生系统时钟?

答案:ADUC702X系列单片机内部集成一个32.768kHz的振荡器,可用其和芯片内部的锁相环来产生系统时钟,但是该振荡器的误差为±3%,客户可能会考虑使用更高精度的外部晶体或信号源来产生系统时钟,且利用外部的信号源,可将系统时钟的最大值由41.78MHz提高到44MHz。

当使用外部晶体的时候,要在XCLKO和XCLKI管脚各连一个电容至地,电容的取值与晶体的要求有关,一般为12pF左右,且电容的摆放位置应尽可能靠近晶体。芯片默认的设置为利用内部的振荡器来产生时钟,要切换到外部晶体需要按如下步骤进行:

 


  1. 使能Timer2中断,并要将其溢出时间设置为大于120us;
  2. 根据写PLLCON寄存器的顺序要求,将MDCLK位设为01,并清OSEL位;
  3. 根据写POWCON寄存器的顺序要求,强制芯片进入NAP模式;
  4. 当芯片从NAP模式被Timer2中断唤醒后,时钟源就已经切换到外部时钟了。

典型的外接晶体方式,如下图所示。

 

典型的外接晶体方式
当要切换到P0.7引脚上的外部信号源时,要将P0.7引脚特性配置为Mode
1(ECLK/XCLK),其切换步骤及示例代码与切换到外部晶体的方式相同,典型外接信号源方式,如下图所示。

 

 

典型的外接晶体方式

 

 

http://www.analog.com/zh/content/cast_faq_ADuC7XXX/fca.html#top

 

 


 

问题:ADUC702X系列单片机内部温度传感器的作用是什么?

答案:ADUC702X系列产品内置温度传感器,它的主要功能是用来监测芯片本身工作时的温度,不能用来监测环境温度。在25°C时,传感器通常有一个典型值输出,客户可以先校准以保证精确度,传感器的输出与温度成反比,误差是±3°C

 


 

问题:MicroConverter分别有模拟地和数字地引脚,PCB中如何处理?

答案:为了获得最佳的ADC/DAC性能,在布局布线时需要注意,ADuC7XXX系列产品分模拟地(AGND)和数字地(DGND),

可以按照以下三个方面来考虑。

1.系统分单独的模拟部分和数字部分,如果这两个部分的接地点距离芯片很近,则需要将芯片的模拟地接到系统模拟地平面,数字地管脚接到系统数字地平面,且两个地平面在中间相连,如图a所示

 

图a
2.系统分单独模拟部分和数字部分,但是它们在某点共地。在这种情况下,将ADuC7XXX的模拟地和数字地管脚都接到模拟地,如图b所示。

 

 

图b
3.系统中只有一个地平面,必须先确定模拟部分与数字部分物理上是完全独立的,以避免数字信号干扰模拟信号,此时,芯片可放置在模拟部分与数字部分的中间,模拟地和数字地管脚直接接到地平面上。

 

 

图c

 

 


 

问题:使用I2C接口时需要注意什么?

答案:I2C的串行数据线(SDA)和串行时钟线(SCL)都是双向的,ADuC7XXX既可以作为主设备(software

master)也可以为从设备(hardware

slave),而且当作为主设备时可以控制多个从设备。以ADUC702X为例,具体连接如下,必须在SCL和SDA管脚加上拉电阻,典型值为10kOhm。

 

使用I2C接口时需要注意什么

 

 

http://www.analog.com/zh/content/cast_faq_ADuC7XXX/fca.html#top

 

 


 

问题:ADUC7128/ADUC7129的FLASH/EE存储器(0x80000 to
0x9F800)被分成了62K和64K的两块,它们分别占用哪块地址空间?

答案:Block

1所占的地址空间是从0x80000到0x90000的64K地址空间,Block 0所占的地址空间为0x90000到0x9F800的62K地址空间。

 


 

问题:在ADUC7XXX系列单片中定义的变量都是多少位的?

答案:下面的表格给出了对应变量的位数和有效范围。

 

点击看大图

 

 


 

问题:如何在ADUC702X系列单片机中实现中断服务程序?

答案:缺省的状态下,FIQ和IRQ中断已经在CPSR寄存器中使能了,IRQ是标准中断,FIQ是快速中断,它比IRQ中断的优先级高,即如果两个不同优先级的中断同时发生,会优先响应较高优先级的FIQ中断,且FIQ可以中断IRQ的服务程序。如果相同优先级的中断同时产生,哪一个先响应则由您编程决定。要使能某个中断,需要将FIQEN或IRQEN寄存器中相应位置1,比如要使能外部中断0和定时器中断1以及ADC中断,且要求ADC中断为高优先级,则可进行如下设置:

 

如何在ADUC702X系列单片机中实现中断服务程序
其中XIRQ0_BIT
、GP_TIMER_BIT、 ADC_BIT各中断位的定义可以在irq.h文件中找到,中断函数的入口可按如下方式书写:
void
FIQ_Handler() __fiq
void IRQ_Handler()
__irq
有关中断应用的具体例子可以参考\ADuC702x\code\keil code examples\Keil
Tools\INT\INT。

 

 


 

问题:各种各样的接口怎么与ADUC7XXX系列单片机通讯?

答案:首先必须确定此类输入信号是否与ADUC7XXX系列单片机的信号电平兼容,如果不兼容,则需要外接电路或用集成模块来完成电平转换,比如ADUC7XXX系列单片机在与PC机利用串口通讯时,就要外加串口芯片ADM3202、ADM3222、ADM202、ADM242等。电平匹配后就要选择通讯方式了,通信的基本方式分为并行通信和串行通信,两者各有优劣,并行通信速度快,缺点是占用端口较多,这在位数较多,传输距离又远时就不太适宜;而串行通信与前者相反,传输成本低,但是传送速度较低。最后,为了确保通信的成功,通信双方必须有一系列的约定,即通信协议,它对什么时候开始通信、什么时候结束通信、何时交换信息等问题都必须作出明确的规定。

 


 

问题:为什么利用ADUC702X内部的定时器时,有时候理论值与实际定时时间不符?

答案:ADUC702X内部定时器理论的定时间隔为Interval

= TxLD * Prescaler / Source

Clock,当将TxCON寄存器的bit5:4设置为00:Binary模式的时候,实际的定时时间会与理论值相符;而当将其设置为10或11的Hr:Min:Sec:Hundredths模式时,实际的定时时间是理论值的一半,这是因为在芯片内部做了特殊处理,此时,其低8位全1时只代表127。

 


 

问题:使用ADUC702X系列单片机内部ADC的时候应该注意什么?

答案:当ADC被配置为单转换模式(Single

Conversion Mode:ADCCON[2:0] =

011)的时候,ADC的使能开始转换位ADCCON[7]应该在一次转换开始后马上清零,这是因为ADC在一次单转换结束后,ADCCON[2:0]即复位为000,这意味着使能/CONVSTART管脚为ADC的转换控制,可能会引起ADC误触发,再次进行转换。对于其它转换控制模式,均不存在这样的问题。在ADC模块上电后(ADCCON

=

0x20),要等待至少5μs才能开始ADC转换,否则开始的几个采样值都可能是不准确的。如果要使用ADUC702X系列单片机内部集成的参考源,则要通过REFCON寄存器配置使能内部参考输出(REFCON

= 0x1),且要在相应的参考电压VREF引脚上加一个0.47μF的电容。

結果