yanniwang

ADuC702x系列单片机数据采集系统的应用要点

0
阅读(3797)

1.简介

ADuC702x系列微转换器(ADuC7019/7020/7021/7022/7024/7025/7026/7027)是全集成的1 MSPS,12位数据采集系统,它在单个芯片内包含了一个高性能多通道ADC,一个16位/32位微控制器(MCU)和一个闪速/电擦除存储器。

ADC包括12个单端输入。另外的4个输入是可被DAC的四个输出引脚多路复用的。这4个DAC输出只适用于某些特定的模式(ADuC7020和ADuC7026)。但是,在许多情况下DAC输出是不存在的,但这些引脚仍然可以被用来作为另外的ADC输入,提供最多16路的ADC输入。ADC可能以单端或差分输入模式操作。ADC输入电压是0到VREF。另外,芯片内部还集成了UART/I2C/SPI 串行接口。

2.模拟接口----ADC

硬件方面,注意信号电压不应大于2.5V,大于2.5V的电压采样值均为0x0FFF,如果大于3.3V,那后果就严重了哦~可能会导致ADC损坏,关于信号的滤波,通常可以采样两种方式

硬件滤波常用阻容滤波,这种方式不用多说,比较简单~

设计中也可以采样软件滤波的方式,简单的一个例子如下

软件滤波程序: 

#include "Filter.h"


int LowPassFilter(int Factor,int NowData,int PreData)
{
return ((100 -Factor)*PreData + Factor * NowData)/100;
}

float LowPassFilter2(float Factor,float NowData,float PreData)
{
return (1-Factor)*PreData + Factor * NowData;
}

3.数字接口---- UART/SPI/I2C

 ADuC7026共配置了三种串行接口:UART串行接口、SPI串行接口和I2C兼容串行接口。

3.1

UART串行接口是全双工的,即可以同时发送和接收数据。

UART波特率的设置,以9600bps为例;

采用标准波特率发生器设定UART波特率为9600bps的程序如下:

     COMCON0 = 0x080;              //置位DLAB,可实现对COMDIV0和COMDIV1的访问

     COMDIV0 = 0x088;               //设定DIV0 和DIV1计算DL

     COMDIV1 = 0x000;

     COMCON0 = 0x007;              // 清除DLAB

3.2

SPI是工业标准的同步串行接口,它允许8位数据同时同步发送和接收,系统可配置成主(master)或从(slave)操作。

 主模式下SPI速度与时钟分频器位对应表

时钟分频位

0

1

2

3

4

5

SPIDIV(16进制)

SPI频率(MHZ)

0x05

3.482

0x0B

1.741

0x17

0.870

0x2F

0.435

0x5F

0.218

0xBF

0.109

3.3

I2C总线是双向两线(SCL——串行时钟、SDA——串行数据线)制同步串行总线,具有竞争检测和仲裁机制,可使多个主机任意同时发送数据而不破坏总线上的数据信息。非常适合在器件之间进行近距离数据通信。 在系统里,I2C主机为传送产生串行时钟。主机通道可配置为快速模式(400kHz)和标准模式下(100kHz)。

 例:I2C0DIV = 0xCFCF;                     // 设置I2C0串行时钟频率,0xCFCF对应100kHz

 例:I2C0DIV = 0x3232;                     // 设置I2C0串行时钟频率,0x3232对应400kHz

注意I2C使用时SCL和SDA引脚一定要接上拉电阻,典型值为10K 欧姆