高精度数模转换器AD420及其与MSP430的接口技术
MSP430单片机之ADC
一张图看懂MSP430单片机之ADC原创一,基础知识ADC即Analog to Digital Converter模数转换,把模拟信号进行量化,转换为数字量。
对于软件工程师来说,ADC内部的转换原理可以忽略,只需要了解其对外呈现的接口。
AD输入与输出之间的关系为:MSP430的ADC12内核模块是12位的,其最大输出为2^12 – 1 = 4095。
以VR-为参考点,当VIN小于或者等于VR-时得到的AD码值为0,当VIN大于或者等于VR+时,得到的AD码值为4095,当VIN处于VR-和VR+之间时,按线性比例转换。
这样,从MCU中读出AD码值,即可根据公式倒推回去计算出输入的模拟量电压。
二,ADC总体框图再补一张中文版的:三,分块解释1,ADC内核先来看看ADC最核心的部分。
当然少不了电压参考源VR+和VR-,以及模拟量输入部分。
模拟量输入部分是和“采样保持”电路连在一起的,这一部分后面再细说。
除此之外,与ADC内核相关的,还有以下几个信号:1,ADC12CLK。
在MCU中,任何模块都少不了时钟,ADC模块也不例外,必须有时钟信号它才能工作。
它有4个时钟源可以选择,并且可以1~8分频。
2,ADC12ON,这个是ADC内核的总开关,只有当ADC12ON这一位为1时,ADC内核模块才工作。
如果想要关闭ADC内核以降低功耗,可以将ADC12ON置为0.3,SAMPCON,采样控制信号。
该信号接至Convert,当SAMPCON为低电平时,ADC内核进行AD转换。
4,BUSY,用于指示内核模块是否正处于AD转换过程中。
2,采样保持。
MSP430模数转换ADC
SREF2 SREF1 SREF0 0 0 1
#SREF_1
17
举例 :ADC12 通道 0 使用内部 1.5V 参考电压源
BIS #REFON , &ADC12CTL0 ; turn on 2.5V ref ; Vr+=Vref+ BIS.B #SREF_1 , &ADC12MCTL0
SREF2 SREF1 SREF0 0 0 1
#SREF_1
18
举例:VR+ 使用外部正参考电压源 VeREF+ or BIS.B #SREF_2 , &ADC12MCTL0 BIS.B #SREF_3 , &ADC12MCTL0
SREF2 SREF1 SREF0 0 1 x
#SREF_2 or #SREF_3
19
ADC12工作时钟(ADC12CLK)编程设置
ADC12模块是一个转换速度高达 200ksps、采样时间可编程 的12-bit逐次逼近型模数转换器。由12-bit的SAR核、采样保 持电路、模拟开关、参考电压产生与选择电路、 ADC 时钟 选择电路、采样与转换控制电路、16个转换结果存储缓冲器 及其对应的16个存储控制寄存器、中断系统、片上集成温度 传感器等组成。 ADC12可以在没有CPU的参与下,独立实 现多达 16 次的采样、转换和存储操作。 ADC12 模块可以独 立断电,以便于低功耗设计。 MSP430X13X,MSP430X14X,MSP43015X 和 MSP430X16X 等 芯片中均有ADC12模块。
采样保持输入信号的宽度
0~1×ADC12CLK
tsample = 采样定时器输出信号的宽度 4×ADC12CLK≤tsample ≤1024×ADC12CLK
【MSP430趣谈】MSP430第十二讲之ADC(上)
【MSP430趣谈】MSP430第十二讲之ADC(上)首先我们需要明白一个问题是什么是ADC,中文翻译过来就是模数转换器,从他的英文名的话我们会更加好记,Analog-to-Digital Converter。
简而言之就是将模拟量转换为数字量。
在我们的生活中大部分是模拟量,比如说温度、压力、声音、或者图像等等。
现在大部分的传感器都将一些模拟量转化为电压量来进行测量,这里不再举例,因为太多了,大家在学会这一讲之后,可以试着去读一个土壤湿度传感器的值(前提是你有的话)。
现在大家应该可以明白是什么了吧!一句话,就是把电压值转化成数字量(会不会有点笼统,暂且可以这么理解)。
我们现在看下ADC有一些什么性能指标?1.采样率这是一个什么概念呢?因为对于模拟量来说,在时域上面是连续的(时域是指x轴为时间t的一个坐标域,比如你用示波器看到的波形就是指在时域上面的波形),而对于我们的数字量来说它就是一个离散的量,也就是说它必然是会产生一个时间间隔,没有办法做到连续,做到连续的话数据量就是无穷大(会不会说的有点玄乎,希望大家可以明白。
)所以就引出采样率这样的一个东西,简单说就是多久采集一次信号,又可以称之为采样频率。
2. 分辨率大家如果去查ADC的芯片,都会说到该芯片是几位的ADC,那么这个是用来干嘛的呢?比如说我们介绍的FR5969提供了一个12位的ADC,改怎么理解呢,12位的ADC第一个寄存器来说,那么他可以存储多少个数呢?就是212个数,假设我们现在给一个2.5V的电压值,那么我们可以得到他的分辨率就是2.5/212 = 0.0006也就是说它可以测量到0.0006V的电压。
3.转化时间这个比较复杂,因为涉及到ADC的构成以及工作原理,所以下面我们需要专门来讲一讲ADC的电路工作原理。
首先第一个我们需要知道的是采样定理,对于现在大部分的规模电路乃至超大规模电路,都基本的是以数字为主的,但是实际的大部分参量是模拟的,所以就需要解决这之间的桥梁问题。
MSP430单片机构成ΣΔ型AD转换器原理及实现方法
* !$$(+,A,%)/#$)
(0)
在一定的误差范围内,有 !>?@ * !’(,则:
!’( *(+,A,(%)+%()/#$)
* !$$(+,A,%)/#$)
(/)
虽然 %)+ * %)! *’’’和 %(+ * %(!
*’’’不一定成立,但总体效果上看,可以认为它
们是等宽的’由- 个高电平和. ,- B!型 /E转换器原理及实现方法
刘 刚,刘风 ,于 军
(吉林化工学院 自动化系,吉林 吉林 ?"!(!!)
摘要:主要介绍 83D*"(微功耗单片机构成 !B!型 /E转换器的原理,给出了对应的电路图和程序框
图&83D*"(单片机主要特点是功耗极低、片内含有比较器,可以使用很少的零件构成 !B!型 /E 转换
器即增加了成本,又存在单片机与 /E 转换器连
字值&对含有比较器的单片机可以使用很少的零 件构成 !B!型 /E转换器,得较高的分辨率&
(")83D*"(系列单片机是美国德州仪器公 司?AA)年以后逐步开发出来的?)位微功耗单片 机(86-)&主要特点是功耗极低、开发方便、产品 系列化,可随使用要求不同选择相应产品&本文介 绍的 !B! 型 /E 转换电路由 83D*"(1*?" 单片 机构成,其片内结构如图?所示&
相似文献(9条)
1.期刊论文 崔明.佟刚.吴志勇.CUI MING.TONG GANG.WU ZHIYONG 基于MSP430的纸张耐压强度检测系统 -微计
算机信息2007,23(29)
基于MSP430单片机开发了一种新型的纸张耐压强度检测系统.采集的微弱信号通过两级放大器放大,测量时自动变换量程,提高了检测结果的精 度和稳定性.利用MSP430单片机片上外围部件集成度高的特性,使系统结构紧凑,节约了成本.增强的用户接口界面,使操作简便.
MSP430AD转换
MSP430AD转换对AD 转换的理解对SHI 加一个上升沿的信号则初始化AD 转换,An analog-to-digital conversion is initiatedwith a rising edge of the sampleinput signal SHI. The source for SHI is selected with the SHSx bits andincludes the following:The ADC12SC bit The Timer_A Output Unit 1The Timer_B OutputUnit 0The Timer_B Output Unit 1The polarity of the SHI signal source can be inverted with the ISSH bit. TheSAMPCON signal controls the sample period and start of conversion. WhenSAMPCON is high, sampling is active. The high-to-low SAMPCON transitionstarts the analog-to-digital conversion, which requires13 ADC12CLKcycles.Two different sample-timing methods are defined by control bit SHP, extendedsample mode and pulse mode其中扩展采样模式(SHP=0):即SHI 信号直接决定采样时间,参看DATASHEET 和时序图脉冲采样模式时,SHI 只负责输入一个上升沿信号来触发采样,而采样时间由ADC12CLK 及SH0_X 或SHT1_X 决定,转换存储器:MSP430 有16 个转换存储器,对应16 个8 位的存储控制寄存器,在储存控制寄存器ADC12MCTLX 中涉及到EOS, INCH,SREF。
msp430学习的深度解析和总结
msp430学习的深度解析和总结一、MSP430开发环境建立1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。
2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET3.建立一个工程,选择"option"选项,设置a、选择器件,在"General"项的"Target"标签选择目标器件b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试信息用于仿真。
c、若选择"Other",Output下拉框选择"zax-m"即可以输出hex文件用以烧录,注意,此时仿真不了。
d、选择"Debugger"项的"Setup"标签,"Driver"下拉框选择"FET Debugger"e、选择"FET Debugger"项的"Setup"标签,"Connection"下拉框选择"Texas Instrument USB-I"4.仿真器的接口,从左到右分别为" GND,RST,TEST,VCC"二、IO口数字输入/输出端口有下列特性:每个输入/输出位都可以独立编程。
允许任意组合输入、输出。
P1 和P2 所有8 个位都可以分别设置为中断。
可以独立操作输入和输出数据寄存器。
可以分别设置上拉或下拉电阻。
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
MSP430单片机AD转换实验
AD转换实验一、转换原理MSP430F149勺A/D转换器原理请参考相关书籍。
实验板上与AD相关的硬件电路:RV310K------------ 3-3\J6P61SI?2Al)输入电路RV4III-10K f > 2 ;|||二、转换程序1、程序1:转换结果发送到PC主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。
“ main 、c ”主程序与中断程序:/*********************************************************程序功能:将ADC 对P6、0端口电压的转换结果按转换数据与对应的 模拟电压的形式通过串口发送到PC 机屏幕上显示通信格式 :N 、 8、 1, 9600测试说明 :打开串口调试精灵 ,正确设置通信格式 ,观察接收数据 **********************************************************/ #include <msp430 、 h> #include "allfunc 、 h" #include "UART0_Func 、 c" #include "ADC_Func 、 c" #define Num_of_Results 32 uint results[Num_of_Results]; // 保存 ADC 转换结果的数组uint average; uchar tcnt = 0; /*********************** void main( void ){uchar i; uchar buffer[5];WDTCTL = WDTPW + WDTHOLD; // 关狗 /* 下面六行程序关闭所有的 IO 口 */ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT=0XFF;P3DIR = 0XFF;P3OUT=0XFF;P4DIR = 0XFF;P4OUT=0XFF;P5DIR = 0XFF;P5OUT=0XFF;P6DIR = 0XFF;P6OUT = 0XFF; P6DIR |= BIT2;P6OUT |= BIT2; // P6DIR|=BIT6;P6OUT&=~BIT6; //InitUART(); Init_ADC(); _EINT(); buffer[4] = '\0';主函数 *********************关闭电平转换关闭数码管显示while(1){LPM1;Hex2Dec(average,buffer);for(i = 0; i < 4; i++) buffer[i] += 0x30;PutString0("The digital value is: ");PutString(buffer);Trans_val(average,buffer); buffer[3] = buffer[2]; buffer[2] = buffer[1];buffer[1] = 0x2e - 0x30; for(i = 0; i < 4; i++) buffer[i] += 0x30;PutString0("The analog value is: "); PutString(buffer);}}/******************************************* 函数名称:ADC12ISR功能:ADC中断服务函数,在这里用多次平均的计算P6、0 口的模拟电压数值参数: 无返回值: 无********************************************/ #pragmavector=ADC_VECTOR __interrupt void ADC12ISR (void) { static uchar index = 0;results[index++] = ADC12MEM0; // Move results if(index == Num_of_Results) {uchar i;average = 0;for(i = 0; i < Num_of_Results; i++){ average += results[i];average >>= 5; // 除以 32index = 0; tcnt++;if(tcnt == 250) // 主要就是降低串口发送速度 { LPM1_EXIT; tcnt = 0; } }}“ADC_Func 、 c ” A/D 转换相关程序 : #include <msp430 、 h> typedef unsigned int uint; /******************************************** 函数名称 :Init_ADC 功 能: 初始化 ADC 参 数: 无 返回值 : 无********************************************/ void Init_ADC(void) {P6SEL |= 0x01; // ADC12CTL0 =ADC12ON+SHT0_15+MSC; // ADC12CTL1 =SHP+CONSEQ_2; // ADC12IE = 0x01; // ADC12CTL0 |= ENC; // ADC12CTL0 |= ADC12SC; //}/******************************************** 函数名称 :Hex2Dec功 能:将16进制ADC 专换数据变换成十进制表示形式参数:Hex_Val--16 进制数据 ptr--指向存放专换结果的指针返回值 : 无 ********************************************/ void Hex2Dec(uint Hex_val,uchar *ptr) { ptr[0] = Hex_val / 1000;ptr[1] = (Hex_val - ptr[0]*1000)/100; ptr[2] = (Hex_val - ptr[0]*1000 - ptr[1]*100)/10;使能ADC 通道打开ADC 设置采样时间 使用采样定时器 使能ADC 中断 使能专换 开始专换、 41ptr[3] = (Hex_val - ptr[0]*1000 - ptr[1]*100 - ptr[2]*10);}/******************************************* 函数名称 :Trans_val功 能:将16进制ADC 专换数据变换成三位 10进制真实的模拟电压数据 , 并在液晶上显示参数:Hex_Val--16 进制数据返回值 : 无********************************************/ void Trans_val(uint Hex_Val,uchar *ptr){unsigned long caltmp; uint Curr_Volt; uchar t1;caltmp = Hex_Val;caltmp = (caltmp << 5) + Hex_Val; //caltmp = Hex_Val * 33 caltmp = (caltmp << 3) + (caltmp << 1); //caltmp = caltmp * 10 Curr_Volt = caltmp >> 12; 〃Curr_Volt = caltmp / 25 ptr[0] = Curr_Volt / 100;//Hex->Dect1 = Curr_Volt - (ptr[0] * 100); ptr[1] = t1 / 10;ptr[2] = t1 - (ptr[1] * 10);}“UARTO_Func c ”串口程序: #include <msp430 、h> typedef unsigned char uchar;/******************************************* 函数名称 :InitUART 功 能:初始化UART 端 口参 数: 无 返回值 : 无********************************************// P3 、 4,5 =// Enable USART0 T/RXD// 8-bit character// UCLK = ACLK// 32k/9600 - 3 // // Modulationvoid InitUART(void){P3SEL |= 0x30; ME1 |= URXE0 + UTXE0;UCTL0 |= CHAR; UTCTL0 |= SSEL0; UBR00 = 0x03; UBR10 = 0x00; UMCTL0 = 0x4A;变换USART0 TXD/RXD// Initialize USART state machine}/*******************************************函数名称:Send1Char功能:向PC机发送一个字符参数:se ndchar--要发送的字符返回值:无********************************************void Send1Char(uchar sendchar){while (!(IFG1 & UTXIFG0)); //TXBUF0 = sendchar;等待发送寄存器为空} /******************************************* 函数名称:PutSting功能:向PC机发送字符串并换行指令参数:ptr--指向发送字符串的指针返回值: 无********************************************/void PutString(uchar *ptr){while(*ptr != '\0'){Send1Char(*ptr++); //}while (!(IFG1 & UTXIFG0));TXBUF0 = '\n'; //} /******************************************* 函数名称:PutSting0功能:向PC机发送字符串,无换行参数:ptr--指向发送字符串的指针返回值: 无********************************************/ void PutString0(uchar *ptr){while(*ptr != '\0'){Send1Char(*ptr++); // }}发送数据发送换行指令发送数据2、程序2: 转换结果显示在1602 显示模块上UCTL0 &= ~SWRST;“ main、c” 程序#include <msp430x14x 、h> #include "cry1602 、h" typedef unsigned char uchar; typedef unsigned int uint;/************** 宏定义***************/#define DataDir P2DIR#define DataPort P2OUT#define Busy 0x80#define CtrlDir P6DIR#define CLR_RS P6OUT&=~BIT3; //RS = P6 、3#define SET_RS P6OUT|=BIT3;#define CLR_RW P6OUT&=~BIT4; //RW = P6 、4#define SET_RW P6OUT|=BIT4;#define CLR_EN P6OUT&=~BIT5; //EN = P6 、5#define SET_EN P6OUT|=BIT5;/*******************************************函数名称:DispNchar功能:让液晶从某个位置起连续显示N个字符参数: x-- 位置的列坐标y-- 位置的行坐标n-- 字符个数ptr-- 指向字符存放位置的指针返回值: 无******************************************void DispNChar(uchar x,uchar y, uchar n,uchar *ptr) uchar i;for (i=0;i<n;i++){Disp1Char(x++,y,ptr[i]);if (x == 0x0f){x = 0;y A= 1;}}}/*******************************************函数名称:LocateXY功能: 向液晶输入显示字符位置的坐标信息参数:x-- 位置的列坐标y-- 位置的行坐标返回值: 无******************************************void LocateXY(uchar x,uchar y) {uchar temp;temp = x&0x0f; y &=0x01;如果在第 2 行if(y) temp |= 0x40; //temp |= 0x80;LcdWriteCommand(temp,1);}/******************************************* 函数名称:Disp1Char功能: 在某个位置显示一个字符参数:x-- 位置的列坐标y-- 位置的行坐标data-- 显示的字符数据返回值: 无********************************************/ voidDisp1Char(uchar x,uchar y,uchar data) {LocateXY( x, y );LcdWriteData( data );} /******************************************* 函数名称:LcdReset功能: 对1602 液晶模块进行复位操作参数: 无返回值: 无********************************************/ voidLcdReset(void){CtrlDir |= 0x07; //DataDir = 0xFF; //控制线端口设为输出状态数据端口设为输出状态// 规定的复位操作LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 1); LcdWriteCommand(0x08, 1); LcdWriteCommand(0x01, 1); LcdWriteCommand(0x06, 1); LcdWriteCommand(0x0c, 1);}/******************************************* 函数名称 :LcdWriteCommand 功 能: 向液晶模块写入命令 参数 :cmd-- 命令 , chk-- 就是否判忙的标志返回值 : 无********************************************/void LcdWriteCommand(uchar cmd,uchar chk) {/******************************************* 函数名称 :LcdWriteData 功 能: 向液晶显示的当前地址写入显示数据 参数 :data-- 显示字符数据返回值 : 无 ********************************************/ void LcdWriteData( uchar data ) {WaitForEnable(); // 等待液晶不忙 SET_RS; CLR_RW; _NOP(); DataPort = data;// 将显示数据写入数据端口CLR_RS;CLR_RW; _NOP();DataPort = cmd; _NOP();//将命令字写入数据端口SET_EN; _NOP(); _NOP(); CLR_EN;}//产生使能脉冲信号检测忙信号 ?// 显示模式设置 // 显示关闭 // 显示清屏// 写字符时整体不移动 // 显示开 , 不开游标 , 不闪烁,1: 判忙 ,0: 不判if (chk) WaitForEnable(); //_NOP();SET_EN; // 产生使能脉冲信号_NOP();_NOP();CLR_EN;}/*******************************************函数名称:WaitForEnable功能:等待1602 液晶完成内部操作参数: 无返回值: 无********************************************/void WaitForEnable(void){P2DIR &= 0x00; // 将P4 口切换为输入状态CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP();while((P2IN & Busy)!=0); // 检测忙标志CLR_EN;P2DIR |= 0xFF; // 将P4 口切换为输出状态}/*******************************************函数名称:Delay5ms功能: 延时约5ms参数: 无返回值: 无******************************************** void Delay5ms(void){uint i=40000;while (i != 0)y-- 位置的行坐标i--;}}/******************************************* 函数名称 :Delay400ms 功 能: 延时约 400ms参 数: 无 返回值 : 无 ******************************************** void Delay400ms(void){uchar i=50;uint j;while(i--){j=7269;while(j--);}}“ cry1602、c ” 程序#include <msp430x14x 、 h> #include "cry1602 、 h" typedef unsigned char uchar; typedef unsigned int uint; 宏定义 ***************/P2DIRP2OUT0x80P6DIRn--字符个数 ptr--指向字符存放位置的指针 返回值 : 无********************************************/ void DispNChar(uchar x,uchar y, ucharn,uchar *ptr) { uchar i; for (i=0;i<n;i++) /************** #define DataDir #define DataPort #define Busy#define CtrlDir//RS = P6#define CLR_RS P6OUT&=~BIT3; #define SET_RS P6OUT|=BIT3;#define CLR_RW P6OUT&=~BIT4;#define SET_RW P6OUT|=BIT4;#define CLR_EN P6OUT&=~BIT5;#define SET_EN P6OUT|=BIT5;/******************************************* 函数名称 :DispNchar功 能:让液晶从某个位置起连续显示 N 个字符 参 数:X--位置的列坐标//RW = P6 、//EN = P6 、{Disp1Char(x++,y,ptr[i]);if (x == 0x0f){x = 0;y A= 1;}}}/*******************************************函数名称:LocateXY功能: 向液晶输入显示字符位置的坐标信息参数:x-- 位置的列坐标y-- 位置的行坐标返回值: 无********************************************/void LocateXY(uchar x,uchar y){uchar temp;temp = x&0x0f;y &= 0x01;if(y) temp |= 0x40; // 如果在第2 行temp |= 0x80;LcdWriteCommand(temp,1);}/*******************************************函数名称:Disp1Char功能: 在某个位置显示一个字符参数:x-- 位置的列坐标y-- 位置的行坐标data-- 显示的字符数据返回值: 无******************************************void Disp1Char(uchar x,uchar y,uchar data) {LocateXY( x, y );LcdWriteData( data );} /******************************************* 函数名称:LcdReset 功能: 对1602 液晶模块进行复位操作参数: 无返回值: 无******************************************void LcdReset(void){CtrlDir |= 0x07; //DataDir = 0xFF; //********************************************/void LcdWriteCommand(uchar cmd,uchar chk) { if (chk) WaitForEnable(); // 检测忙信号?CLR_RS;CLR_RW; _NOP(); 控制线端口设为输出状态数据端口设为输出状态LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 1);LcdWriteCommand(0x08, 1);LcdWriteCommand(0x01, 1);LcdWriteCommand(0x06, 1);LcdWriteCommand(0x0c, 1);}/******************************************* 函数名称:LcdWriteCommand 功能: 向液晶模块写入命令参数:cmd-- 命令,chk-- 就是否判忙的标志返回值: 无// 规定的复位操作// 显示模式设置// 显示关闭// 显示清屏// 写字符时整体不移动// 显示开, 不开游标, 不闪烁,1: 判忙,0: 不判SET_EN; //_NOP();_NOP();CLR_EN;}/******************************************* 函数名称 :LcdWriteData功能: 向液晶显示的当前地址写入显示数据 参 数 :data-- 显示字符数据返回值 : 无********************************************/ void LcdWriteData( uchar data ){WaitForEnable(); // 等待液晶不忙SET_RS;CLR_RW; _NOP();SET_EN; //_NOP();_NOP();CLR_EN; }***************************************** 函数名称 :WaitForEnable功 能:等待 1602 液晶完成内部操作 参 数: 无返回值 : 无********************************************/ void WaitForEnable(void){P2DIR &= 0x00; // 将 P4 口切换为输入状态 CLR_RS;SET_RW;_NOP(); SET_EN;_NOP();_NOP();while((P2IN & Busy)!=0); // 检测忙标志 DataPort = cmd;_NOP();// 将命令字写入数据端口 产生使能脉冲信号 DataPort = data;// _NOP();将显示数据写入数据端口产生使能脉冲信号CLR_EN;P2DIR |= 0xFF; // 将P4 口切换为输出状态}/*******************************************函数名称:Delay5ms 功能: 延时约5ms参数: 无返回值: 无********************************************/void Delay5ms(void){uint i=40000; while (i != 0){i--;}}/*******************************************函数名称:Delay400ms 功能: 延时约400ms参数: 无返回值: 无********************************************/void Delay400ms(void){uchar i=50; uint j;while(i--) {j=7269; while(j--);。
高精度数模转换器AD420及其与MSP430的接口技术
Ke r s y wo d :AD 2 ; D/ o v r; MS 4 0 c re t o p 40 A c n et P 3 ; u rn o l
1 概 述
A 4 0是 A I 司生产 的高精度 、低功 耗全 数 D2 D公
进行 配置 。当需要 输 出 电压信 号时 , 能从 一个 隔 它也
a d i h sS Ia d M irwi o ail n e a eI i o v ne t o u ea d h shg e o ma c n n t a P n co r c mp t e itr c . sc n e in s ,n a ih p r r n e a d e b f t t f
摘 要 :D 2 A 4 0是 具有 灵活 串行数 字接 口的 l 6位数 模 转换 器 .它带 有 S I Mi o i P和 c wr r e总线接 口. 使
用方便 、 性价 比高。 绍 了 A 4 0的 引脚功 能 、 气特 性 , 介 D2 电 阐述 了 AD 2 4 0与 MS 4 0的接 口技 术 。 P3 并
给 出 了在 MS 4 0控 制 下的 实 际应 用电路及 程序 。 P3
关 键 词 : D 2 ; D A转换 : MS 4 0 A 40 / P 3 ;电流环
中图分 类号 :N 9 ,P 6 T 7 ̄ T 3 8 2
MSP430_AD转换
ADC12 的功能模块( 6/ 11)
13
ADC12 的功能模块( 7/ 11)
4. 采样及转换所需的时序控制
采样和转换所需要的各种时钟信号: ADC12CLK转换时钟、 SAMPCON采样及转换信
号、SHT控制的采样周期 、 SHS控制的采样触发来源选 择 、ADC12SSEL选择的内核时钟源 及 ADC12DIV选择 的分频系数……
ADC12CTL1=SHP;
ADC12CTL0 |= ENC;
While(1)
{
ADC12CTL0 |=ADC12SC;
while((ADC12IFG&BIT0)==0)
_NOP( );
}
}
35
谢谢观看!!
36
控制寄存器 ADC12MEM0 ~
ADC12MEM15
寄存器的含义 转换控制寄存器0 转换控制寄存器1 中断标志寄存器 中断使能寄存器 中断向量寄存器 存储控制寄存器0~15
存储寄存器0~15
18
ADC12的相关寄存器(2 / 15)
1. 转换控制寄存器
① ADC12CTL0
转换控制寄存器0
19
ADC12的相关寄存器( 3/ 15)
VR+(有3种):A VCC (模拟电源正端) V REF+ (A/D转换器内部参考电源的输出正端) V eREF+ (外部参考电源的正输入端)
V R-(有2种):A VSS (模拟电源负端) V REF- 或 V eREF- (A/D转换器内部或者外
部参考电源负端)
8
ADC12 的功能模块( 2/ 11)
应的中断标志; • ADC12MCTLx寄
存器中定义了通道 和参考电压。
msp430可通过哪些接口进行烧写程序
MSP430可通过哪些接口进行烧写程序?MSP430无论是仿真还是烧写程序,一般可以通过:JTAG、SBW、BSL接口进行。
1、JTAG是利用边界扫描技术,在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430内部数据地址总线上,所以可以访问到430的所有资源,包括全地址FLASH、RAM及各种寄存器。
可以用于对430的仿真和编程,主要连接线有TMS、TCK、TDI、TDO,430还需要另两条线路RST、TEST来启动JTAG 命令序列。
2、SBW是SPY-BI-WIRE,可以简称为两线制JTAG,主要有SBWTCK(连接到JTAG接口的7脚TCK)与SBWTDIO(连接到JTAG接口的1脚TDO/TDI),该接口主要用于小于28脚的2系列单片机,因为28脚以内单片机的JTAG一般与IO口复用,为了给用于留有更多的IO资源,才推出SBW接口。
SBW同JTAG一样可以访问到430内部的所有资源。
注:目前MSP430F5XX系列中也有SBW 接口,原理同2系列的SBW。
3、BSL是TI在430出厂时预先固化到MCU内部的一段代码,该代码用户不可读写,这有点类似与DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。
BSL通过UART协议与编程器连接通信。
编程器可以发送不同的通信命令来对MCU的存储器做不同的操作,可以把这种方式称为BSL接口。
BSL代码的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。
这种特殊的启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。
BSL启动后,就可以通过预先定义好的UART协议命令对MCU进行读写访问了。
4、一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,只要把这三种方式都堵上,430的程序不就安全了吗?所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。
msp430 实验报告
msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。
本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。
实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。
通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。
这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。
实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。
通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。
这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。
实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。
通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。
这个实验让我对MSP430的模拟信号处理有了更深入的了解。
实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。
通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。
这个实验让我掌握了MSP430与外部设备进行数据交互的方法。
结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。
MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。
通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。
未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。
MSP430简介(超详细·)
MSP430简介(超详细·)msp430简介MSP430是德州公司新开发的⼀类具有16位总线的带FLASH 的单⽚机,由于其性价⽐和集成度⾼,受到⼴⼤技术开发⼈员的青睐.它采⽤16位的总线,外设和内存统⼀编址,寻址范围可达64K,还可以外扩展存储器.具有统⼀的中断管理,具有丰富的⽚上外围模块,⽚内有精密硬件乘法器、两个16位定时器、⼀个14路的12位的模数转换器、⼀个看门狗、6路P⼝、两路USART通信端⼝、⼀个⽐较器、⼀个DCO内部振荡器和两个外部时钟,⽀持8M 的时钟.由于为FLASH型,则可以在线对单⽚机进⾏调试和下载,且JTAG⼝直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真⼯具,⽅便实⽤,⽽且,可以在超低功耗模式下⼯作对环境和⼈体的辐射⼩,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电⼲扰运⾏不受影响,适应⼯业级的运⾏环境,适合与做⼿柄之类的⾃动控制的设备.我们相信MSP430单⽚机将会在⼯程技术应⽤中得以⼴泛应⽤,⽽且,它是通向DSP 系列的桥梁,随着⾃动控制的⾼速化和低功耗化, MSP430系列将会得到越来越多⼈的喜爱.⼀、IO⼝(⼀)、P⼝端⼝寄存器:1、PxDIR 输⼊/输出⽅向寄存器(0:输⼊模式 1:输出模式)2、PxIN 输⼊寄存器输⼊寄存器是只读寄存器,⽤户不能对其写⼊,只能通过读取该寄存器的内容知道I/O⼝的输⼊信号。
3、PxOUT 输出寄存器寄存器内的内容不会受引脚⽅向改变的影响。
4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共⽤⼀个中断向量,中断标志不会⾃动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端⼝ 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁⽌ 1:使能)(⼆)、常⽤特殊P⼝:1、P1和P2⼝可作为外部中断⼝。
MSP430之一 关于AD转换
之一关于AD转换
l 首先应明确Msp4301X里的各系列中的ADC模块大凡是12位的转换精度。
下图即为其功能模块图。
其实这个图感觉大概看哈就行了,真有时间和精力细细结合书渗透还是可以的,不过就是刚开始看有点花花绿绿吧。
l 熟悉并能使用一个模块,必然要熟悉其各个寄存器的作用。
下面我们来看下ADC12模块中各个模块寄存器的作用,
转换控制寄存器 ADC12CTL0
ADC12CTL0
1. ENC=1时才能正常的AD转换
2. ADCSC是其采集/转换控制位,启动AD必须要用一条指令来配置ENC 和ADCSC。
3. ADCIVIE 转换时间溢出中断。
转换未完成时,继续采样则会溢出。
4. ADC0VIE 溢出中断允许位。
即ADC12MEMx。
MSP430核心板介绍
浙江求是科教设备有限公司
各个线路板模块介绍
1-11 1-12 1-13 1-14 1-15 1-16 1-17 1-18 1-19 1-20 DCP-211-A DCP-212-A DCP-213-A DCP-214-A DCP-215-A DCP-216-A DCP-217-A DCP-218-A DCP-219-A DCP-220-A 串口DA IIC转换电路 V/F和F/V转换电路 可编程增益放大电路 信号滤波电路 开关量输入输出电路 功率运放输出电路 双路PWM输出电路 H桥PWM输出电路 环境参数检测电路 仪用放大电路
电脑串口采用的是RS232接口,其发送TXD和接收RXD数据线均采用EIA电平,即1: -3~-15V;0:+3~+15V;而单片机采用的是3.3和0V电平,MAX232实现电平转换;
浙江求是科教设备有限公司
DCP-200 MSP430F5438A核心板
以太网原理及接口
LEDA
LEDB 1.采用SPI通信,ENC28J60通信时钟SCLK高达20MHZ,网口 中含两个可编程LED,指示连接、发送和接收,支持全双工和 半双工通信,内置8K的双端口的SRAM
MSP430F5438A结构框图
浙江求是科教设备有限公司
DCP-200 MSP430F5438A核心板
MSP430F5438A参数
● 256K Flash,16K RAM; ●P1,P2 16个中断IO口; ●16位CRC 校验; ●16通道AD采用,200ksps,12路外部采样,同时内置一个温度传感器, 可以采集芯片温度 ●支持32位硬件乘法器; ●RTC实时时钟; ●4个USCI,UCAx支持串口,IrDA/SPI,UCBx支持SPI/IIC ●15个捕捉/比较定时器 ●JTAG/SBW(4线/2线仿真下载) ●UCS统一时钟管理 ●系统看门狗Watchdogs ●支持多种低功耗模式LPM ●支持欠压或低压自动复位 ●3通道DMA传输;
AD420中文资料
摘要:AD420是具有灵活串行数字接口的16住数模转换器,它带有SPI和Microwire总线接口,使用方便、性价比高。
介绍了AD420的引脚功能、电气特性,阐述了AD420与MSP430的接口技术,并给出了在MSP430控制下的实际应用电路及程序。
关键词:AD420;D/A转换;MSP430;电流环1 概述AD420是ADI公司生产的高精度、低功耗全数字电流环输出转换器。
AD420的输出信号可以是电流信号,也可以是电压信号。
其中电流信号的输出范围为4mA~20mA,0mA~20mA或0mA~24mA,具体可通过引脚RANGE SELECTl,RANGE SELECT2进行配置。
当需要输出电压信号时,它也能从一个隔离引脚提供电压输出,这时需外接一个缓冲放大器,可输出0V~5V,0V~10V,±5V 或±10V电压。
AD420具有灵活的串行数字接口(最大速率可达3.3 Mb/s),使用方便、性价比高、抑制干扰能力强,非常适合用于高精度远程控制系统。
AD420与单片机的接口方式有2种:3线制和异步制。
单片机系统通过AD420可实现连续的模拟量输出。
其主要特点如下:宽泛的电源电压范围为12 V~32 V,输出电压范围为0V~-2.5 V;带有3线模式的SPI或Microwire接口,可采集连续的模拟输入信号,采用异步模式时仅需少量的信号线;数据输出引脚可将多个AD420器件连接成菊链型;上电初始化时,其输出最小值为0 mA,4 mA或O V;具有异步清零引脚,可将输出复位至最小值(0mA、4 mA或0V);BOOST引脚可连接一个外部晶体管来吸收回路电流,降低功耗;只需外接少量的外部器件,就能达到较高的精度。
AD420采用24引脚SOIC和PDIP封装,表1是其引脚功能说明。
2 工作原理在AD420中,二阶调节器用于保持最小死区。
从调节器发出的单字节流控制开关电流源,两个连续的电阻电容装置进行过滤。
MSP430单片机AD转换
MSP430 单片机AD 转换
一。
简单介绍MSP430 ADC12 模块中是由以下部分组成:输入的16 路模拟开关(外部8 路,内部4 路),ADC 内部电压参考源,ADC12 内核,ADC 时钟源部分,采集与保持/触发源部分,ADC 数据输出部分,ADC 控制寄存
器等组成。
四种采样模式:
一。
简单介绍:
ADC12 模块中是由以下部分组成:输入的16 路模拟开关(外部8 路,内部4 路),ADC 内部电压参考源,ADC12 内核,ADC 时钟源部分,采集与保持/ 触发源部分,ADC 数据输出部分,ADC 控制寄存器等组成。
四种采样模式:
(1)单通道单次转换模式
(2)序列通道单词转换模式
(3)单通道多次转换模式。
msp430非常详细有用的讲解和例程
7
6
5
DCO.2 DCO.1 DCO.0
4 MOD.4
3 MOD.3
2 MOD.2
1 MOD.1
0 MOD.0
DCO.0-DCO.4 定义 8 种频率之一,可以分段调节 DCOCLK 频率,相邻两种频率相差 10%。而频率由注入直流发生器的电流定义。
MOD.0-MOD.4 定义在 32 个 DCO 周期中插入的 Fdco+1 周期个数,而在下的 DCO 周期 中为 Fdco 周期,控制改换 DCO 和 DCO+1 选择的两种频率。如果 DCO 常数为 7,表示 已经选择最高频率,此时不能利用 MOD.0-MOD.4 进行频率调整。
低功耗设置的技巧问题: 1、LPM4:在振荡器关闭模式期间,处理机的所有部件工作停止,此时电流消
耗最小。此时只有在系统上电电路检测到低点电平或任一请求异步响应中断的外部中断 事件时才会从新工作。因此在设计上应含有可能需要用到的外部中断才采用这种模式。 否则发生不可预料的结果。
2、LPM3:在 DC 发生器关闭期间,只有晶振是活动的。但此时设置的基本时序条 件的 DC 发生器的 DC 电流被关闭。由于此电路的高阻设计,使功耗被抑制。注:当从 DC 关闭到启动 DC0 要花一端时间 (ns-us)
微控网供应 MSP430 单片机系列开发工具,欢迎订购。 模块列表 1- 复位模块 2- 时钟模块 3- IO 端口模块 4- WDT 看门狗模块 5- Timer A 定时器模块 6- 比较器 A 模块 7- ADC12 数模转换模块 8- USART 串行异步通讯模块 9- CPU 模块及全局资料 10-MSP430 其它应用介绍
3-SMCLK: 子 系 统 时 钟 , SMCLK 是 由 2 个 时 钟 源 信 号 所 提 供 . 他 们 分 别 是 XT2CLK(F13、F14)和 DCO,如果是 F11、F11X1 则由 LFXT1CLK 代替 TX2CLK。同样 可设置相关寄存器来决定分频因子及相关的设置。
六通道同步ADC与MSP430的接口设计
A b s t r a c t :T h i s p a p e r p u t f o r w a r dan e wA D Ca p p l i c a t i o nt h a t u s e dr e a l h a r d w a r es y n c h r o n o u s A/ Dc o n v e r t e r c h i pA D 7 6 5 6t of o r m am u l t i c h a n n e l s y n c h r o n o u sd a t aa c q u i s i t i o nc i r c u i t .T h ei n t e r f a c ep r o g r a m d e s i g nw i t hc u r r e n t p o p u l a r M S P 4 3 0M C Uw a s g i v e n .T h e i n t e r f a c e f e a t u r e s a n dm a i nf u n c t i o no f s i x c h a n n e l s s i m u l t a n e o u s s a m p l i n gA/ Dc o n v e r t e r A D 7 6 5 6w e r ea n a l y z e d .T a k i n gM S P 4 3 0m i c r o c o n t r o l l e r a s a n e x a m p l e , t h ei n t e r f a c ec i r c u i t o f A D 7 6 5 6a n dM S P 4 3 0m i c r o c o n t r o l l e r w a sd e s i g n e d .A f t e r a n a l y z i n gt h e , t w o m e t h o d s o f i n t e r f a c e p r o g r a md e s i g no f h a r d p e r f o r m a n c e c h a r a c t e r i s t i c a n di n t e r f a c e o f M S P 4 3 0M C U w a r eS P I i n t e r f a c ea n ds o f t w a r e e m u l a t e dS P I i n t e r f a c ew e r ef u l l yd i s c u s s e d .T h ec o r r e s p o n d i n gs o f t w a r e f l o w c h a r t s w e r eg i v e n .I t i s a ni m p o r t a n t r e f e r e n c ef o r v a r i o u s t y p e s o f s y n c h r o n o u s s a m p l i n gc i r c u i t u s i n g A D 7 6 5 6a n dM S P 4 3 0M C U . K e yw o r d s :A/ Dc o n v e r t e r ;A D 7 6 5 6 ;M S P 4 3 0 ;m i c r o c o n t r o l l e r ;i n t e r f a c ep r o g r a m C i t a t i o nf o r ma t : S U ND o n g j i a o ,X I AJ i a n g t a o ,Z H A N GC h u a n g . I n t e r f a c eD e s i g no f S i x c h a n n e l S y n c h r o n o u s A D Ca n dM S P 4 3 0 [ J ] . J o u r n a l o f S i c h u a nO r d n a n c e , 2 0 1 4 ( 1 ) : 1 2 8- 1 3 1 .
数模转换器AD420及其与MSP430的接口技术
数模转换器AD420及其与MSP430的接口技术1 概述AD420 是ADI 公司生产的高精度、低功耗全数字电流环输出转换器。
AD420 的输出信号可以是电流信号,也可以是电压信号。
其中电流信号的输出范围为4mA~20mA,0mA~20mA 或0mA~24mA,具体可通过引脚RANGE SELECTl,RANGE SELECT2 进行配置。
当需要输出电压信号时,它也能从一个隔离引脚提供电压输出,这时需外接一个缓冲放大器,可输出0V~5V,0V~10V,±5V或±10V电压。
AD420 具有灵活的串行数字接口(最大速率可达3.3 Mb/s),使用方便、性价比高、抑制干扰能力强,非常适合用于高精度远程控制系统。
AD420 与单片机的接口方式有2 种:3 线制和异步制。
单片机系统通过AD420 可实现连续的模拟量输出。
其主要特点如下:宽泛的电源电压范围为12 V~32 V,输出电压范围为0V~-2.5 V;带有3 线模式的SPI 或Microwire 接口,可采集连续的模拟输入信号,采用异步模式时仅需少量的信号线;数据输出引脚可将多个AD420 器件连接成菊链型;上电初始化时,其输出最小值为0 mA,4 mA 或O V;具有异步清零引脚,可将输出复位至最小值(0mA、4 mA 或0V);BOOST 引脚可连接一个外部晶体管来吸收回路电流,降低功耗;只需外接少量的外部器件,就能达到较高的精度。
AD420 采用24 引脚SOIC 和PDIP 封装,表1 是其引脚功能说明。
2 工作原理在AD420 中,二阶调节器用于保持最小死区。
从调节器发出的单字节流控制开关电流源,两个连续的电阻电容装置进行过滤。
电容为电流输出额外增加的器件。
输出电流则简单显示为4 mA~20 mA,OmA~20mA 或0mA~24mA。
AD420 采用BiCMOS 工艺,能够适合高性能的低电压数字逻辑和高电压模拟电路。
MSP430外围模块功能简介[4]
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
上述模式切换即由2转换成3或由4转换成2可不必停止ENC转换允许,就可直接进行.但 对转换到1模式是不可以的,要先停止转换后切换. 可以接受的转换模式有: 00——>01 10——>11 00——>10 01——>00 01——>11 10——>10
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
说明1:
模拟信号输入端
MSP430F14x与MSP430F44x的AD完全相同.外接的模拟输入信号占用P6口,及 P6.0~P6.7 另外还有4个模拟输入信号;AVCC,VeREF,VREF -VeREF,Ref_x 对应的是 电源电压,外部正参考电平,外部负参考电平和温度.对于内部参考电平一般可 通过7脚与外部去藕电容相连,使之达到退藕的目的,同时也可作为校准用.外部 引进的参考电平由10脚和11脚引入,注意进入的电平不能超过AVCC和AVss 关于内 部参考有两种基准,一个是2.5v,一个是1.5v,这样AD的参考电平可以组成7种不 同的组合来决定转换的范围的上下限,而且所有的输入模拟信号的转换码都与该 参考电平有关,而每一个通道的参考电平可选择不同的组合来指出参考电平的上 下限,这样AD的转换就根据此来转换响应的数字位并存储在指定的单元中.注第 11~15通道是测量Avcc/2 电平,实际上12和15是没有的. 关于码制转换公式如下:NADC=1095*(Vin-Vr-)/(Vr+-Vr-) 式中Vin 输入的模拟信号,范围大于AVss 小于AVcc 式中Vr- 参考电平下限 ,最小为AVss 式中Vr+ 参考电平上限, 最大为Avcc 关于各个通道的模拟输入的参考电平的设置 可通过各个通道的存储控制寄存器(ADC12MCTLx)中Sref 三个位来定义.同用 INCH中的四个位来指出是选用哪个通道.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高精度数模转换器AD420及其与MSP430的接口技术
1 概述
AD420是ADI公司生产的高精度、低功耗全数字电流环输出转换器。
AD420的输出信号可以是电流信号,也可以是电压信号。
其中电流信号的输出范围为4mA~20mA,0mA~20mA或0mA~24mA,具体可通过引脚RANGE SELECTl,RANGE SELECT2进行配置。
当需要输出电压信号时,它也能从一个隔离引脚提供电压输出,这时需外接一个缓冲放大器,可输出0V~5V,0V~10V,±5V或±10V电压。
AD420具有灵活的串行数字接口(最大速率可达3.3 Mb/s),使用方便、性价比高、抑制干扰能力强,非常适合用于高精度远程控制系统。
AD420与单片机的接口方式有2种:3线制和异步制。
单片机系统通过AD420可实现连续的模拟量输出。
其主要特点如下:
∙宽泛的电源电压范围为12 V~32 V,输出电压范围为0V~-2.5 V;
∙带有3线模式的SPI或Microwire接口,可采集连续的模拟输入信号,采用异步模式时仅需少量的信号线;
∙数据输出引脚可将多个AD420器件连接成菊链型;
∙上电初始化时,其输出最小值为0 mA,4 mA或O V;
∙具有异步清零引脚,可将输出复位至最小值(0mA、4 mA或0V);
∙BOOST引脚可连接一个外部晶体管来吸收回路电流,降低功耗;
∙只需外接少量的外部器件,就能达到较高的精度。
AD420采用24引脚SOIC和PDIP封装,表1是其引脚功能说明。
2 工作原理
在AD420中,二阶调节器用于保持最小死区。
从调节器发出的单字节流控制开关电流源,两个连续的电阻电容装置进行过滤。
电容为电流输出额外增加的器件。
输出电流则简单显示为4 mA~20 mA,OmA~20mA或0mA~24mA。
AD420采用BiCMOS工艺,能够适合高性能的低电压数字逻辑和高电压模拟电路。
如果需要,AD420同样能够提供电压输出代替电流环输出。
增加了一个额外的电压放大器使用户得到OV~5 V,0V~10V,±5V或±10V的电压。
AD420有一个环路故障检测电路。
当开环或者供电电压不足使IOUT电压超过限制电压时会产生警报。
故障检测端为低电平触发,所以可以用一个上拉电阻器同时连接至多个AD420的故障检测端,上拉电阻器可以接至VLL端或外接5 V逻辑电压。
IOUT电流由一个PMOS晶体管和内置放大器控制。
内置电路提供故障输出,避免使用窗口限制比较器,这就要求在故障检测端输出有效之前需要一个实际的误差输出。
反之,当AD420输出级的内置放大值低于l V的驱动值时,信号就会产生。
因此,故障输出端在跳转限制达到要求之前保持不变。
由于比较在输出放大反馈网络内进行,输出精度通过开环增益保持稳定,在故障检测输出变为有效之前没有输出误差。
3个数字接口,包括数据输入、CLOCK、LATCH。
如果用户想要使本质安全应用电路具有最少的流电隔离器数目,可将AD420配置在异步模式下工作,这种模式可将LATCH通过一个限流电阻连接到Vcc来实现。
数据的值通过O,1进行组合来构造信息并触发LATCH信号。
2.1 时序操作
如图1所示,AD420采用∑-△架构进行A/D转换,由于其内部结构固有的单调性以及高分辨率,因此特别适合工业控制环境的相对低带宽需求。
2.2 电流模式输出
如图2所示,AD420在不需要任何外部有源器件的情况下能提供4 mA~20 mA、0 mA~20 mA 及0mA~24mA电流输出。
滤波电容Cl和C2可选择低成本的陶瓷电容。
为了满足满量程3 ms 的快速响应,应选用低电介质吸收电容,其中C1=O.OlμF,C2=0.0lμF。
2.3 电压模式输出
如图3所示,由于AD420是一个单电源器件,必须在VOUT引脚增加一个外部缓冲放大器。
其两级电压输出范围如表2所列。
2.4 可选范围及零点调整
用户若希望获得低于指定值的偏移和增益误差,可用图4给出的简单方法来调整这些参数。
选用低漂移电阻要谨慎,因为它们会影响DAC的温度漂移性能。
调整算法采用迭代法。
在4 mA~20 mA模式下,AD420的参数调整方法如下所示:
1)偏移调整。
设所有输入为0,调节调零电阻(RZERO)使输出电流为4.00000 mA。
2)增益调整。
设所有输入为1,调节调零电阻(RZERO)使输出电流为19.99976 mA。
重复第一和第二步,直到两端的精度都达到要求。
在BOOST引脚以及电源之间连接一个5 kΩ电阻(RSPAN2)可使增益提高+0.8%。
由于RSPAN电阻可变化到最大值500 Ω,在RSPAN电阻和基准输入电阻(30 kΩ)的作用下,基准输入端电压将受到影响。
当调整RSPAN2电阻的大小时,三者共同影响将使基准输入电压误差在-O.8%~+0.8%范围内变化。
3 基于MSP430的接口应用及编程
硬件接口电路如图5所示。
MSP430的串口通信模块可用两种方式实现:一是直接采用硬件通用串行同步/异步模块(USART);二是通过定时器模块实现串口通信功能。
这两种方式有很大的区别:前者USART模块是在一系列寄存器设置后,由硬件自动实现数据的移进和移出来完成串行通信的功能,同时还能实现两种通信协议,即UART异步通信协议和SPI同步通信协议;后者是在定时器的作用下,人工通过用户软件控制,逐位地将数据由端口发送或接收,因此常称为软件串行口。
点击看原图
MSP430的发送或接收主要是移位寄存器在起作用。
两个缓存器都是采用移位寄存器加缓存的结构。
接收时,当移位寄存器将接收来的数据位流组合满一个字节后,保存到接收缓存URXBUF;发送时,是将发送缓存UTXBUF内的数据逐一送至发送端口。
发送和接收两个移位寄存器的移位时钟都是波特率发生器产生的时钟信号BITCLK。
MSP430的接收和发送分别使用两个寄存器,为全双工。
对于没有SPI总线的单片机,可用MSP430的I/0口模拟SPI总线,程序如下:
MSP430x13x系列的硬串口具有SOI模式,编程更为简单,其初始化程序如下:。