历史上的今天
今天是: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.初始化代码
/*************************************************************************
//名称 :ADC12Init
//参数 :uchar Times-0为单次转换,1为多次转换,
uchar Tube-0为单通告转换,1为多通道转换
uchar n-待转换的通道(只有在Tube为0的时候有用)
uchar V-0为内部参考电压,1为外部参考电压
//返回值:无
//功能 :完成ADC12Init的初始化
*************************************************************************/
void ADC12Init(uchar Times,uchar Tube,uchar n,unsigned char v)
{
if(Tube ==0) //单通道转换
{
if(v == 0)
{
ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V; //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V
ADC12MCTL0 = SREF_0; //使用内部电压,参考位为AVCC和AVSS
}
if(v == 1)
{
ADC12CTL0 = ADC12ON + SHT0_8; //使用外部电压,打开ADC12内核,8分频
ADC12MCTL0 = SREF_2; //使用外部电压,参考为为VeREF+和AVSS
}
if(Times == 0)ADC12CTL1 = SHP + CONSEQ_0; //单通道单次转换,采样信号来自采样定时器
if(Times == 1)ADC12CTL1 = SHP + CONSEQ_2; //单通道多次转换,采样信号来自采样定时器
switch (n) //选择通道
{
case 0:ADC12MCTL0 |= INCH_0;break;
case 1:ADC12MCTL0 |= INCH_1;break;
case 2:ADC12MCTL0 |= INCH_2;break;
case 3:ADC12MCTL0 |= INCH_3;break;
case 4:ADC12MCTL0 |= INCH_4;break;
case 5:ADC12MCTL0 |= INCH_5;break;
case 6:ADC12MCTL0 |= INCH_6;break;
case 7:ADC12MCTL0 |= INCH_7;break;
}
ADC12IE = n; //使能待转换通道的中断
ADC12CTL0 |= ENC; //开启软件使能
}
if(Tube ==1) //多通道转换
{
if(v == 0)
{
ADC12CTL0 = ADC12ON + SHT0_8 + MSC + REFON + REF2_5V; //使用内部电压,打开ADC12内核,8分频,内部参考电压2.5V
ADC12MCTL0 = SREF_0; //使用内部电压,参考位为AVCC和AVSS
}
if(v == 1)
{
ADC12CTL0 = ADC12ON + SHT0_8; //使用外部电压,打开ADC12内核,8分频
ADC12MCTL0 = SREF_2; //使用外部电压,参考为为VeREF+和AVSS
}
if(Times == 0)ADC12CTL1 = SHP + CONSEQ_1; //多通道单次转换,采样信号来自采样定时器
if(Times == 1)ADC12CTL1 = SHP + CONSEQ_3; //多通道多次转换,采样信号来自采样定时器
史海拾趣
|
【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引脚。 我自己的模块都是使用的同向的连接线,但 ...… 查看全部问答> |
|
某天笔记本电脑用的好好的突然卡死蓝屏,接着就是开机失败 然后我家里刚好没win系统 一个乌班图,一个macos 一个raspi,想做个pe或者U盘镜像这三个系统都不好使。折腾两天试了各种命令行不得行 转而用mac自带的启动转换做了win10双系统,然后顺利做 ...… 查看全部问答> |
|
我的问题: 1.电荷泵一般用在什么场合? 2.使用电荷泵有什么优缺点和注意事项? 比如从成本,EMI,PCB,纹波,X效率,带负载能力这几个角度 和LDO以及开关电源比起来怎么样? 3.运放 ...… 查看全部问答> |
|
如图,两个BUCK都是为了获得一个负压输出, 把输出端的输出电压和地进行了对调。 但是下面的电路还将输出的负压连接到输入端原先的地。 上面的图则没有,这是什么原因? 仅仅调换输出端的输出电压和地的位置就 ...… 查看全部问答> |
|
本帖最后由 模拟链新手 于 2022-11-15 19:52 编辑 用opa843仿真时放大 500mVpp,100Mhz方波信号时,用图一所示的电阻能够正常放大,改成图二就会有震荡,有大佬知道为什么吗 … 查看全部问答> |
|
转自:https://www.toutiao.com/article/7149130033838604834 1】导论 先来说一写题外话... 研究生入学后就被导师逼着学习神经网络,一开始非常盲目,先是在网上搜了一大堆的资料,各种什么“一文读懂卷积神经纹网络&rdquo ...… 查看全部问答> |




