新唐芯片学习笔记——ADC

概述
NuMicro®NUC029xAN 包含一个12位逐次逼近型模数转换器(SAR A/D转换器) ,包含8个输入通道;NuMicro®NUC029FAE 包含一个10位逐次逼近型模数转换器(SAR A/D转换器),包含8个通道。 NUC029xAN 的A/D转换器支持四种操作模式:单次模式、Burst 模式、单周期扫描模式和连续扫描模式;NUC029xAN 只支持单次模式。A/D转换器可以通过软件、PWM或外部STADC引脚触发转换。
特性
–模拟输入电压范围: 0~AVDD
–2位分辨率和10位精度保证(NUC029xAN)
–10位分辨率和8位精度保证(NUC029FAE)
– 多达8路单端模拟输入通道
或4组互补模拟输入通道 (NUC029xAN)
– 高达760 kSPS采样率(NUC029xAN)
–300 KSPS (VDD4.5V - 5.5V) 、200 KSPS (VDD2.5V - 5.5V)转换率(NUC029FAE)
– 四种操作模式 (NUC029FAE只支持单次模式)

  • 单次模式: A/D在指定通道完成一次转换
  • Burst模式: A/D转换器采样和转换指定单个通道,并将结果循序的储存在FIFO中
  • 单周期扫描模式: A/D按顺序从编号最小的通道到编号最大的通道转换一次所有选定的通道。
  • 连续扫描模式: A/D转换器连续执行单周期扫描模式直到软件停止A/D转换。

– A/D转换可以开始于:

  • 通过软件写1到ADST位(ADCR[11])
  • PWM触发,可选择延时多少周期开始转换
  • 外部STADC引脚

– 每个通道的转换结果存储在相应数据寄存器内,并带有有效和溢出标志
–每个通道拥有独立的数据寄存器(NUC029xAN)
– 转换结果可以和指定的值相比较, 当转换结果和比较寄存器的设定值相匹配时,用户可设定是否产生中断请求.
– 通道 7 支持 3 个输入源:

  • 外部模拟电压
  • 内部 Band-gap 电压
  • 内部温度传感器输出(NUC029xAN)

    基本配置
    ADC引脚功能在P1_MFP寄存器配置。建议关闭模拟输入引脚的数字输入通道,以避免漏电。用户
    可以通过配置P1_OFFD 寄存器关闭数字输入通道。ADC外设时钟可以在ADC_EN(APBCLK[28]) 使能。ADC外设时钟源在ADC_S(CLKSEL1[3:2]) 选择。时钟预分频在ADC_N(CLKDIV[23:16])设置。
    功能描述
    NUC029xAN:
    该A/D转换器通过逐次逼近的方式运行,分辨率为12位。该ADC有四种操作模式:单次模式、Burst
    模式、单次周期扫描模式和连续周期扫描模式。当用户想要改变操作模式或者模拟输入通道,为了
    避免错误的操作,软件必须提前清除ADST(ADCR[11])位为0。

    操作模式
    NUC029xAN A/D转换器支持四种操作模式: 单次模式, Burst模式, 单周期扫描模式和连续扫描模式

单次模式
A/D转换器只对指定的一个通道进行一次转换。操作流程如下:

  1. 当软件设置ADST(ADCR[11])位为1或外部触发输入,A/D转换器开始转换。
  2. 当A/D转换器转换结束,NUC029xAN 的转换结果储存在对应通道的A/D数据寄存器中,而
    NUC029FAE 的转换结果存储在A/D数据寄存器中。
  3. ADF(ADSR[0])位置1. 如果ADIE(ADCR[1]) 位置1, ADC中断将产生。
  4. 在A/D转换过程中,ADST(ADCR[11])位保持为1。在A/D转换结束后,ADST位自动清0且A/D
    转换器进入空闲状态。
    注 1: 如果在单次模式,软件使能不止一个通道,只有编号最小的通道被选中,其他使能的通道将被忽略。
    注 2: 在ADC转换时,如果ADST位被清0,BUSY位将被立即清0,ADC不能完成当前转换且A/D转
    换器直接进入空闲状态。

Burst模式
在Burst模式,A/D转换器采样和转换指定单个通道并将转换结果按序存放在FIFO中(最多8次采样)。操作步骤如下:

  1. 当ADCR 的ADST(ADCR[11])位通过软件或外部触发输入设置为1,A/D开始转换编号做小的通
  2. 当指定通道的A/D转换完成后,转换结果按顺序传输到FIFO中,只能通过A/D数据寄存器0访
    问。
  3. 当在FIFO中超过4次采样结果,ADF(ADSR[0]) 位将置1。这个时候,如果ADIE(ADCR[1])位置
    1,在A/D转换结束后,将产生一个ADC中断。
  4. 如果ADST(ADCR[11]) 位保持为1,将一直重复步骤2和3。当ADST(ADCR[11])位清0后,ADC
    将不能完成当前转换且A/D转换器直接进入空闲状态。
    注: 在Burst模式,如果软件使能不止一个通道,只有编号最小的通道被转换,其他使能的通道将被
    忽略。

单周期扫描模式
在单周期扫描模式,A/D转换器按编号从小到大采样和转换所有指定的通道一次。操作流程如下:

  1. 当ADST(ADCR[11])位通过软件或外部触发输入设置为1,编号最小的通道将开始A/D转换。
  2. 当每一个使能的通道A/D转换完成,转换结果按顺序传输到每个通道相应的A/D数据寄存器
  3. 当所有使能的通道转换完成,ADF(ADSR[0]) 位将置1。如果ADC中断功能使能,ADC中断产
    生。
  4. 在ADC完成一次周期转换,ADST(ADCR[11])位将自动清除为0且A/D转换进入空闲状态。如果
    在所有使能的ADC通道转换完成之前,ADST(ADCR[11])位清为0,ADC将不能完成当前转换
    且A/D转换器直接进入空闲状态。


连续扫描模式
在连续扫描模式下,A/D转换器循环转换CHEN(ADCR[7:0])使能的通道(最多8个通道),操作流程如下:

  1. 当ADST(ADCR[11])位通过软件或外部触发输入置1,A/D开始转换编号最小的通道。
  2. 当每个使能的通道A/D转换完成,每个使能通道的转换结果存储在每个使能通道对应的A/D寄存
    器中。
  3. 当A/D转换器按顺序完成所有使能通道的转换,ADF(ADSR[0])将置1 。如果ADC中断功能使
    能,ADC中断发生。如果软件没有清除ADST(ADCR[11])位,使能的通道将再一次从编号最小
    的通道开始转换。
  4. 如果ADST(ADCR[11])位保持为1,将重复执行步骤2~3。当ADST(ADCR[11])清0后,ADC不能
    完成当前转换且A/D转换器直接进入空闲状态。


外部触发输入采样和A/D转换时间
NUC029xAN:
在单次扫描模式,可以通过外部引脚触发A/D转换。TRGEN(ADCR[8]) 位设置为0使能ADC外部触发功能,设置TRGS(ADCR[5:4]) 为00b 选择外部触发输入为STADC 引脚。软件可以通过设置TRGCOND(ADCR[7:6]) 选择触发条件为下降/上升沿或低/高电平。如果选择电平触发,STADC引脚必须保持指定状态至少8个PCLK。在第9个PCLK,ADST(ADCR[11]) 位将被置1且开始转换。在电平触发模式下,如果外部触发输入保持有效状态,转换将持续进行。只有在外部触发条件消失,转换才会停止。如果选择边沿触发条件,高和低状态都至少持续4个PLCK。如果脉冲满足不了该条件,将被忽略。
注: 使能ADC外设时钟后,用户须在至少4个PCLK之后方能使能外部触发功能或使能ADC。

PWM 触发
NUC029xAN:
在单周期扫描模式,A/D可以通过PWM触发转换。设置TRGEN(ADCR[8])位为1使能ADC外部触发功能,设置TRGS(ADCT[5:4]为11b选择外部硬件触发输入源为PWM。当PWM触发使能时,设置PTDT(ADTDCR[7:0])位可以在PWM触发和ADC开始转换之间插入一个延时时间。
通过比较模式功能监控转换结果
NuMicro®NUC029系列ADC控制器提供两个比较寄存器(ADCMPR0 和 ADCMPR1)来监控最多两个通道。软件可以通过设置 CMPCH(ADCMPRx[5:3]) 选 择 监 控 哪 个 通 道 。
CMPCOND(ADCMPRx[2]) 位指定比较条件。如果CMPCOND(ADCMPRx[2]) 位为0,当转换结果小于CMPD[11:0](NUC029xAN)/ CMPD[9:0](NUC029xAN)的值时,内部匹配计数器将加1;如果CMPCOND(ADCMPRx[2]) 位为 1 ,当转换结果大于或等于 CMPD[11:0] ( NUC029xAN ) /CMPD[9:0](NUC029xAN)的值时,内部匹配计数器将减1。当CMPCH(ADCMPRx[5:3])指定的通道转换完成时,将自动触发一次比较。当比较结果和设定值相匹配,比较匹配寄存器加1,否则比较匹配计数器将清0。当匹配计数器到达(CMPMATCNT+1) 设置的值时,CMPF 位将置1,如果CMPIE(ADCMPRx[1])位设置为1,将产生一个ADC_INT 中断。在扫描模式,软件可以通过该功能监控外部输入引脚电压变化而不会增加软件负载。详细逻辑框图如下:

中断源
ADC 中断有 3 个中断源。当 ADC 完成转换, A/D 转换完成标志 ADF(ADSR[0]) 将被置 1 。
CMPF0(ADSR[1])和CMPF1(ADSR[2])为比较功能的比较标志位。当转换结果与ADCMPR0/1设置的条件匹配时,相应的位将置1。当ADF(ADSR[0]), CMPF0(ADSR[1]) 和 CMPF1(ADSR[2])标志有一个置1且相应中断使能位ADIE(ADCR[1])和CMPIE(ADCMPRx[1])置1,ADC中断将产生。软件可以清除这些标志位来取消中断请求。


/*************************ADC配置大体如下************************************************/
ADC:配置ADC:/* Enable ADC module clock */CLK_EnableModuleClock(ADC_MODULE);/* ADC clock source is 22.1184MHz, set divider to 7, ADC clock is 22.1184/7 MHz */CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_CLKDIV_ADC(7));配置ADC时一定要端口的数字输入功能禁止/* Disable the P1.0 - P1.3 digital input path to avoid the leakage current */GPIO_DISABLE_DIGITAL_PATH(P1, 0xF);    //0000 1111/* Configure the P1.0 - P1.3 ADC analog input pins */SYS->P1_MFP &= ~(SYS_MFP_P10_Msk | SYS_MFP_P11_Msk | SYS_MFP_P12_Msk | SYS_MFP_P13_Msk);SYS->P1_MFP |= SYS_MFP_P10_AIN0 | SYS_MFP_P11_AIN1 | SYS_MFP_P12_AIN2 | SYS_MFP_P13_AIN3 ;  GPIO  IP有个寄存器叫OFFD(OFF  Digital),关闭相应管脚的数字通路的意思。如果某个管脚配置
为模拟功能,例如:ADC、DAC、ACMP、SEG、COM、DH1、DH2、V1、V2、V3等功能,这
些管脚对应的OFFD  bit应该使能,关闭到数字区域的通路,避免内部数字器件不停的打开、关闭
而漏电 NUC029xAN  A/D转换器支持四种操作模式:  单次模式,  Burst模式,  单周期扫描模式和连续扫描模
式
ADC continuous scan mode sample code :  //开启ADC/* Power on ADC module */ADC_POWER_ON(ADC);/* Set the ADC operation mode as continuous scan, input mode as single-end andenable the analog input channel 0, 1, 2 and 3 */ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_CONTINUOUS, 0xF);/* clear the A/D interrupt flag for safe */ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);/* start A/D conversion */ADC_START_CONV(ADC);/* Wait conversion done */while(!ADC_GET_INT_FLAG(ADC, ADC_ADF_INT));//转换结束后的值会放在使能通道对应的A/D寄存器中。/* clear the A/D interrupt flag for safe */ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);for(u32ChannelCount = 0; u32ChannelCount < 4; u32ChannelCount++){i32ConversionData = ADC_GET_CONVERSION_DATA(ADC, u32ChannelCount);printf("Conversion result of channel %d: 0x%X (%d)\n", u32ChannelCount, i32ConversionData, i32ConversionData);}/* Wait conversion done */  ADC_ADF_INT: Convert complete interrupt flagwhile(!ADC_GET_INT_FLAG(ADC, ADC_ADF_INT));/* Stop A/D conversion */ADC_STOP_CONV(ADC);for(u32ChannelCount = 0; u32ChannelCount < 4; u32ChannelCount++){i32ConversionData = ADC_GET_CONVERSION_DATA(ADC, u32ChannelCount);printf("Conversion result of channel %d: 0x%X (%d)\n", u32ChannelCount, i32ConversionData, i32ConversionData);}/* clear the A/D interrupt flag for safe */ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);   //关闭ADC/* Disable ADC module */ADC_Close(ADC);/* Disable ADC IP clock */CLK_DisableModuleClock(ADC_MODULE);/* Disable External Interrupt */NVIC_DisableIRQ(ADC_IRQn);   

新唐芯片学习笔记——ADC相关推荐

  1. 新唐芯片学习笔记——概要

    ##新唐芯片学习笔记--概要 特性 编号信息列表与管脚定义 NuMicroNUC029 命名规则 特性 ARM®Cortex®-M0 内核 – 运行频率可达50MHz – 一个 24位系统定时器 – ...

  2. 新唐芯片学习笔记——UART

    新唐芯片学习笔记--UART 概述 NuMicro®NUC029 提供2个通用异步收/发器(UART)通道,UART支持普通速度UART,并支持流控制.UART控制器对从外设收到的数据执行串到并的转换 ...

  3. 新唐芯片学习笔记——GPIO

    新唐芯片学习笔记--GPIO 概述 NuMicro®NUC029 最多有40个通用I/O引脚,这些引脚和其它功能共享.40个引脚分为6个端口,分别命名为P0, P1, P2, P3, P4和P5,每个 ...

  4. 新唐M031学习笔记(一)定时器基础计数应用

    先上代码 void Hw_Timer0_Init(void) {//20:100ms 200:10ms 2000:1ms 20000:100us 200000:10us TIMER_Open(TIME ...

  5. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  6. HTML5新特性的学习笔记

    HTML5新特性的学习笔记 HTML 超文本标记语言: HyperText Markup Language 这份学习笔记的主要内容是HTML5的新标签 基于菜鸟教程的个人向学习笔记 菜鸟教程 文章目录 ...

  7. stm32学习笔记---ADC电压采集

    1.  ①电压输入范围 ADC 输入范围为:VREF- ≤ VIN ≤ VREF+.由 VREF-.VREF+ .VDDA .VSSA.这四个外部 引脚决定. 我们在设计原理图的时候一般把 VSSA ...

  8. STM32G431RBT6学习笔记----ADC入门模块

    目录 一.ADC相关概念 二.CubeMX配置 三.代码 一.ADC相关概念 1.11届竞赛题目涉及到模拟电压输入(ADC) 多次采样把尖峰去掉:多次采样的用DMA的方式 . 2.<产品手册&g ...

  9. 【学习笔记】新基建/新动能——部分学习笔记

    新基建背景下企业智能化升级的趋势 企业数智化:以远程办公为例 远程办公,指的是基于互联网.物联网.云计算等技术,通过第三方插件.软件.网站等工具,实现非本地化办公,如在家办公.异地办公.移动办公等模式 ...

最新文章

  1. mysql日志文件名称_MySQL 日志文件 说明
  2. 每日一皮:这就是成都马拉松???...
  3. 2017年9月2日普级组T2 跳格子
  4. 基于MapReduce的贝叶斯网络算法研究参考文献
  5. CF1109D Sasha and Interesting Fact from Graph Theory
  6. layui table 表格两种赋值方式下,data分页效果有效, url分页效果的失效 问题的解决。
  7. 大数据Hadoop(五):Hadoop架构
  8. 黑马程序员---三天快速入门Python机器学习(第一天)
  9. 记一次调试YOLOv5+DeepSort车辆跟踪项目的经过
  10. android烧写固定MAC,小系统SN号和MAC地址快速烧录的方法与流程
  11. 【原创】【android逆向系列】1:真机(小米note 3)root(从本人简书博客移入)
  12. 服务器网卡bond配置指引
  13. wei10-笔记本突然没有声音了!解决方法
  14. STM32cubeMX:双通道ADC(DMA)
  15. transforms.Compose和transforms.ToTensor()
  16. 【数据分析】搜索和非结构化数据分析值得关注的5大趋势
  17. [VLDB 2021]ICS-GNN_ Lightweight Interactive Community Search via Graph Neural Network
  18. Java实现根据URL下载图片到本地
  19. 【python之操作注册表】Python删除注册表节点下的值
  20. 软电话测试工具:SIPP

热门文章

  1. UI : 2022年iOS/Android UI设计规范(1)
  2. Lesson 17 The longest suspension bridge in the world 内容鉴赏
  3. C语言for循环使用方法
  4. c语言for的循环次数怎么算,c语言for循环如何使用
  5. SEO人员,为什么每隔一定周期要调整策略?
  6. 最新网易云盾滑块验证码破解,代码可以直接用
  7. 编码通信与魔术初步(五)——编码通信魔术入门《3 * 7的感应》
  8. F题:无线话筒扩音系统(本科)-- 2018年TI杯大学生电子设计竞赛
  9. ios xib 初始化高度_基于 xib 开发自适应高度 view
  10. 实验二:势函数实验 预习报告