MSP430使用指南32 -> SAC智能模拟组合

发布者:SparkStar22最新更新时间:2020-03-30 来源: eefocus关键字:MSP430  使用指南  SAC  智能模拟组合 手机看文章 扫描二维码
随时随地手机看文章

SAC(Smart Analog Combo),即智能模拟组合,这个IP核出来的时间并不长,目前只用在了两个片子上:MSP430FR2353和MSP430FR2355。首先看一下SAC内部是个什么结构呢:

从上图可以看到,内部本质上就是一个OPA放大器,同时在运放的+和-的输入端有个选择开关,可以根据客户的需求搭建不同的电路,同时内部还集成一个12 bit的DAC模块,用于在一些使用环境下提供固定的电压,可以实现电压偏移的目的。


针对上述这个内部结构,我们进行细致的分析:


对于+输入端,有三个可以选择的通道:


00:引脚接入  


01:12 bit DAC信号  


10:内部Amp的输出,也就是其他SAC模块的输出,用于多级Amp的组合。


对于-输入端,同样也有三个可以选择的通道:


00:引脚接入(也可以选择本Amp的输出构成反馈电路,也可以直接接地)


01:可编程的增益


10:内部Amp的输出,也就是其他SAC模块的输出,用于多级Amp的组合。


那么如何使用呢,主要用在哪些方面呢:


总的一句话来说,只要是使用Amp的电路设计上,都能用到这个模块的资源,在聚焦一点的话,就是微小电流的检测,比如生物科技中的血糖仪,血氧仪,脉搏检测器等。同时也可以用于驱动一定功率的红外或者led。


下面讲述有哪几种常用的方法即连接方式:


General-Purpose Mode (通用模式)

如上图所示的通用模式,OA的正端和负端均选中位外部引脚作为输入,同时输出端不反馈,因此可直接作为一个OA使用,用户可以自己搭建外围电路。


Buffer Mode(缓冲器模式)

如上这种电路拓扑结构,是电压跟随器,电压缓冲器的连接方式(跟随器和缓冲器有一定区别,不细说),在用户要求一些输入阻抗高,输出阻抗低的情况下可以使用。


Inverting  Mode(反转模式)

反转模式,如上所示,这种电路结构应该是用户使用最多的电路了,负端作为输入,正端可以提供一个需要的偏执电压,具体公式不细说,比较简单了资料也很多。


对于正端提供的偏执电压呢,有两种方式:内部12 bitDAC和直接引入外部的电压。即位如上所示的两种结构。


Noninverting  Mode(同相模式)

这个电路拓扑是同相模式,输入端从正端输入,负端和输出通过可调节的增益相连接构成一个反馈电路。


SAC内部本质上就是运放结构,同时在输入及输出端搭配了多个选择开关,从而用户在使用过程中可以免去外部的电阻,电容等电路,节省板载空间,也可以加速用户设计。同时内部的SAC模块可以级联,进行多级放大,更便于使用。那么如何设置内部的电路结构呢?当然是操作寄存器! 下面详细讲解一下相关的寄存器设置并给出参考程序。


先整体看一下寄存器的内容,SAC模块包括6个寄存器,如下:

SACxOA

SACEN : SAC模块的使能位,1时使能所有的SAC模块,失能情况下输出位高阻状态。


OAPM : OA的模式选择,也就是可以是高速或低速的,当然高速或者低速会影响功耗,带宽,速度等,具体参数可以参考芯片的datasheet,如下图所示位FR2355的数据。

OAEN :内部OA使能,这一位用于控制SAC内部的OA模块的使能。


NMUXEN : 这一位控制着OA负端输入的使能,看内部结构框图可以看出,在OA负端输入前有两级:第一级时MUX,也就是选择输入源,第二季是使能MUX,也就是说即使选择了MUX的输入源,这个也必须使能,否则MUX与OA的负输入端会断开。


NSEL : 负端输入选择位。


PMUXEN : 这一位和负端的NMUXEN类似,控制着正端的MUX与OA的连接或断开。


PSEL : 正端输入选择位。

SACxPGA

GAIN : OA增益选择,也就是在上面讲述的图中的可调增益的设置位,有三位,配合NSEL PSEL MSEL可以实现多种模式下的增益选择。


MSEL : PGA模式的选择,控制的是如下图中的内部电路结构:

综上可以发现,电路拓扑即增益等参数与MSEL PSEL NSEL GAIN有关系,具体这些参数怎么设置呢? 下图给了一些参数的示例,在使用过程中可以根据下述资料进行寄存器的设置。

SACxDAC

SACxDAC寄存器显而易见是用来控制SAC内部那个12bit DAC模块的,那么内部这个DAC模块的电路结构是什么样子的呢?

那么我们对着这张DAC内部的结构图就可以很容易的看懂这个寄存器里每一位的含义了。


DACSREF : 这一位决定着DAC的参考电压,有两个选项:primary和secondary,每一项的参考源在芯片的datasheet中可以查看到,如下图是FR2355的信息。

DACLSEL : 从上面结构上可以看到,这一位决定着设置的DAC值是否进入DAC CORE,当设置的数据进入DAC CORE后,则会驱动相应电压输出,也就是说这一位决定着DAC内核电压改变的频率,可以是实时的,也可以是脉冲控制的。


DACDMAE : DAC内部DMA请求使能,当DAC数据更新时,如果此位使能的情况下,则会有一个DMA的请求。


DACIE : DAC中断的使能信号,在DAC数据更新时可以产生一个中断信号给CPU。


DACEN : DAC使能位。


SACxDAT

这个寄存器是用于设置DAC电压值的,DAC的输出电压值是多少呢? 根据下面这个公式进行计算:

SACxDACSTS

 

这个寄存器是DAC的状态标志寄存器,目前只有0位用于DACIFG,其他均是预留的。


DACIFG是DAC数据更新的标志位。


SACxIV

DAC中断向量寄存器,只读寄存器,和DAC内部数据更新产生的中断有关系。当产生中断时,会触发中断向量处的程序,进而可以执行用户的中断服务程序。


 


好啦,在描述完SAC的所有寄存器后,提供几个例程以供大家参考使用(MSP430FR2355):


General Purpose Mode:

#include

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watch dog timer

 

  P1SEL0 |= BIT1 + BIT2 + BIT3;             // Select P1.1 P1.2 P1.3 OA function

  P1SEL1 |= BIT1 + BIT2 + BIT3;             // Select P1.1 P1.2 P1.3 OA function

 

  SAC0OA |= NMUXEN + PMUXEN;                // Enable negative and positive input

  SAC0OA |= OAPM;                           // Select low speed and low power mode

  SAC0OA |= SACEN + OAEN;                   // Enable SAC and OA

 

  __bis_SR_register(LPM3_bits);             // Enter LPM3

}

 

Buffer Mode:

#include

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watch dog timer

 

  P1SEL0 |= BIT1 + BIT3;                    // Select P1.1 P1.3 as external OA function

  P1SEL1 |= BIT1 + BIT3;                    // Select P1.1 P1.3 as external OA function

 

  SAC0OA |= NMUXEN + PMUXEN + NSEL_1 + OAPM;// Enable negative and positive input

                                            // Select PGA source as OA negative input

                                            // Select low speed and low power mode

  SAC0PGA |= MSEL_1;                        // Set as Unity-Gain Buffer Mode

  SAC0OA |= SACEN + OAEN;                   // Enable SAC and OA

 

  __bis_SR_register(LPM3_bits);             // Enter LPM3

}

Inverting  Mode:

#include

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watch dog timer

 

  // Disable the GPIO power-on default high-impedance mode

  // to activate previously configured port settings

  PM5CTL0 &= ~LOCKLPM5;

 

  // Configure reference module

  PMMCTL0_H = PMMPW_H;                    // Unlock the PMM registers

  PMMCTL2 = INTREFEN | REFVSEL_0;         // Enable internal 1.5V reference

  while(!(PMMCTL2 & REFGENRDY));          // Poll till internal reference settles

 

  P1SEL0 |= BIT1 | BIT2 | BIT3;             // Select P1.1 P1.2 P1.3 OA function

  P1SEL1 |= BIT1 | BIT2 | BIT3;             // Select P1.1 P1.2 P1.3 OA function

 

  SAC0DAC = DACSREF_1;                       // Select 1.5V int Vref as DAC reference

  SAC0DAT = 0x0FFF;                         // Set SAC DAC data to 1.5V

  SAC0DAC |= DACEN;                         // Enable DAC

  SAC0OA = NMUXEN + PMUXEN + PSEL_1 + NSEL_1;//Select positive and negative pin input

  SAC0OA |= OAPM;                           // Select low speed and low power mode

  SAC0PGA = GAIN2 + MSEL_0;                 // Set inverting PGA mode with Gain=8

  SAC0OA |= SACEN + OAEN;                   // Enable SAC and OA

 

  __bis_SR_register(LPM3_bits);             // Enter LPM3

}

Non-inverting  Mode:

#include

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watch dog timer

 

  P1SEL0 |= BIT1 + BIT2 + BIT3;             // Select P1.1 P1.2 P1.3 OA function

  P1SEL1 |= BIT1 + BIT2 + BIT3;             // Select P1.1 P1.2 P1.3 OA function

 

  SAC0OA = NMUXEN + PMUXEN + PSEL_0 + NSEL_1;//Select positive and negative pin input

  SAC0OA |= OAPM;                           // Select low speed and low power mode

  SAC0PGA = GAIN0 + GAIN2 + MSEL_2;         // Set Non-inverting PGA mode with Gain=17

  SAC0OA |= SACEN + OAEN;                   // Enable SAC and OA

 

  __bis_SR_register(LPM3_bits);             // Enter LPM3

}

 

DAC Buffer Mode : 就是把DAC数据输出,将SAC当作DAC使用

#include

 

unsigned int DAC_data=0;

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watch dog timer

 

  P1SEL0 |= BIT1;                           // Select P1.1 as OA0O function

  P1SEL1 |= BIT1;                           // OA is used as buffer for DAC

 

  PM5CTL0 &= ~LOCKLPM5;          // Disable the GPIO power-on default high-impedance mode

                                 // to activate previously configured port settings

 

  // Configure reference module

  PMMCTL0_H = PMMPW_H;                      // Unlock the PMM registers

  PMMCTL2 = INTREFEN | REFVSEL_2;           // Enable internal 2.5V reference

  while(!(PMMCTL2 & REFGENRDY));            // Poll till internal reference settles

 

  SAC0DAC = DACSREF_1 + DACLSEL_2 + DACIE;  // Select int Vref as DAC reference

  SAC0DAT = DAC_data;                       // Initial DAC data

  SAC0DAC |= DACEN;                         // Enable DAC

  SAC0OA = NMUXEN + PMUXEN + PSEL_1 + NSEL_1;//Select positive and negative pin input

  SAC0OA |= OAPM;                            // Select low speed and low power mode

  SAC0PGA = MSEL_1;                          // Set OA as buffer mode

  SAC0OA |= SACEN + OAEN;                    // Enable SAC and OA

 

  // Use TB2.1 as DAC hardware trigger

  TB2CCR0 = 100-1;                           // PWM Period/2

  TB2CCTL1 = OUTMOD_6;                       // TBCCR1 toggle/set

[1] [2] [3]
关键字:MSP430  使用指南  SAC  智能模拟组合 引用地址:MSP430使用指南32 -> SAC智能模拟组合

上一篇:MSP430使用指南14 -> I2C通信(eUSCI)
下一篇:如何在IAR中通过Watch窗口观察局部变量的值

推荐阅读最新更新时间:2024-10-26 20:41

TI - MCU - MSP430使用指南32 -> SAC智能模拟组合
SAC(Smart Analog Combo),即智能模拟组合,这个IP核出来的时间并不长,目前只用在了两个片子上:MSP430FR2353和MSP430FR2355。首先看一下SAC内部是个什么结构呢: 从上图可以看到,内部本质上就是一个OPA放大器,同时在运放的+和-的输入端有个选择开关,可以根据客户的需求搭建不同的电路,同时内部还集成一个12 bit的DAC模块,用于在一些使用环境下提供固定的电压,可以实现电压偏移的目的。 针对上述这个内部结构,我们进行细致的分析: 对于+输入端,有三个可以选择的通道: 00:引脚接入 01:12 bit DAC信号 10:内部Amp的输出,也就是其他SAC模块的
[单片机]
TI - MCU - <font color='red'>MSP430</font><font color='red'>使用指南</font>32 -> <font color='red'>SAC</font><font color='red'>智能</font><font color='red'>模拟</font><font color='red'>组合</font>
MSP430使用指南32 -> SAC智能模拟组合
SAC(Smart Analog Combo),即智能模拟组合,这个IP核出来的时间并不长,目前只用在了两个片子上:MSP430FR2353和MSP430FR2355。首先看一下SAC内部是个什么结构呢: 从上图可以看到,内部本质上就是一个OPA放大器,同时在运放的+和-的输入端有个选择开关,可以根据客户的需求搭建不同的电路,同时内部还集成一个12 bit的DAC模块,用于在一些使用环境下提供固定的电压,可以实现电压偏移的目的。 针对上述这个内部结构,我们进行细致的分析: 对于+输入端,有三个可以选择的通道: 00:引脚接入 01:12 bit DAC信号 10:内部Amp的输出,也就是其他SAC模块的
[单片机]
<font color='red'>MSP430</font><font color='red'>使用指南</font>32 -> <font color='red'>SAC</font><font color='red'>智能</font><font color='red'>模拟</font><font color='red'>组合</font>
在脉搏血氧计设计中应用含智能模拟组合 MSP430™ MCU 的好处
了解在脉搏血氧计设计中应用含智能模拟组合的 MSP430™ MCU 的好处 脉搏血氧计为非侵入式,只需夹在手指上,通过测量含氧或缺氧血液对红外线和红光的吸收情况的变化来监测人的心率和血氧饱和度 (SpO2)。正常情况下,健康人的血氧饱和度在 95% 到 100% 之间。使用类似图 1 所示的脉搏血氧计测量血氧饱和度可以帮助患者: 了解药物的效用 确定他们能否提高活动水平。 确定呼吸机是否必要或正在运行。 监测睡眠呼吸暂停症状发作情况。 有些人患有心力衰竭或哮喘之类影响血氧水平的疾病,也可以使用脉搏血氧计。 图 1:夹指脉搏血氧计 通常,光电二极管测量通过手指的红外线和红光。光电二极管传感器发出的信号包含一个大
[单片机]
在脉搏血氧计设计中应用含<font color='red'>智能</font><font color='red'>模拟</font><font color='red'>组合</font> <font color='red'>MSP430</font>™ MCU 的好处
新增智能模拟组合和宽温,MSP430升级了这些功能
近日,德州仪器(TI)宣布推出多款全新微控制器MSP430FR2355,TI超低功耗MSP微控制器事业部总经理Miller Adair针对TI新款MSP430的特性及应用做了全面且详细的介绍。 Miller Adair表示:“大家对MSP430的了解可能是从超低功耗开始的,但最近几年,除了在超低功耗上,在模拟集成、工艺制程等方面也一直在不断加大投入力度。” TI超低功耗MSP微控制器事业部总经理Miller Adair MSP430FR2355特点 MSP430FR2355是TI首次集成智能模拟组合(Smart Analog Combo,SAC)的处理器。Miller Adair介绍到,SAC内部集成多个1
[单片机]
新增<font color='red'>智能</font><font color='red'>模拟</font><font color='red'>组合</font>和宽温,<font color='red'>MSP430</font>升级了这些功能
德州仪器通过集成的智能模拟拓展其工业级微控制器产品组合MSP430i204x
德州仪器(TI)宣布推出集成了智能模拟的全新系列MSP430工业级微控制器(MCU),以实现高准确度、高精密度并节约成本。MSP430i204x MCU可满足工业和智能电网应用所需的-40℃至+105℃宽泛温度范围要求。全新MSP430 i系列MCU非常适用于占位传感器、远程温度与压力变送器、电源监控等各种成本敏感型工业领域。   全新MSP430i204x工业级MCU具有集成的智能模拟设置,包括多达四个集成式Σ-Δ模数转换器(ADC),这些转换器所提供的准确度可在2000:1的动态范围内将智能型计量产品的误差降低至0.5%。MSP430i204x MCU也包括无需外部晶体的内部数控振荡器(DCO)。此外,小型封装尺寸还能
[单片机]
TI通过集成的智能模拟拓展其工业级微控制器产品组合
近日,德州仪器(TI)宣布称,其推出集成了智能模拟的全新系列MSP430工业级微控制器(MCU),是为实现高准确度、高精密度并节约成本。MSP430i204x MCU可满足工业和智能电网应用所需的-40℃至+105℃宽泛温度范围要求。全新MSP430 i系列MCU非常适用于电源监控、占位传感器、远程温度与压力变送器等各种成本敏感型工业领域。 全新MSP430i204x工业级MCU具有集成的智能模拟设置,包括多达四个集成式Σ-Δ模数转换器(ADC),这些转换器所提供的准确度可在2000:1的动态范围内将智能型计量产品的误差降低至0.5%。MSP430i204x MCU也包括无需外部晶体的内部数控振荡器(DCO)。此外,小型封装尺
[单片机]
TI - MCU - MSP430使用指南1 -> MSP430简介及选型指南
前言:很幸运能够进入半导体这个充满未来和机遇的行业,同时深刻接触到TI公司MCU产品MSP430,接下来我会用一系列的文章来描述MSP430产品性能、优势、资料及使用方法。 首先先介绍一下TI公司,一个集高科技与创新于一体的企业,成立于1930年,成立之初是一家使用地震信号处理技术勘探原油的地质勘探公司,1951年正式改名德州仪器(Texas Instruments), 从制作第一个晶体管,到发明集成电路,再到后期的DLP技术,数字处理器DSP产品,超低功耗MCU MSP430产品,OMAP处理器,TI一直创新性的推出能影响世界的产品,在半导体行业保持着领先的地位,目前TI是全球最大的模拟半导体厂商,公司主要有两个业务:Ana
[单片机]
TI - MCU - <font color='red'>MSP430</font><font color='red'>使用指南</font>1 -> <font color='red'>MSP430</font>简介及选型指南
TI - MCU - MSP430使用指南2 -> CPU/CPUX
首先,先说明一下CPU位数代表的是什么意思,从市面上看8位,16位,32位甚至64位的MCU内核都已出现,位数指的是什么呢: 严谨说法:指CPU一次能处理的数据宽度,也就是参与运算的寄存器的数据长度。 MSP430 是16位的MCU 我们平时对MCU的C语言编程,都会经过编译器编译成机器码,也就是二进制,最后通过CPU内部寄存器(一般有20-100个)来实现运算数据,因此我们写的所有程序,实现的所有功能,最终都要由CPU内部寄存器的读写来完成。 CPU寄存器一般分为专用寄存器和通用寄存器,对于MSP430来说,总共有16个寄存器:R0 - R15, 其中四个(R0 – R3)为专用寄存器,其余的为通用寄存器,下面详
[单片机]
TI - MCU - <font color='red'>MSP430</font><font color='red'>使用指南</font>2 -> CPU/CPUX
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved