历史上的今天

今天是:2024年10月10日(星期四)

正在发生

2019年10月10日 | MSP430学习笔记(4)ADC12

发布者:万童洁 来源: eefocus关键字:MSP430  学习笔记  ADC12 手机看文章 扫描二维码
随时随地手机看文章

几个术语:

 

a)分辨率(LSB):表示输出数字量变化一个相邻数码所需要输入模拟电压的变化量,它定义为转换器的满刻度电压与2的n次幂,其中n为ADC的位数。

b)量化误差:由于有限数字对模拟值进行离散取值(量化)而引起的误差。因此,量化误差理论上为一个单位分辨率。即正负12LSB。

c)转换精度:反应实际的ADC模块在量化上与理想的ADC模块进行模数转换的差值。

d) 转换时间:指ADC完成一次模/数转换所需要的时间。


2.结构:            

                                                          

3. 参考电压发生器:

a)指需要的基准信号,通常为电压基准。MSP430 ADC12内置参考电源,有6种可编程选择。

b)模拟多路器:当多个模拟信号进行采样并进行A/D转换时,为了公用一个转换内核,模拟多路需要分时地将多个模拟信号连通,每次连通一个信号采样并转换。

c)MSP430 ADC12配置有8路外部通道和4路内部通道,通过A0~A7实现外部8路模拟信号输入,4路内部通道可以将多个基准电压和内部温度传感器的输出作为待转换模拟输入信号。

d)具有采样与保持功能的12转化器内核:ADC12内核是一个12位的模数转换器,并能够将结果存放在转换器存储器中。该内核使用两个可编程的参考电压(Vr+和Vr-)定义转换的最大值和最小值。公式为:Nadc = 4095 * (Vin - Vr)/(Vr+ -Vr)

e)采样转换所需的时序控制电路:提供采样及转换所需要的各种信号:ADC12CLK转换时钟,SAMPCON采样及转换信号、SHT控制的采样周期、SHS控制的采样触发来源选择、ADC12SSEL选择的内核时钟源及AC12DIV选择的分频系数。


4. ADC12寄存器

a)转换控制寄存器ADC12CTL0

i.ADC12SC采样/转换控制位:当ENC =1,ISSH = 0且SHP = 1时,ADC12SC由0到1启动A/D转换,A/D转换完成后ADC12SC自动复位,当SHP = 0时,ADC12SC保持高电平采样,ADC12SC复位时启动一次转换。

ii.NC转换允许位:0为初始状态,不能启动A/D转换;1为首次转换由SAMPCON上升沿启动。

iii.ADC12TIVE转换时间溢出中断允许位:0:为没发生转换时间溢出,1为发生转换时间溢出。

iv.ADC12OVIE溢出中断允许位:0为没有发生溢出,1为发生溢出。

v.ADC12ON:ADC12内核控制位:0为关闭ADC12内核,1为打开。

vi.REFON:参考电压控制位,0为内部参考电压发生器关闭,1为内部参考电压发生器打开。

vii.2.5V内部参考电压的电压值选择位:0为选择1.5V,1为选择2.5V。

viii.MSC多次采样/转换位:只有当SHP =1时才有效,0为每次转换需要SHI信号的上升沿触发采样定时器,1为仅首次转换由SHI信号的上升沿触发采样定时器,而后采样转换将在前一次转换完成后立即进行。

ix.SHT1/SHT0采样保持定时器:定义了保存在转换结果寄存器ADC12MEM8_ADC12MEM15和ADC12MEM0~ADC12MEM7中的转换采样时序与采样时钟ADC12CLK的关系,采样周期时ADC12CLK周期乘4的n倍。N为2的SHITx次幂。


b)转换控制寄存器ADC12CTL1

i.CSStartAdd转换存储地址位,可以定义单次转换地址或序列转换的首地址。

ii.SHS采样输入触发源选择:0为ADC12SC,1为Timer_A.OUT1,2为Timer_B.OUT0,3为Timer_B.OUT1。

iii.SHP采样信号(SAMPCON)选择控制位:0为信号源来自采样触发输入信号,1为信号源来自采样定时器,由采样输入信号的上升沿触发采样定时器。

iv.ISSH采样输入信号方向控制位:0为采样输入信号为同向输入,1为反向。

v.ADC12DIV:ADC12时钟源分频因子选择为。

vi.ADC12SSEL ADC12内核时钟源选择:0为ADC12内部时钟源ADC12OSC(默认)为1为ACLK,为2为MCLK,为3为SMCLK。

vii. CONSEQ转换模式选择位:0为单通道单次转换模式,1为序列通道单次转换模式,2为序列通道多次转换模式,3为序列通道多次转换模式。

viii. ADC12BUSY ADC12忙标志位:0表示没有活动,1表示忙。


c)ADC12MEM0~ADC12MEM15转换存储寄存器:16位寄存器,用来存放A/D转换结果,只用其中低12位。


d)ADC12MCTLx转换存储器控制寄存器:

i.EOS:序列结束控制位:0为序列没有结束,1为结束。

ii.Sref参考电压源选择位:    

                                         

iii.INCH选择模拟输入通道:该4位表示的二进制数为所选的模拟输入通道:

e)ADC12IFG中断标志寄存器:ADC12IFGx置位表示转换结束,并且转换结果已经装入转换存储寄存器;ADC12IFGx复位表示ADC12MEMx被访问。


f)ADC12IE中断使能寄存器:1为允许响应的ADC12IFGx在置位时发生的中断请求服务,0为禁止ADC12IFGx在置位时发生的中断请求服务。


g)ADC12IV中断向量寄存器。

5.初始化代码


  1. /************************************************************************* 

  2. //名称    :ADC12Init 

  3. //参数    :uchar Times-0为单次转换,1为多次转换, 

  4.          uchar Tube-0为单通告转换,1为多通道转换 

  5.          uchar n-待转换的通道(只有在Tube为0的时候有用) 

  6.          uchar V-0为内部参考电压,1为外部参考电压 

  7. //返回值:无 

  8. //功能    :完成ADC12Init的初始化 

  9. *************************************************************************/  

  10. void ADC12Init(uchar Times,uchar Tube,uchar n,unsigned char v)  

  11. {  

  12.     if(Tube ==0)                                                //单通道转换  

  13.     {  

  14.         if(v == 0)  

  15.         {  

  16.             ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V;   //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V  

  17.             ADC12MCTL0 = SREF_0;                                    //使用内部电压,参考位为AVCC和AVSS  

  18.         }  

  19.         if(v == 1)  

  20.         {  

  21.             ADC12CTL0 = ADC12ON + SHT0_8;               //使用外部电压,打开ADC12内核,8分频  

  22.             ADC12MCTL0 = SREF_2;                                //使用外部电压,参考为为VeREF+和AVSS              

  23.         }  

  24.         if(Times == 0)ADC12CTL1 = SHP + CONSEQ_0;           //单通道单次转换,采样信号来自采样定时器  

  25.         if(Times == 1)ADC12CTL1 = SHP + CONSEQ_2;           //单通道多次转换,采样信号来自采样定时器  

  26.         switch (n)                          //选择通道  

  27.         {  

  28.         case 0:ADC12MCTL0 |= INCH_0;break;  

  29.         case 1:ADC12MCTL0 |= INCH_1;break;  

  30.         case 2:ADC12MCTL0 |= INCH_2;break;  

  31.         case 3:ADC12MCTL0 |= INCH_3;break;  

  32.         case 4:ADC12MCTL0 |= INCH_4;break;  

  33.         case 5:ADC12MCTL0 |= INCH_5;break;  

  34.         case 6:ADC12MCTL0 |= INCH_6;break;  

  35.         case 7:ADC12MCTL0 |= INCH_7;break;  

  36.         }  

  37.         ADC12IE = n;                                //使能待转换通道的中断  

  38.         ADC12CTL0 |= ENC;                           //开启软件使能  

  39.     }  

  40.     if(Tube ==1)                                                //多通道转换  

  41.     {  

  42.         if(v == 0)  

  43.         {  

  44.             ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V;   //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V  

  45.             ADC12MCTL0 = SREF_0;                                    //使用内部电压,参考位为AVCC和AVSS  

  46.         }  

  47.         if(v == 1)  

  48.         {  

  49.             ADC12CTL0 = ADC12ON + SHT0_8;                   //使用外部电压,打开ADC12内核,8分频  

  50.             ADC12MCTL0 = SREF_2;                                //使用外部电压,参考为为VeREF+和AVSS              

  51.         }  

  52.         if(Times == 0)ADC12CTL1 = SHP + CONSEQ_1;           //多通道单次转换,采样信号来自采样定时器  

  53.         if(Times == 1)ADC12CTL1 = SHP + CONSEQ_3;           //多通道多次转换,采样信号来自采样定时器  

[1] [2]
关键字:MSP430  学习笔记  ADC12 引用地址:MSP430学习笔记(4)ADC12

上一篇:MSP430学习笔记——MSP430的系统时钟
下一篇:MSP430学习笔记(2)定时器A

推荐阅读

  由于中国市场低迷导致的产品价格暴跌以及重要市场的光伏电站开发延误,大型光伏逆变器制造商SMA Solar Technology已下调了全年收入和利润指导值。      根据修订后的收入指导值,SMA Solar预计收入将连续第三年下滑。    SMA Solar表示,公司将2018年的预期收入调低至8–8.5亿欧元,低于此前9–10亿欧元的预期值。   由于新重组费用详情...
中国储能网讯:南方电网公司在近日举办的第六届澜湄电力企业高峰会上透露,该公司正与澜湄区域各国探讨开展更高电压等级的电网互联,并愿意发挥技术优势,推动标准共享,在更广阔的市场空间实现更大规模的电力资源优化配置,打造共同电力市场。 电力互联互通是构建澜湄 国家命运共同体重要举措 老挝老中铁路供电项目是澜湄国家首个电网BOT(建设-经营...
紫光国微发布公告称,公司为提升核心竞争力、增强盈利能力,拟公开发行可转换公司债券(以下简称“可转债”)募集资金不超过 15 亿元,扣除发行费用后的募集资金净额全部投资于新型高端安全系列芯片研发及产业化项目、车载控制器芯片研发及产业化项目以及补充流动资金。 随着数字化和科技的迅猛发展,物联网、5G、云计算、大数据、工业互联 网等新兴市...
据京东方微信公众号消息显示,今年以来,京东方专利申请超4500件,其中发明专利超90%,海外专利超33%。另外,京东方在OLED、传感、人工智能、大数据等领域专利申请占比超50%;新增授权专利超3900件,其中海外授权专利超1200件。据悉,京东方发布的业绩预告显示,预计2021年前三季度归属于上市公司股东的净利润198.62亿元-200.62亿元,同比增长702%-710%。...

史海拾趣

问答坊 | AI 解惑

自助银行安全使用常识

不法分子通常利用银行下班后的时间作案,因此持卡人在银行下班后,尤其是在夜间或凌晨进入自助银行使用ATM机时应格外提高警惕,观察周围有无尾随、偷窥等可疑情况。所以要尽量避免在太晚的时候进入自助银行,或避免进入位置僻静的自助银行。 而且进 ...…

查看全部问答∨

原创分享64*24点阵LED显示屏

自制64*24点阵LED点阵显示板,包括电路图、电路板图、源代码和显示效果即将逐步上传中!!! 电路图和电路板图样图及材料清单钧包含在附件的一个pdf文件中。 汇编语言源程序文件和目标二进制代码文件在附件的一个RAR文件中 其余文件逐步待传中…

查看全部问答∨

基于虚拟仪器技术的柴油机喷油器故障诊断研究

基于虚拟仪器技术的柴油机喷油器故障诊断研究…

查看全部问答∨

动态加载驱动程序第一次成功,可卸载后,第二次加载,就会出现StartService失败,错误代码是2 ????????

代码为: BOOL InstallDevice() {         if (m_hDevice!=INVALID_HANDLE_VALUE)                 return FALSE;         ////////////////////////////// ...…

查看全部问答∨

关于vivi 移植的问题

我借了块班子,但没有光盘了,所以没有了VIVI的源代码了 我下了个VIVI的代码,用的DM9000, 而我板子上用的是CS8900 8900的驱动VIVI的目录有了也 现在VIVI 编译后,默认的是用DM9000,我要修改哪些地方?才能让他默认为CS8900呢?? 谢谢…

查看全部问答∨

wince 如何使用Makefile

由于一些原因,我的ce工程需要使用makefile来编译。 但我发现eVC的makefile 老是出错。 我很简单的生成一个MFC exe工程t2,什么也没加,用IDE编译很正常。但我在project->export makefile后在console中使用 NMAKE /f "t2.vcn" CFG="t3 - ...…

查看全部问答∨

该问题如何解决?

求哪位大侠指点:一个带22KW电机的交流接触器,它的线圈上要是加一个电容的话,选多大的?如何加,是直接并联到线圈上吗?还是和一个电阻串联在一起再并联到线圈上吗?那么它们的电阻阻值和电容大小分别是多少?求解,在此谢过。…

查看全部问答∨

STR71x的定时器不是很好

                                 相用来定时任一时间长度(在处理器的能力之内)不好做,无论你定多长时间都 是要等 到16位定时器溢 ...…

查看全部问答∨

STM32F103VCT6中TIM4remap后会与FSMC冲突吗?

TIM4 remap后其CH1-CH4分别与FSMC的A17,A18,D0,D1,我只用TIM4_CH1且不使用FSMC的A17和A18,这样TIM4_CH1是否能正常输出,是否会影响FSMC的D0和D1? 谢谢!…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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