历史上的今天
返回首页

历史上的今天

今天是:2025年04月21日(星期一)

正在发生

2020年04月21日 | 模数转换器ADC

2020-04-21 来源:eefocus

6.1 ADC结构及寄存器说明

模数转换器ADC的主要功能是将模拟信号转化为数字信号以便于微控制器进行数据处理

ADC按转换原理分为逐次比较型、双积分型和∑-∆型

逐次比较型ADC通过逐次比较将模拟信号转化为数字信号转换速度快,但精度较低,是最常用的ADC


双积分型ADC通过两次积分将模拟信号转化为数字信号,精度高,抗干扰能力强,但速度较慢,主要用于万用表等测量仪器


∑-∆型ADC具有逐次比较型和双积分型的双重优点,正在逐步广泛地得到应用


STM32ADC是12位逐次比较器,多达18个通道,可测量16个外部和2个内部信号源,各通道的转换可以单词、连续、扫描或间断模式执行,转换结果可以左对齐或右对齐方式存储在16位数据寄存器中


STM32ADC的模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阈值

输入时钟不得超过14MHz,由PCLK2经分频产生


STM32ADC主要由模拟多路开关、模拟至数字转换器、数据寄存器和触发选择等部分组成

转换通道分为规则通道和注入通道两组


规则通道由最多16个通道组成,按顺序转换

注入通道由最多4个通道组成,可插入转换

ADC使用的GPIO引脚

ADC1的通道16内部与温度传感器相连

通道17内部与参考电源VREFINT相连


ADC通过20个寄存器进行操作

 

6.2 ADC设计实例

    6.2.1 用ADC1规则通道实现外部模拟信号的模数转换

规则通道相关的寄存器及其内容

ADC规则通道初始化子程序

//ADC1初始化子程序

 

void Adc1_Init(void)

{

    RCC->APB2ENR |= 1<<3;         //开启GPIOB时钟

 

    RCC->APB2ENR |= 1<<9;         //开启ADC1时钟

 

    GPIOB->CRL &=0xffffff00;     //PB.01(IN9)、PB.00(IN8)模拟输入

 

    ADC1->CR1 |= 1<<8;             //扫描模式

 

    ADC1->CR2 |= 1<<20;         //规则通道外部触发:TIM1_CH1

 

    ADC1->SQR1 |= 1<<20;         //规则通道序列长度:2

 

    ADC1->SQR3 |= 9;             //第1个转换通道:IN9

 

    ADC1->SQR3 |= 8<<5;          //第2个转换通道:IN8

 

    ADC1->CR2 |= 1;              //开启ADC

 

    ADC1->CR2 |= 1<<2;           //校准ADC

 

    while(ADC1->CR2 & 1<<2);     //等待校准完成

}

ADC规则通道处理子程序

//ADC1处理子程序

 

void Adc1_Proc(void)

{

    if(ADC1->SR & 2) //EOC=1(转换结束)

    {    

        adc1_dat[adc1_num] = ADC1->DR; //读取转换值

 

        if(++adc1_num == 2)

            adc1_num = 0;

    }

}

 

6.2.2 用ADC1注入通道实现内部温度传感器的温度测量

STM32中有一个温度传感器,与ADC1的通道16相连,可以用来测量芯片的温度

温度传感器的最大采样时间为17.1ms,温度范围为-40~125°C,温度计算公式如下:

             

其中:V为温度传感器电压值,N为模数转换后的数字值


注入通道相关的寄存器及其内容

ADC注入通道初始化子程序

//ADC1初始化子程序

 

void Adc1_Init(void)

{

    RCC->APB2ENR |= 1<<3;                 //开启GPIOB时钟

 

    RCC->APB2ENR |= 1<<9;                 //开启ADC1时钟

 

    GPIOB->CRL &=0xffffff00;         //PB.01(IN9)、PB.00(IN8)模拟输入

 

    ADC1->CR1 |= 1<<8;                    //扫描模式

 

    ADC1->CR2 |= 1<<20;                   //规则通道外部触发:TIM1_CH1

 

    ADC1->SQR1 |= 1<<20;                  //规则通道序列长度:2

 

    ADC1->SQR3 |= 9;                      //第1个转换通道:IN9

 

    ADC1->SQR3 |= 8<<5;                   //第2个转换通道:IN8

 

    ADC1->CR2 |= 1<<10;                   //注入通道自动转换

 

    ADC1->CR2 |= 1<<23;                   //开启温度传感器

 

    ADC1->SMPR1 |= 5<<18;                 //SMP16[2:0] =5(55.5)

                                        // (55.5+12.5)/4MHz=17s

 

    ADC1->JSQR |= 0x10<<15;             //JSRR[4:0]=0x10(通道16)

 

    ADC1->CR2 |= 1;                     //开启ADC

 

    ADC1->CR2 |= 1<<2;                  //校准ADC

 

    while(ADC1->CR2 & 1<<2);            //等待校准完成

}

ADC注入通道处理子程序

//ADC1处理子程序

 

void Adc1_Proc(void)

{

    if(ADC1->SR & 2)                     //EOC=1(转换结束)

    {    

        adc1_dat[adc1_num] = ADC1->DR;   //读取转换值

 

        if(++adc1_num == 2)

            adc1_num = 0;

    }

 

    if(ADC1->SR & 4)                     //JEOC=1(注入通道转换结束)

    {

        ADC1->SR &= ~6;                 //清除JEOC和EOC

 

        adc1_jdat = ADC1->JDR1;         //读取转换值

    }

}

推荐阅读

史海拾趣

GTE Microcircuits公司的发展小趣事
复合放大器因其高性能特点,在通信、音频、医疗、测试测量等多个领域有广泛应用。例如,在通信系统中用于信号放大和处理;在音频设备中用于提高音质和音量;在医疗设备中用于生物电信号的放大等。
Carlisle Interconnect Components公司的发展小趣事

Carlisle Interconnect Components公司自创立之初,便以创新和突破为核心竞争力。在电子连接器领域,公司凭借其深厚的技术积累和敏锐的市场洞察力,成功研发出一系列具有高性能和稳定性的连接器产品。这些产品不仅满足了市场对高效、可靠连接的需求,更在多个关键领域实现了技术突破,为公司赢得了市场的广泛认可。

ARRA Inc公司的发展小趣事

在追求经济效益的同时,Carlisle Interconnect Components公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,公司还积极参与社会公益事业,为社会做出贡献。这种负责任的态度不仅赢得了社会各界的认可,更为公司的长远发展奠定了坚实的基础。

这五个故事展示了Carlisle Interconnect Components公司在电子行业中的发展历程和取得的成就。通过不断创新、品质管理、技术研发、战略合作以及履行社会责任等措施,公司逐渐在电子连接器领域树立起了自己的品牌形象和市场地位。

Advanced Photonix公司的发展小趣事

Advanced Photonix一直注重研发团队的建设和培养。公司投入大量资源用于研发创新,鼓励团队成员不断探索新技术和新应用。在这种氛围下,公司的研发团队不断取得新的突破和进展。他们成功开发出了一系列具有自主知识产权的光电产品和解决方案,这些产品不仅提升了公司的技术实力,也为公司的长期发展奠定了坚实的基础。

福斯特(FIRST)公司的发展小趣事
ESP系统通常采用CAN总线协议进行数据传输。CAN总线是一种广泛应用于汽车领域的串行通信协议,具有高速、可靠、抗干扰能力强等特点。
安森德(Ascend)公司的发展小趣事

随着公司业务的不断扩展,安森德对资金的需求也日益增加。在这个关键时刻,公司成功获得了数千万人民币的战略投资。这笔资金为公司的研发、生产和市场拓展提供了有力支持。在融资的助力下,安森德加快了规模扩张的步伐,先后在多个城市设立了研发中心和办事处,进一步提升了公司的研发实力和市场覆盖能力。

问答坊 | AI 解惑

IAR5.3(评估版)编译老是提示如下的错误,是怎么一回事啊

Error[Lp021]: the destination for compressed initializer batch \"P2 mid-1\" is placed at an address that is dependent on the size of the batch, which is not allowed when using packbits compression. Consider using \"initialize by c ...…

查看全部问答>

请教:LCD怎样‘横屏’转‘竖屏’

我用的是2450,问一下LCD横屏转竖屏,驱动程序里除了在头文件处修改分辨率外,还要修改什么地方呢? 我只修改了头文件处定义的分辨率的情况下,屏幕变窄了(部分屏幕黑色没图象),竖直方向靠下的部分没被显示出来。 不知道在哪(几)个文件里的函 ...…

查看全部问答>

下了个WINCE6.0用的GPS软件,为什么EXE文件运行的时候要让我显示打开方式呢?

rt 我用的是OMAP3530开发板,内置GPS模块,WINCE6.0环境已经建立,网上下了个GPS软件,EXE格式的用U盘考进去板子里打不开,出现类似于WINDOWS下的让你选择打开方式的窗口,不是EXE是可执行文件吗?而且下的是WINCE6.0可用的版本,谢谢各位了!…

查看全部问答>

ATD*99***1这条AT命令是做什么用的

attach->pdp activation->ATD*99***1, ATD*99***1这条AT命令是做什么用的? PDP激活不就可以传数据了吗?…

查看全部问答>

wince 调试问题

   用ActiveSync直接在开发板上调试程序(wince6.0系统)。调试一次正常,但是结束调试再继续调试时,就会出现错误,有时候是部署不成功,有时候是部署成功,程序不能运行,都是说wince的存储内存不足。但是在wince的控制面板看到,存储 ...…

查看全部问答>

对uCOS移植STM32官方例程的一点疑惑

                                 这两天,下了个ucos在STM32F103ZE-SK开发板上移植的官方例程(uCOSII-ST-STM32F103ZE-SK),这其中有两个文件夹,u ...…

查看全部问答>

电压比较器LM393

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 电压比较器LM393  用正负12V 供电, 其输出的高电平、和低电平分别为多少呀?   我测试的高为12V, 低为-0.8V, 不知对否?    希望大家能给出自己的测试结果。 &nb ...…

查看全部问答>

吉时利2110型5½位双显示数字万用表(二)

    操作简单 2100操作简单直观,开箱即可使用。前面板易于理解和操作。其KI-Tool和KI-Link软件允许用户通过GPIB(如果安装了)或USB快速控制仪器,记录测量,以及显示数据的时间序列图。其LabView®和IVI驱动则给高级客户开放 ...…

查看全部问答>