讲座9 第5讲 MSP430实现程控AD数据采集
MSP430_内部AD精讲

1
ADC12的目录
2
A D C简要综述( 1/1 )
• 在MSP430单片机家族中, 很多系列 的单片机中都有12通道12位的ADC (简称A D C 1 2 模块)。如M S P 4 3 0 F 1 3 X 、M S P 4 3 0 F 1 4 X 、 M S P 4 3 0 F 1 5 X 、M S P 4 3 0 F 1 6 X 、M S P 4 3 0 F 4 3 X 、 MSP430F44X 等系列。较其它带A/D 转换的单片机,MSP 430 的ADC 精 度高,设计灵活巧妙,给数据采集系 统的设计带来了全新的思路。
Байду номын сангаас
ADC12 的结构
6
ADC12 的功能模块( 1/ 11)
1. 参考电压发生器:
AD都需要一个基准信号,通常为电压基准。 ADC12内置参考电源,而且参考电压有6种可编程选 择,分别为VR+与VR-的组合。其中 VR+(有3种):A VCC (模拟电源正端) V REF+ (A/D转换器内部参考电源的输出正端) V eREF+ (外部参考电源的正输入端)
15
ADC12 的功能模块( 10/11 )
16
ADC12 的功能模块( 11/11 ) ADC12主要特点
1. 12位转换精度,1位非线性微分误差,1位非线性积分误差 2. 有多种时钟源提供给ADC12模块,而且模块本身内置时钟发 生器 3. 内置温度传感器 4. Timer_A/Timer_B硬件触发器 5. 配置有8路外部通道与4路内部通道 6. 内置参考电源,并且参考电压有6种组合 7. 模数转换有4种模式 8. 16字转换缓存 9. ADC12可关断内核支持超低功耗应用 10.采样速度快,最高可达200ksps 11.自动扫描 12. DMA使能
用超低功耗MSP430单片机设计数据采集系统

同 地 空 内 一 址 间 。
数 据 采 集 系统 硬 件
- -- i qI Q -
M P 01 仅 有 7 内 指 使 起 非 方 。 S 3 4 仅 2 核 令, 用 来 常 便 4F 9 条
如 下 为 初 始 化 及 触 发 I 端 I电 平 的 程 序 示 例 : / 射 到
地面
,
m v #500 I o. 000 R 5 W
,
: ly t 5 Dea o R1
完 成对油 井的监
dc R1 e. W 5
: ermet 5 D ce nR1
测 。 数 据 采 集 部 分 采 用 编码 蓄 电 池 供 电 ,并 要 求 在 井 下 工 作 半 年 到 一 年 的
一
ROM( E型 ) ls 、F ahMe r ( moy F型) 4种 型 号 ,采 用 冯 . 诺 帜 。 S 40 作 在 1 ~ . M P3工 . 3 V电 压 下 , 正 常 工 作 模式 EP 8 6 有
( AM) 4种 低 功 耗 工 作 模 式 ( M 、 L 和 LP l PM2、LP 3、 伊 曼 结 构 ,因 此 , A 、 O 和 全 部 的 外 围 模块 都 位 于 M R M R M
# c d mp3 1 . il e”s 0 4 h nu 4 x x”
.
本 设 计 所 需 要 的 数
挥 亚 佳 练 汕 盐 铜I I 县 .
O G FOh R OOO
: rg mS r P r at oa t
定 时 器 中 断 进 入
A 模式 M
设 备 的 井 下 部 分 ,其 安
器
Sp T mV tWD OW槲  ̄ ,
MSP430单片机3通道AD采集

void write_data(uchar Dispdata)//写数据函数
{
sendbyte(0xfa); //MCU向LCD发数据
sendbyte(Dispdata & 0xf0); //发高四位数据
sendbyte((Dispdata << 4) & 0xf0);//发低四位数据
#include "msp430g2553.h"
char a[5],m[5],n[5];
int da;
int j,i ;
#define uchar unsigned char
#define uint unsigned int
double result[4],AD_result[4];
{
write_data(*s); //发送字符对应的ASCII码,12864指针可设置自动指向下一个显示地址
s++;
delay(50);
}
}
void LCD_12864_address_set(uchar x,uchar y)
uint i,j;
for(i=0; i<t; i++)
for(j=0; j<10; j++);
}
void sendbyte(uchar zdata) //数据传送函数
{
uchar code_seg7;
uchar serial_clk;
{
P2OUT&=~BIT4; //SID为0
}
P2OUT&=~BIT5; //产生时钟信号下沿
P2OUT|=BIT5; //产生时钟信号上沿
用MSp430进行微功耗数据采集

用MSp430进行微功耗数据采集0 引言 以电池作为电源的水下数据采集系统,若要长时间工作必然要为其配备大量的电池作为电源,如果能降低系统的功耗,那么将减少电池的数量,不仅能降低系统的成本而且能大大缩小系统的体积和重量,也更有利于水下数据采集系统的布放。
本文介绍了一种基于微功耗单片机MSP430F1611和CF卡的水下微功耗数据采集系统的设计与实现,总功率仅150mW。
相比传统的以DSP为处理器、IDE硬盘为存储介质的数据采集系统,功耗大大降低。
1 系统总体构成 本系统是应用在矢量水听器噪声测量试验中,要求实时采集并存储矢量水听器4通道信号,每通道采样率为10kHz,在水下不间断工作7小时。
鉴于本系统采样率不高,7个小时总的数据量不超过2个G,所以没必要采用功耗和体积都比较大的IDE硬盘,采用容量为2G的CF卡完全可以满足系统要求。
CF卡的全称为Compact Flash,兼容3.3V和5V工作电压,工作时没有运动部件,其体积小、耗电量小、容量大,具有很高的性价比。
目前,CF 卡的容量可高达12GB,CF卡由控制芯片和闪存模块组成,闪存用于存储信息,控制芯片用于实现与主机的连接及数据的传输。
CF卡可工作在TRUEIDE模式下,并且与普通IDE硬盘接口完全兼容,所以很容易进行开发使用。
系统对采集的数据只存储而不做信号处理,在处理器的选取上也就不必一味追求高速度,本系统采用TI公司的超低功耗单片机MSP430F1611作为系统的处理器,负责AD的采集,并把采集的数据写入CF卡。
这是一款高性价比的单片机,具有以下特点:丰富的片内外设;超低功耗,在电压3.3V主频1MHz时工作电流仅600μA;强大的处理能力,在8MHz晶体驱动下,指。
基于MSP430单片机和TCP-IP协议的多参数采集系统

基于MSP430单片机和TCP-IP协议的多参数采集系统基于MSP430单片机和TCP/IP协议的多参数采集系统随着科技的不断发展,人们对数据采集和监测的需求越来越高。
而对于需要同时采集多个参数的系统来说,传统的采集方式往往无法满足需求,因此需要一种更为高效和可靠的多参数采集系统。
本文将介绍一种基于MSP430单片机和TCP/IP协议的多参数采集系统。
该系统的核心是MSP430单片机,它是一种低功耗、高性能的单片机芯片。
通过使用MSP430单片机,可以有效地实现多参数的采集和处理。
MSP430单片机具有多个输入/输出引脚,可以连接各种传感器,如温度传感器、湿度传感器、压力传感器等,从而实现对多个参数的实时采集。
为了实现数据的传输和远程监测,该系统采用TCP/IP协议。
TCP/IP协议是互联网传输控制协议/互联网协议的简称,是一种常用的网络通信协议。
通过使用TCP/IP协议,该系统可以将采集到的数据传输到远程服务器,并实现对数据的实时监测和分析。
具体实现过程如下:首先,通过MSP430单片机连接各个传感器,采集到的数据经过处理后,通过网络接口模块将数据发送到远程服务器。
远程服务器接收到数据后,可以进行实时监测和分析,并将结果反馈给用户。
用户可以通过手机App或电脑端浏览器等方式查看监测结果,并进行相应的操作。
该系统具有多个优点。
首先,采用MSP430单片机作为核心,功耗低,性能高,适用于长时间连续运行的监测需求。
其次,采用TCP/IP协议进行数据传输,具有较高的稳定性和可靠性,保证了数据的准确性和实时性。
此外,该系统还具有较高的灵活性,可以根据实际需求连接不同的传感器,并进行相应的参数配置。
综上所述,基于MSP430单片机和TCP/IP协议的多参数采集系统,通过高效的数据采集和传输方式,实现了对多个参数的实时监测和远程控制。
该系统在环境监测、工业自动化等领域具有广阔的应用前景,为人们的生活和工作带来了便利和效益。
第五讲 MSP430单片机工作模式

• 应该只在需要时打开外设。
• 使用低功耗集成外设模块来取代软件启动的功能。例如Timer_A 和Timer_B 可自动生成PWM 并且捕捉外部时序,而无需CPU 资源。 • 计算出的转移和快速表查询应该用来取代标志轮询和长软件计算。 • 由于开销,应避免频繁的子例程和函数调用。 • 对于较长的软件例程,应使用单周期CPU 寄存器。
上图描述了状态寄存器位。 下面我们给予细致的解释。
位
V
说明
溢出位当一个算术运算的结果溢出带符号变量范围时,这个位被置位。 ADD(.B)MADDC(.B) 在以下情况时置位: 正+正=负 负+负=负 否则复位 SUB(.B)MSUBC(.B)MCMP(.B) 在以下情况时置位: 正-负=负 负-正=正 否则复位
CPU 关闭。当置位时,关闭CPU。
红色标出的四个位和CPห้องสมุดไป่ตู้工作模式相关。
GIE
通用中断使能。当置位时,启用可屏蔽中断。当置位时,所有可屏蔽 中断被禁用。
N
负标志位。当一个字节或者字运算的结果为负时置位,当结果不为负 时清除。 字运算:N 被设定为结果的位15 的值。 字节运算:N 被设定为结果的位7 的值。 零标志位。当一个字节或字运算的结果为0 时置位,当结果不为0 时 清除。
设置中断返回后的状态寄存器
__intrinsic unsigned short _BIC_SR_IRQ(unsigned short); 清零中断返回后的状态寄存器
在头文件msp430g2553.h中: #define CPUOFF (0x0010u) #define OSCOFF (0x0020u) #define SCG0 (0x0040u) #define SCG1 (0x0080u) #define LPM0_bits #define LPM1_bits #define LPM2_bits #define LPM3_bits #define LPM4_bits (CPUOFF) (SCG0+CPUOFF) (SCG1+CPUOFF) (SCG1+SCG0+CPUOFF) (SCG1+SCG0+OSCOFF+CPUOFF)
单片机原理及应用_第九讲_MSP430单片机液晶控制器和ADC

单片机原理及应用第九讲 MSP430单片机液晶控制器和ADC报告人:实验内容实验一:段码LCD循环显示0到6实验二:DAC输出正弦波实验三:基础:使DAC0输出正弦波频率为300Hz,在LCD上显示频率。
提高:用按键控制DAC0输出正弦波频率为在100Hz—1000Hz循环输出,步进值为100Hz,并在LCD上显示频率。
实验步骤步骤:(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码;(3) 选择对该工程进行编译链接,生成.out 文件。
然后选择,将程序下载到实验板中。
程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。
也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。
关键代码:实验一:int main(){int i,j;WDTCTL = WDTPW + WDTHOLD;// Stop WDTInit_TS3A5017DR(); // Configure TS3A5017DR IN1 and IN2 Init_lcd(); // LCD初始化Backlight_Enable(); // 打开背光LcdGo(1); // 打开液晶模块LCD_Clear(); // 清屏while(1){for (i=0; i<6; i++) // Display "0123456"{for(j=0;j<6;j++){LCDMEM[j] = char_gen[i];}delay_ms(1000);}}}实验二:#include<msp430f6638.h>#include<math.h>#define PI 3.1415926int sin_table[360];int *sin_data_pr;double i=0;int j;void main(void){WDTCTL = WDT_MDLY_0_064; // WDT ~61us interval timer SFRIE1 = WDTIE; // Enable WDT interruptfor(j=0;j<360;j++){i+=PI/180;sin_table[j]=(int)((sin(i)+1)*2048);}sin_data_pr=&sin_table[0];DAC12_0CTL0 = DAC12IR + DAC12SREF_0 + DAC12AMP_5 + DAC12ENC +DAC12CALON+DAC12OPS;P5DIR=BIT1;//打开扬声器的运放P5OUT&=~BIT1;for (;;){__bis_SR_register(CPUOFF + GIE); // Enter LPM0DAC12_0DAT=*sin_data_pr++;if (sin_data_pr >= &sin_table[360]){sin_data_pr = &sin_table[0];}// Positive rampDAC12_0DAT &= 0xFFF; // Modulo 4096}}#pragma vector=WDT_VECTOR__interrupt void watchdog_timer (void){__bic_SR_register_on_exit(CPUOFF); // Clear LPM0 bits from 0(SR) }实验三:基础:int main(void) {WDTCTL = WDT_MDLY_0_064; // WDT ~61us interval timerInit_TS3A5017DR(); // Configure TS3A5017DR IN1 and IN2Init_lcd(); // LCD初始化Backlight_Enable(); // 打开背光LcdGo(1); // 打开液晶模块LCD_Clear(); // 清屏LCDMEM[0] = char_gen[3];LCDMEM[1] = char_gen[0];LCDMEM[2] = char_gen[0];SFRIE1 = WDTIE; // Enable WDT interruptfor(j=0;j<52;j++){i+=PI/26;sin_table[j]=(int)((sin(i)+1)*2048);}sin_data_pr=&sin_table[0];DAC12_0CTL0 = DAC12IR + DAC12SREF_0 + DAC12AMP_5 + DAC12ENC + DAC12CALON+DAC12OPS;P5DIR=BIT1;//打开扬声器的运放P5OUT&=~BIT1;for (;;){__bis_SR_register(CPUOFF + GIE); // Enter LPM0DAC12_0DAT=*sin_data_pr++;if (sin_data_pr >= &sin_table[52]){sin_data_pr = &sin_table[0];}// Positive rampDAC12_0DAT &= 0xFFF; // Modulo 4096}}#pragma vector=WDT_VECTOR__interrupt void watchdog_timer (void){__bic_SR_register_on_exit(CPUOFF); // Clear LPM0 bits from 0(SR)}提高:#define circnt100 1388#define circnt200 694#define circnt300 462#define circnt400 348#define circnt500 278#define circnt600 232#define circnt700 198#define circnt800 174#define circnt900 154#define circnt1000 138int sin_table[180];int *sin_data_pr;double i=0;int j;const int cnt_table[] ={circnt100,circnt200,circnt300,circnt400,circnt500,circnt600,circnt700,circ nt800,circnt900,circnt1000};int cnt_flg = 0;void SetVcoreUp (unsigned int);void main(void){WDTCTL = WDTPW + WDTHOLD; // close watchdog//---------p2.6--------------P2REN |= BIT6; // Enable P2.6 internal resistanceP2OUT |= BIT6; // Set P2.6 as pull‐Up resistanceP2IES |= BIT6; // P2.6 Hi/Lo edgeP2IFG &= ~BIT6; // P2.6 IFG clearedP2IE |= BIT6; // P P2.6 interrupt enabled/*P2REN |= BIT7; // Enable P2.6 internal resistanceP2OUT |= BIT7; // Set P2.6 as pull‐Up resistanceP2IES |= BIT7; // P2.6 Hi/Lo edgeP2IFG &= ~BIT7; // P2.6 IFG clearedP2IE |= BIT7; // P P2.6 interrupt enabled*///---------enable LCD------------Init_TS3A5017DR(); // Configure TS3A5017DR IN1 and IN2Init_lcd(); // LCD初始化Backlight_Enable(); // 打开背光LcdGo(1); // 打开液晶模块LCD_Clear(); // 清屏LCDMEM[5] = char_gen[0];LCDMEM[4] = char_gen[0];LCDMEM[3] = char_gen[1];//----------config sine list------------for(j=0;j<180;j++){i+=PI/90;sin_table[j]=(int)((sin(i)+1)*2000);}sin_data_pr=&sin_table[0];DAC12_0CTL0 = DAC12IR + DAC12SREF_0 + DAC12AMP_5 + DAC12ENC +DAC12CALON+DAC12OPS;//---------- enable SMCLK as 8MHz--------------P4DIR |= BIT1; // P4.1 outputP1DIR |= BIT0; // ACLK set out to pinsP1SEL |= BIT0;P3DIR |= BIT4; // SMCLK set out to pinsP3SEL |= BIT4;// Increase Vcore setting to level3 to support fsystem=25MHz// NOTE: Change core voltage one level at a time..SetVcoreUp (0x01);SetVcoreUp (0x02);SetVcoreUp (0x03);UCSCTL3 = SELREF_2; // Set DCO FLL reference = REFOUCSCTL4 |= SELA_2; // Set ACLK = REFO__bis_SR_register(SCG0); // Disable the FLL control loopUCSCTL0 = 0x0000; // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7; // Select DCO range 50MHz operationUCSCTL2 = FLLD_1 + 762; // Set DCO Multiplier for 25MHz// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2__bic_SR_register(SCG0); // Enable the FLL control loop// Worst‐case settling time for the DCO when the DCO ran ge bits have been // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in5xx// UG for optimization.// 32 x 32 x 25 MHz / 32,768 Hz ~ 780k MCLK cycles for DCO to settle __delay_cycles(782000);// Loop until XT1,XT2 & DCO stabilizes ‐ In this case only DCO has to stabilize do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flagsSFRIFG1 &= ~OFIFG; // Clear fault flags}while (SFRIFG1&OFIFG); // Test oscillator fault flag//-----------enable timerA CCR0 us SMCLK--------------TA0CCTL0 = CCIE; // CCR0 interrupt enabledTA0CCR0 = cnt_table[0];TA0CTL = TASSEL_2 + MC_1 + TACLR; //use SMCLk as setting 25MHzfor (;;){__bis_SR_register(CPUOFF + GIE); // Enter LPM0DAC12_0DAT=*sin_data_pr++;if (sin_data_pr >= &sin_table[180]){sin_data_pr = &sin_table[0];}// Positive rampDAC12_0DAT &= 0xFFF; // Modulo 4096}}void SetVcoreUp (unsigned int level){PMMCTL0_H = PMMPW_H; // Open PMM registers for write// Set SVS/SVM high side new levelSVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new levelSVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;while ((PMMIFG & SVSMLDLYIFG) == 0); // Wait till SVM is settledPMMIFG &= ~(SVMLVLRIFG + SVMLIFG); // Clear already set flagsPMMCTL0_L = PMMCOREV0 * level; // Set VCore to new levelif ((PMMIFG & SVMLIFG))while ((PMMIFG & SVMLVLRIFG) == 0); // Wait till new level reached// Set SVS/SVM low side to new levelSVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write accessPMMCTL0_H = 0x00;}//--------timerA interruption---------#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){__bic_SR_register_on_exit(CPUOFF);}//-------bottom interruption----------#pragma vector=PORT2_VECTOR__interrupt void Port_2(void){__bic_SR_register_on_exit(CPUOFF);cnt_flg++;if (cnt_flg >= 10) cnt_flg = 0;LCD_Clear(); // 清屏LCDMEM[5] = char_gen[0];LCDMEM[4] = char_gen[0];if (cnt_flg == 9){LCDMEM[3] = char_gen[0];LCDMEM[2] = char_gen[1];}else LCDMEM[3] = char_gen[cnt_flg + 1];TA0CCR0 = cnt_table[cnt_flg];P2IFG &= ~BIT6;__bis_SR_register(CPUOFF + GIE);}实验现象分析:实验一:LCD显示屏上循环显示0到6,每次显示都为6个相同的数字,现象对应的代码为:实验二:实验板上扬声器放出周期为64us*360=0.023s的正弦波信号。
基于MSP430单片机实现的数据采集系统设计

摘要本论文主要阐述了一种以MSP430F149单片机为核心的多路数据采集系统。
该系统采用了模块化的设计思想,系统硬件电路的设计包括主控电路设计、电源部分设计、模拟量采集电路部分设计、复位电路部分设计、串口通信电路部分设计五部分。
电源电路为整个提供3.3V电源电压,复位电路采用MAX809芯片实现对单片机的复位,具有很高的可靠性;模拟量数据采集通过片内的A/D转换通道与外部的采集传感器进行连接;单片机电路主要是完成与其它电路的接口,采集系统采集得到数据后,通过UART串口将数据送到上位机上去,可以将数据交给上位机进行处理,从而降低采集系统的负担,并且也可以避免采集系统的海量存储器;软件开发部分采用C语言编程,软件开发以IAR Systems公司Embedded Workbench for MSP430为集成开发环境,达到了采集到的数据能在PC机上显示、存储、绘制曲线、同时PC机能给单片机发送控制命令等功能。
该系统充分体现了智能化、低功耗、高精度的发展趋势。
关键词: MSP430;串口通信;传感器;A/D转换AbstractThis paper describes the MSP430F149 microcontroller as the core of a multi-channel data acquisition system. The system uses a modular design, system hardware design, including the master circuit design, power supply design, part of the design of analog acquisition circuit, reset circuit part of the design, serial communication circuit part of the design of five parts. To provide 3.3V power supply circuit for the entire supply voltage reset circuit using MAX809 reset the microcontroller chip with high reliability; analog data acquisition through the on-chip A / D conversion channels and the acquisition of external sensors connected; SCM circuit is mainly done with the other circuits of the interface data acquisition system are collected through the UART serial data up to the host computer, the data can be processed to the host computer, thereby reducing the burden of collection system, and also to avoid capture system of mass storage; software development part of the use of C language programming, software development to IAR Systems Corporation Embedded Workbench for MSP430 is an integrated development environment, to the collected data in PC, display, storage, drawing curves, and PC functions to the microcontroller send control commands and other functions. The system fully embodies the intelligent, low-power, high-precision trends.Key words: MSP430; serial communication; sensor; A / D conversion目录1绪论 (1)1.1研究背景 (1)1.2 论文主要内容和结构 (1)2基于MSP430单片机采集系统的设计方案 (2)2.1 基于MSP430单片机采集系统需求分析 (2)2.2系统整体方案设计 (2)3系统硬件设计与实现(单元电路设计) (3)3.1主控电路的设计 (4)3.1.1 MSP430单片机的选择 (4)3.1.2 MSP430单片机的端口选择 (5)3.1.3 单片机电路设计 (5)3.2电源部分设计 (6)3.3复位电路部分设计 (7)3.4传感器模拟量采集电路部分设计 (8)3.5 串口通信电路部分设计 (10)3.5.1SP3220芯片选择 (11)3.5.2串口通信的电路图 (12)4基于MSP430单片机采集系统软件开发 (13)4.1软件开发环境 (13)4.1.1 IAR Embedded Workbench介绍 (13)4.1.2 IAR Embedded Workbench 开发步骤 (13)4.2软件开发设计 (19)4.3关键软件程序 (21)4.3.1初始化设置 (21)4.3.2中断服务程序 (23)4.3.3 主处理程序 (24)结束语 (31)参考文献 (30)1绪论1.1研究背景数据采集是从一个或多个信号获取对象信息的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子世界2004年9期28・・单片机与可编程器件
在MSP430单片机家族中, 很多系列的单片机中都有12通道12位的ADC(简称ADC12模块)。
如MSP430F13X、MSP430F14X、MSP430F15X、MSP430F16X、MSP430F43X、MSP430F44X等系列。
较其它带A/D转换的单片机,MSP430的ADC精度高,设计灵活巧妙,给数据采集系统的设计带来了全新的思路。
1.ADC12模数转换模块ADC12具有12位高达200kps采样速度的ADC,并带有采样保持电路;配置8路外部通道与4路内部通道;内部参考电压发生器,有2.5V和1.5V两种基准电压;可外接参考基准电压源;采样与转换过程中所需要的时钟信号源可以选择;采样及转换所需要的时序控制电路;转化结果有专门的桶型缓存;内置温度传感器和电源检测电路;4种模式的A/D转换可灵活地运用,以节省软件量及时间。
2.MSP430实现程控数据采集硬件构成用MSP430实现程控数据采集的原
理就是如附图所示配置ADC12的基准电压输入端(VR+,VR-)。
利用不同的基
准对不同输入范围的模拟电压量进行A/D程控测量,达到提升测量精度、提高测
量稳定性的目的。
图中三个精密电阻对MSP430自身
提供的精密电压基准输出进行分压,重
新产生了两个电压基准(VEREF+、
VEREF-)。
基准电压输出端(VREF+)可
以通过设置ADC12模块的相关寄存器使
其输出为2.5或1.5V。
并且通过对ADC12
模块相关控制字的设置,可以在AVCC、
VREF+、VEREF+三者间选择VR+电压
值,同样VR-的电压值可以在VEREF-
和AGND两者间选择。
如果AVCC=3.0V,
则VR+∈(3V,2.5V, 1.5V, 0.9V),VR-
∈(1V,0.6V)。
这样ADC12的基准电压
就可以为3、2.5、2.4、2、1.9、1.5、0.9、
0.5及0.3V。
利用不同的A/D转换电压基
准就可实现更精确更稳定的测量。
笔者在实际使用中发现,MSP430的
ADC12在(电压基准(VR)- 测量值)
<0.6V时,测量精度高达0.5‰,测量稳
定在一个字的变化。
0.3V的电压基准在
测量大于10mV的电压时精度可达1‰,
测量稳定在两个字的变化。
采用附图所示的电路,只需要三个电阻就可实现提高测量精度和稳定性的
MSP430单片机实用技术讲座(9)
第5讲 MSP430实现程控
A/D数据采集
・南京航空航天大学
戴 祥 魏小龙 施亿平・。