历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-10-10 来源:eefocus

几个术语:

 

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;           //多通道多次转换,采样信号来自采样定时器  

推荐阅读

史海拾趣

绿宝石(BERYL)公司的发展小趣事

随着国内市场的饱和,绿宝石公司开始积极拓展国际市场。公司加强了与国际知名企业的合作,共同开发新产品、新技术。同时,绿宝石公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过一系列的市场拓展和国际化战略,绿宝石公司的国际影响力不断提升。

Advantech公司的发展小趣事

绿宝石公司自创立之初,便致力于电子材料领域的研发。某年,公司研发团队成功开发了一种具有优异性能的绿宝石电子材料,这种材料在高频、高温等极端环境下仍能保持稳定性能,为电子行业带来了革命性的变革。随着这一技术的广泛应用,绿宝石公司在行业内逐渐树立了技术领先的形象,市场份额稳步上升。

康奈特(CNNT)公司的发展小趣事

康奈特(CNNT)公司在电子行业的光学镜片领域一直保持着领先地位。早期,公司面临着镜片透光性、耐磨性等技术瓶颈。为了突破这些限制,康奈特投入大量研发资源,成功研发出了一种新型镜片材料,大幅提升了镜片的性能。这一创新不仅为公司赢得了市场认可,也为整个行业树立了新的技术标杆。

Advanced Thermal Products Inc公司的发展小趣事

为了保持技术领先,ATP公司积极与高校、科研机构等进行技术合作。他们共同研发新的热管理技术,不断推动产品升级换代。同时,公司还加大研发投入,引进先进的研发设备和人才,为公司的技术创新提供了有力支持。这些举措使得ATP公司在热管理领域的技术实力得到了显著提升。

Alliance Memory公司的发展小趣事

随着国内市场的不断饱和,ATP公司开始将目光投向国际市场。他们制定了国际化发展战略,通过设立海外分支机构、参加国际展会等方式拓展海外市场。同时,公司积极与国际知名企业合作,共同开发新产品、新技术,实现了互利共赢。这些举措为ATP公司的全球化发展奠定了坚实基础。

请注意,上述故事仅为虚构内容,不代表Advanced Thermal Products Inc公司的真实发展历程。如需了解该公司的真实情况,建议查阅相关资料或访问其官方网站。

Allegro公司的发展小趣事

随着技术的不断积累,ATP公司开始加大产品创新的力度。他们推出了一系列具有竞争力的热管理产品,不仅满足了市场对于高效散热的需求,还凭借其优异的性能赢得了客户的青睐。同时,公司积极拓展市场,与多家电子设备制造商建立了长期合作关系,产品广泛应用于手机、电脑、服务器等领域。

问答坊 | AI 解惑

【Arduino】168种传感器与执行器模块系列实验(221)---360°激光雷达模块

本帖最后由 eagler8 于 2022-11-17 05:47 编辑 37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流 ...…

查看全部问答>

[RTT&瑞萨超低功耗MCU RA2L1开发板]测评之PWM模块介绍与测试,呼吸灯实现

[localvideo]c7124e9a44105c641495c3ea541222be[/localvideo]   PWM模块介绍 参考<<Renesas RA2L1 Group User’s Manual: Hardware>>的章节<<320. General PWM Timer (GPT)>> 特征 4通道GPT32,6通道GPT1 ...…

查看全部问答>

【Sipeed 高云GW2A FPGA开发板】开发环境体验之第一个程序之点灯

资料下载 开发板资料 https://dl.sipeed.com/shareURL/TANG/Primer_20K 只能一个一个文件下载,如果能打包下载更好。     芯片资料 http://www.gowinsemi.com.cn/prod_view.aspx?TypeId=10&FId=t3:10:3&Id=167# ...…

查看全部问答>

【行空板 Python编程学习主控板】扩展板测试与WS2812驱动

由于疫情原因,被封控了,扩展板刚刚收到,micro:bit的连接器,TB买的,一直还没有发货,所以,先不测试了,同时打样的一块WS2812的板子也到了,就连起来测试一下。 这里使用的是行空板上的P22引脚。 我自己的模块都是使用的同向的连接线,但 ...…

查看全部问答>

固态硬盘不能格式化,PE里也不行

某天笔记本电脑用的好好的突然卡死蓝屏,接着就是开机失败 然后我家里刚好没win系统 一个乌班图,一个macos 一个raspi,想做个pe或者U盘镜像这三个系统都不好使。折腾两天试了各种命令行不得行 转而用mac自带的启动转换做了win10双系统,然后顺利做 ...…

查看全部问答>

一个有趣的电路

国外视频网站看到的一个手动调光电路,有兴趣的朋友可以分析看看。       …

查看全部问答>

电荷泵一般用在什么场合?

我的问题: 1.电荷泵一般用在什么场合?   2.使用电荷泵有什么优缺点和注意事项?    比如从成本,EMI,PCB,纹波,X效率,带负载能力这几个角度    和LDO以及开关电源比起来怎么样?   3.运放 ...…

查看全部问答>

BUCK怎么输出负压?

如图,两个BUCK都是为了获得一个负压输出, 把输出端的输出电压和地进行了对调。   但是下面的电路还将输出的负压连接到输入端原先的地。 上面的图则没有,这是什么原因?   仅仅调换输出端的输出电压和地的位置就 ...…

查看全部问答>

运放反馈电阻值得选取问题

本帖最后由 模拟链新手 于 2022-11-15 19:52 编辑 用opa843仿真时放大 500mVpp,100Mhz方波信号时,用图一所示的电阻能够正常放大,改成图二就会有震荡,有大佬知道为什么吗           …

查看全部问答>

转一篇文章:卷积神经网络CNN完全指南。写的蛮好的。

转自:https://www.toutiao.com/article/7149130033838604834   1】导论 先来说一写题外话... 研究生入学后就被导师逼着学习神经网络,一开始非常盲目,先是在网上搜了一大堆的资料,各种什么“一文读懂卷积神经纹网络&rdquo ...…

查看全部问答>