新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 应用模拟微控制器简化数据采集系统设计

应用模拟微控制器简化数据采集系统设计

作者:时间:2008-01-08来源:网络收藏

  Simplify Data Capture System Design with Analog Microcontroller

  ADI公司

  在中加入高精度的模拟外设,这样的模拟更能适应市场的需求。外设包括高达24位的,以及12位的数字模拟转换器等接口。例如,ADI公司的ADuC800系列产品都集成了∑Δ型模数转换器,根据配置的存储器和外设的配置不同又分成14种型号。如图1。

  图1 ADuC800系列产品的结构(略)

  这些产品的适用领域包括智能传感器、过程控制与PLC等工业领域,以及气体分析与监测、热成像、金属探测仪器等在内的精密仪器领域。它们可以直接连接传感器进行高精度测量,同时需要更少的模拟元件。

  以ARM7代替8051内核的ADuC702x系列产品分成8款,它们之间代码互相兼容。它们都是基于12位的模数转换器,最高采样速率为1MHz,提供卓越的直流和交流性能指标以及出色的低噪声性能。内置了20ppm精度的基准电压,并提供了一个温度传感器,使控制器可以根据自身温度进行补偿。该采用逐次逼近技术,内部的电压源和决定了其精度。如图2。但是由于输入引脚没有保持电路,需要有较大的驱动电流为电容充电,为了避免误差,可能需要外部缓冲器。转换器的启动方法有多种,推荐使用外部启动转换引脚触发,此时延迟最小,其次是定时器触发,精度最低的软件触发或可编程逻辑阵列触发,可能会受到中断响应的影响。

  图2 逐次逼近型原理(略)

  内置的多通道复用器可以提供多通道以及更多的灵活性。首先可以配置成单端输入模式,此时以地为参考端。输入范围为地到Vref,需要使用抗混叠滤波器。伪差分输入模式下,一个引脚为其它引脚提供参考,伪差分输入可用于对噪声环境要求不是太高的情况,它可抑制共模

  对于要求最精确测量的应用,可使用完全差分模式,特别是信号是以共模电压为中心的小信号,这种模式最有效。如图3。另外,器件的偏置和增益系数可调,以使外部的误差趋于零。

  图3 完全差分输入模式(略)

  12位的电压输出转换器采用电阻串结构,内置满摆幅输出缓冲器,以达到功能强大和精确的目的。如图4。电阻串由两个独立的分压电阻串组成,可以设置分压输出与后续输出电压,这两个电阻串分别输出最高有效位MSB和最低有效位LSB,所 以称为 分段。如果负载在5k?以上,或者信号无需进一步放大,无需滤波或者输出保持单极性的情况下可以不需要附加的输出缓冲器。最差情况下,有效位数可达到11.4位,在负载5k?以上,同时选用低于电源电压100mV以上的基准电压时,可以达到11.7位,进一步优化可以接近11.9位。

  图4 电压输出的12位DAC结构(略)

  使用或DAC时可以采用下列的技巧,首先ADC的输入信号应该在1k?以下,否则需要缓冲器。其次端的电压可以有一定的余量,甚至可以低于地0.3V,但需小心使用。最后采用外部高精度(高于内置)基准电源可以获得更优的性能。如图5。

  图5 ADC及DAC基准电压配置方法(略)

  ARM7采用32位的精简指令集架构,指令和数据复用32位总线,集成JTAG测试端口,主频高达44MHz,单周期32位指令,性能高达45MIPS。工作在32位ARM模式下非常适合的SRAM操作,16位THUMB模式下更适合片上FLASH操作,此时具有更大的代码密度,但是限制对寄存器的访问。控制器自身是三级流水线结构,如果当前指令没有完成,可以设置后面的指令执行,即冯诺伊曼修正的哈弗架构模式,指令和数据籍由同一总线送达,寄存器地址采用线性预设,有助于编程的方便性。应当注意,与SRAM相比,FLASH具有更快的擦写时间,以及更多的擦写次数和数据保存时间。

  图6 PLA组成的状态机(略)

  ADuC7000系列产品时钟可以采用内置PLL产生和32.768kHz实时时钟获得,也可通过外置晶振产生,此时时钟范围是50kHz~44MHz。存储器的数据宽度决定了最终的MIPS性能,采用预设线性地址的寄存器后,寻址变得很容易。部分产品提供与外设存储器的接口。

  数字外设

  PLA由2~8个逻辑单元阵列组成,其中每个单元的输入可以是任意一个GPIO引脚、时钟、计数器溢出或任意的寄存器位。输出可以作为另外一个PLA的输入或寄存器位。逻辑单元的配置可以通过软件进行。

  图7 PLA的使用实例(略)

  ADuC7000产品提供了常见的数字端口,包括GPIO、I2C兼容接口以及改进的UART接口,它具有小数分频器以及网络,此外还提供了SPI接口。

  微 控制器具有四个以上的定时器,一个是倒计数的16位实时计数器,一个可以捕获中断的32位计数器,既可以递增计数也可以递减计数,一个32位的唤醒计时器,以及一个16位的看门狗计时器。

  控制器中还集成了其它一些外设,比如电源监视器,具有两个可编程电平,在电源电压降落到这两个电平以下时触发中断。另外有上电复位以及集成了3相PWM功能。

  ADI为AduC系列控制器提供的开发工具包括Quickstart及Quickstart扩展型两种,前者可以通过串口利 用汇编语言进行调试,而扩展型则可以通过C语言和汇编语言进行非侵入式调试。另外还提供一种扩展性差的Mini型开发套件。所有的软件都是采用Keil uVision进行编写与项目管理。其中包括了IAR测试版。

  图8显示了AduC7128/9用于驱动直流电机的设计。

  控制汽车电池的充电是一件非常重要而且困难的工作,利用模拟控制器的外设可以简化这些工作,随着混合动力车的发展,对汽车电力的监控和控制变得非常必要,这种应用的环境恶劣,需要新的高转换器。AduC703x非常适合这种应用的需求,它具有3个ADC,可以进行电压、电流和温度检测,采用20MHz的ARM7 TDMI内核,而且可以直接工作在12V的电源下,还提供了汽车电气中常见的LIN2.0接口。

  图8 采用AduC控制器简化直流电机驱动电路设计(略)

  ADE71xx/75xx则更适合进行电能的监测。它提供了2个ADC,4MHz的8025内核,另外有一个温度补偿的ADC,内置了50ppm/℃的参考电压。并且提供108段的LCD驱动。

  问答选编

  问:在强干扰的情况下, ADI的单片机还能工作正常吗?

  答:这与系统设计有很大关系。ADI的单片机在电机控制等的恶劣环境都有成功的应用。但是,还是需要在这种环 境下加入标准的抗干扰措施。

  问:ADuC845内部温度传感器可以精确到多少度?如何用它做AD转换温度补偿?

  答:ADuC845的精度是+/-2度。你需要测量ADC转换误差随温度的关系,然后通过当时温度传感器测得的温度来 校正。

  问:ADuC800系列中16位或24位sigma-delta ADC与12 位逐次逼近型ADC最大的区别是什么?各自的应用?

  答:sigma-delta ADC的精度、更高,但是它的速度很低 。它的典型应用如温度、压力等低频信号的测量。但 是SAR ADC的速度会较高。

  问:传感器小信号时存在噪音,这一问题采用ADuC7000系列时如何解决?

  答:一方面,可以使用差分的方式进行处理,如差分放大。差分接到ADuC产品的差分ADC通道上;另一方面,你可以使用模拟滤波和数字域的滤波进行对噪声的滤除。

  问:如果用C语言开发,代码量是不是有限制?

  答:不同型号的产品其Flash大小会不同,大部分ADuC系列产品都是62KB Flash。但是如果您使用免费版本的开发软件,它会有可编译的代码量的限制,要突破此限制, 需要购买相关的完整版开发软件。

  问:ADuC7000系列在KEIL软件下能仿真吗?有没有带USB 接口的芯片?

  答:KEIL全面支持ADuC7000系列。基于系统设计成本的考虑,ADuC7000现在还没有带USB接口的。ADuC内部带有性能非常优越的A DC和DAC,这是相对于其他芯片的优势。

  问:为什么ADuC845AD转换在很长时间后特别是在断电开机后,数据才能达到稳定?

  答:ADuC845中的ADC是Sigma-Delta型的,所以一般需要大约3~4个采样周期达到稳定。

  问:模拟微控制器从哪些方面简化了数据采集系统设计?

  答:由 于直接在芯片上集成了多路ADC和DAC,用户无论是系统成本还是设计复杂度上都得到了有效的降低。而IDE环境中也提供了相应的ADC或DAC的配置功能(甚 至仿真功能),可以让用户很直观地进行开发。

  问:如果我需要通过UART或者I2C烧写程序,可以通过ADI提供的ARMWSD和i2cwsd界面烧写吗?和在线烧写有何区别?在线烧写需要编写bootloader程序吗?

  答:ADuC702x系列拥有2个不同的启动加载选项:1)I2C,主要用于光学元件市场;2)UART,通用。这些启动加载程 序 被整合到ADuC702x内核中。ARMWSD面向 UART 版ADuC702x,而I 2 CWSD面向I 2 C版ADuC702xI。

  问:最新的aduc7128和以前的aduc7026的arm内核有什 么不同,增加了什么新技术或新的模块?

  答:ADuC702x和ADuC712x均具有业内标准ARM7TDMI内 核。然而,存储器处于不同的位置,因此需要不同的连接 程 序脚本和启动文件。几个外设也不同,而且这些外设 的寄存器定义也会有所不同。

  问:对线性采集可以用增益校正和偏移校正来完成,那么对 DAC的电压设置中出现的误差如何校正?

  答:ADuC8xx和ADuC702x没有DAC偏移寄存器。偏移问 题的2种可能的解决方案如下:

  1)有效补偿

  ① 在外部,将DAC输出连接到ADC输入通道上。还可 以使用内部连接ADC通道9或10。

  ② 将数值写入DAC。

  ③ 在DAC输出上进行ADC转换,并与期望值比较。

  ④ 按照要求调高或降低DAC输出。

  2)DAC“校准”

  利用ADC和DAC定期执行下列操作:

  ① 从DAC输出满标度,并利用ADC进行转换。

  ② 从DAC输出零标度,并利用ADC进行转换。

  ③ 计算斜率,并与理想值比较。



评论


相关推荐

技术专区

关闭