当前位置: 首页 > news >正文

YTM32的模数转换器ADC外设模块详解

文章目录

    • 简介
    • 原理与机制
      • ADC转换器的上下电和省电模式
      • ADC转换结果和FIFO
      • ADC转换队列的工作模式
      • ADC转换器的触发信号
      • ADC转换器的看门狗
      • 中断事件和DMA
    • 应用要点(软件)
    • 总结
    • 参考文献

简介

YTM32的ADC转换器外设最多可以集成32个输入通道,最高12b转换精度,最快可以支持2M Sps的12b采样。ADC转换器外设内部的主要结构,如图x所示,包括ADC输入通道复用器、ADC转换器、FIFO等。

在这里插入图片描述

图x ADC外设模块框图

YTM32B1ME上集成了两个ADC转换器,每个转换器实际仅对外开放了24个输入通道,并且ADC0还在芯片内部绑定了若干采样点(所谓的external channel)。如图x所示。

在这里插入图片描述

图x ADC在芯片内部绑定的采样信号

ADC作为一个模拟外设,通常会使用两个时钟源:使用总线时钟驱动数字部分的电路,例如通过总线访问寄存器等;通过功能时钟驱动模拟部分的ADC转换器工作。如图x所示。

在这里插入图片描述

图x ADC外设的总线时钟和功能时钟

这里有两个要点:

  • 通过IPC可以选择ADC转换器的输入时钟源。实际上,ADC的模拟电路部分也不一定能消化掉来自于IPC的时钟源,内部还专门设计的分频器。模拟电路对频率敏感,因此特定的电路也会要求能够处理的频率信号在一定范围内。YTM32的ADC转换器最高可以使用16MHz的时钟信号作为ADC转换器的时钟源。
  • 模拟和数字部分在交换数据时,需要处理同步(同支持高频率的定时器)。

ADC采样的时序,通常包含采样(Sampling)和保持(Holding)两个阶段,如图x所示。采样和保持在ADC的时钟驱动下工作,时间越长,采样的结果越接近真实值,但速度也会变慢。若用户需要使用更快的采样速度,只要提高ADC转换时钟和缩短采样保持阶段的时间即可,但产生的转换结果就可能损失一些准确度了。
在这里插入图片描述

图x ADC转换中的采样保持时间

YTM32的ADC外设,为了有效地使用电能,将ADC转换器上电和掉电的控制接口也开放给用户了。要知道,ADC作为一个模拟外设,是个耗电大户(另一个耗电大户是PLL),如果在不需要执行ADC转换任务的阶段停电,可能有效减少功耗,也能控制芯片的发热。但是,ADC上电和下电过程,也都是需要一定时间的,上电过程需要等待供电稳定后才能启动ADC转换任务,ADC需要把正在执行的任务执行完毕,清理好工作现场之后才能顺利下电。这些时间,都将会在使用ADC转换器的过程中由用户配置。

原理与机制

ADC转换器的上下电和省电模式

MCU上电后,软件通过IPC模块,为ADC外设模块开放了总线时钟供应,但此时,ADC转换器的供电还没有加上,ADC外设模块处于掉电模式(Off State,power-down mode)。若要启用ADC转换器,需由用户先设定ADC_CTRL[ADEN]=1,开始为ADC转换器供电,待t_startup(约2us)后,ADC转换器供电稳定,硬件置寄存器位ADC_CTRL[ADRDY]=1,告知用户可以启动转换。此时请求ADC开始转换,软件触发设定寄存器ADC_CTRL[ADSTART]=1,才正式启动ADC转换。如图x所示。

在这里插入图片描述

图x ADC转换器的信号时序

注意,图x中的ADSTART信号在ADRDY之前置位,同前文讲述等待ADRDY置位后才拉起ADSTART不同。这展示了一种典型的情况:ADSTART只是请求不是命令,只有当ADRDY置位之后,ADC转换器才能启动。

ADC_CTRL[ADDIS]=1可以直接给ADC转换器断电。但为了确保ADC内部的状态机不会被打乱,建议先通过ADC_CTRL[ADSTOP]=1请求停止转换任务,在确保ADC转换器已经不再执行任何转换任务后,再给ADC转换器断电。

关于给ADC转换器断电的操作,YTM32的ADC外设还设计了一些“自动化”的供电管理机制,自动断电Auto-Off模式,对应寄存器开关ADC_CFG0[AUTOOFF]

  • 默认未启动自动断电模式时,用户一为ADC转换器建立稳定的供电后,若无人为停用,则对ADC转换器持续供电。下次启动转换也不需要等上电稳定。
  • 若启用自动断电模式,则一旦ADC转换器闲下来就自动断电,在下次转换任务的触发信号到来时可自动唤醒恢复供电。此时,每次启动转换任务,ADC转换器都要等上电稳定(t_startup)后再启动转换。这个模式下,原本硬件反馈供电稳定的ADC_CTRL[ADRDY]标志位将不再起作用(置位)。

启用自动断电模式后,执行每次转换任务之前,都需要重新等待供电稳定的时间t_startup,这无疑影响了ADC的连续转换速率。但大多数情况下,应用对连续转换速率没有特别高的要求,使用启动断电模式可以在简化用户操作的前提下(不需要人工上电断电),有效降低ADC转换器的动态功耗。

ADC转换结果和FIFO

ADC外设内部设计了一个32-bit x 16 的FIFO,按照转换完成的顺序,依次存入转换完成的结果。用户从寄存器ADC_FIFO作为读FIFO的入口,可以依次读出转换结果。

FIFO中的数据单元包含转换结果对应的通道ADC_FIFO[CHID]和转换数值ADC_FIFO[DATA],无论设定的转换分辨率(ADC_CFG[RES])是多少,数值固定右对齐的。如图x所示。

在这里插入图片描述

ADC FIFO中的转换结果

当FIFO填满了未能及时读走的转换数据,ADC外设设计了两种机制处理后来的数据,一种是Overrun Mode,另一个是Wait Mode

  • Overrun Mode描述的是,当新的转换结果到来时,是覆盖FIFO中最近一次转换结果,还是直接抛弃掉新的转换结果。由寄存器ADC_CFG0[OVRMD]控制启用。
  • Wait Mode描述的是,当FIFO满的时候,直接给ADC转换器断电(类似于Auto-Off模式)。只有当FIFO有空位的时候,才能给ADC转换器供电。由寄存器ADC_CFG0[WAIT]控制启用。

ADC转换队列的工作模式

ADC的转换过程,是由多个单通道的转换任务串起来的转换队列,由寄存器字段ADC_CFG0[SEQLEN]由触发信号驱动执行转换过程。YTM32的ADC外设模块中,设计了多种触发机制,以不同的节奏执行转换队列中的转换任务。通过配置寄存器位ADC_CFG0[DISCEN]ADC_CFG0[CONT],对应有Single模式、Continuou模式和Discontinuous模式。

表x ADC转换队列的工作模式
ADC_CFG0[DISCEN]ADC_CFG0[CONT]转换模式触发后执行
00Single模式-单次转换任务每次触发执行转换队列中的1个任务。依次启动转换再停止。
01Continuous模式-连续转换队列一旦触发,整个转换队列开始周而复始地执行永不停歇。若要停止转换,需要软件配置ADC_CTRL[ADSTOP]请求停止。
10Discontinuous模式-隔点转换触发后行为同Single模式相同,每次触发执行一个转换任务。但在转换队列中,是隔点采样,仅执行0,3,7,10号转换任务,并且周而复始。

在这里插入图片描述

图x ADC转换队列的工作模式

ADC转换器的触发信号

ADC外设模块可以捕获软件触发和硬件触发信号(一个上升沿脉冲信号),以启动转换任务。触发信号无论是来自于软件触发还是硬件触发,对于启动转换的作用是完全相同的,但ADC仅允许使用其中一种触发模式,由寄存器ADC_CFG0[TRIGMD]选定。

  • ADC_CFG0[TRIGMD]=0,软件触发可由用户写寄存器ADC_CTRL[ADCSTART]=1产生。

  • ADC_CFG0[TRIGMD]=1,还需要设定寄存器ADC_CTRL[ADCSTART]=1解锁硬件触发信号(同步),硬件触发的信号可以来自于芯片上的其它外设模块。

硬件触发信号大多来自于TMU(Trigger Multiplexer Module)或者PTU模块(Programmable Trigger Unit),可以通过CIM(Chip Integration Module)模块的寄存器CIM_CTRL[ADCn_TRIG_SEL]选择ADC外设外部的触发信号源:

  • Raw signal which from the PTU module (CIM->CTRL[ADCn_TRIG_SEL]=0)
  • Signal from the TMU module and synchronized by bus clock (CIM->CTRL[ADCn_TRIG_SEL]=1)
  • Signal from the TMU module and synchronized by function clock (CIM->CTRL[ADCn_TRIG_SEL]=2)

ADC转换器的看门狗

YTM32微控制器的ADC外设设计了看门狗的功能,这个功能在同类的设计中,还有一个更直观的名字,“硬件自动比较”。意思是通过为采样转换结果设置一个高限ADC_WDTH[HIGH]和低限ADC_WDTH[LOW]框起来的正常数值区间,每次ADC执行转换完成后,硬件都自动将转换结果同预设的正常数值区间进行比较,当采样结果过高(高于高限)或者过低(低于底限),都会触发一个超出预设范围的事件(可以触发中断)。这个功能通常用于实现对传感器的监控。某些MCU上设计ADC可以使用异步时钟在低功耗模式下继续存活,就会用到这个硬件自动判定超限的机制,只有当出现异常采样时,才唤醒CPU对环境做进一步的判断。

然而,当下的这款ADC最多可以保存16个转换结果(在FIFO中)和24个采样通道,但没有为16个转换结果或者24个采样通道分别安排上限值寄存器和下限值寄存器。 这里有个机制,通过寄存器ADC_WDCTRL[WDSGL]选择:

  • ADC_WDCTRL[WDSGL]=0时,硬件比较的机制会作用于FIFO的入口,任何通道的转换结果进入FIFO时,都会被比较,有可能触发超事件。
  • ADC_WDCTRL[WDSGL]=1时,硬件自动比较会现定于某个指定的通道,通道号设置于寄存器字段ADC_WDCTRL[WDCHSEL]中。

另外,还有控制位ADC_WDTH[THMD],可以设定在ADC转换的结果是限定区域之内触发超限事件还是在限定区域之外。如图x所示。

在这里插入图片描述

图x 硬件自动比较的有效范围

中断事件和DMA

ADC转换器能够触发中断的事件,主要是面向转换任务和转换队列的执行转换任务完成的情况,ADC外设甚至对ADC转换器上电成功和采样阶段结束也设计中断事件。

ADC的DMA是基于FIFO设计的。用户可以在寄存器ADC_CFG0[WM]中设定产生DMA触发信号的FIFO有效数据数量的阈值,当FIFO中已经填入的转换结果数量达到预设的阈值时,ADC外设会向DMAMUX发出DMA触发信号,预设的DMA搬运任务将一次性从ADC的FIFO中搬运走预设数量(可以小于等于预设的数量阈值)的转换结果、

FIFO的阈值事件是可以产生DMA的触发信号的同时,也可以产生中断的触发信号。根据设计惯例,当同一个事件的DMA和中断触发开关同时打开时,DMA的优先级更高,中断信号不会发出。否则,如果在中断服务程序中将FIFO中的数据读走了,给DMA搬运的数据不够多,FIFO就会产生下溢错。

应用要点(软件)

YTMicro SDK中包含了YTM32的ADC外设模块的驱动程序adc_driver,并提供了关于ADC外设的样例工程,包括:adcadc_dmaadc_all_channels等。

总结

YTM32的手册对ADC外设模块进行了基本的介绍,列写了ADC外设模块开放给用户的资源,本文对YTM32的ADC外设模块的功能进行演绎,更为细致地讲解了ADC外设模块及各功能的运行机制,方便用户充分理解ADC外设模块并结合应用利用好在ADC中设计的硬件资源。同时,本文也是对一种ADC外设模块的系统架构设计进行了较为细致的分析,推演了ADC外设模块的设计方法,可以为从事芯片设计的系统架构设计师们在设计IP时提供参考。

参考文献

  • YTM32B1MEx_RM.pdf

相关文章:

YTM32的模数转换器ADC外设模块详解

文章目录 简介原理与机制ADC转换器的上下电和省电模式ADC转换结果和FIFOADC转换队列的工作模式ADC转换器的触发信号ADC转换器的看门狗中断事件和DMA 应用要点(软件)总结参考文献 简介 YTM32的ADC转换器外设最多可以集成32个输入通道,最高12b…...

前端vue学习笔记——Vuex

1.概念 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 2.何时使用?…...

7个在Github上的flutter开源程序

阅读大量代码是提高开发技能的最佳方法之一。该开源项目是了解最佳实践、编码风格和许多其他主题的最佳场所。 软件开发最受欢迎的领域之一是跨平台移动应用程序开发。Flutter 是您可以使用的最流行的跨平台移动应用程序开发工具之一。今天,我们将了解 7 个开源 Flu…...

计算机基础

分值:3-7 1. 计算机系统概述 2. 计算机组成结构 3. 存储结构 3.1. 层次化存储结构 一般用什么调什么,局部性原理 内存和外存可以统称为虚拟存储器 我们可以操作哪些:操作外存、内存、CPU寄存器。Cache具有透明性。 3.2. Cache Cache的功…...

Oracle-ASM实例communication error问题处理

问题背景: Oracle数据库日志出现大量的WARNING: ASM communication error: op 0 state 0x0 (15055)错误 问题分析: 首先检查ASM实例的状态,尝试通过sqlplus / as sysasm连接asm实例,出现Connected to an idle instance连接asm实例失败 检查ASM实例的后台…...

gin路由相关方法

c.Request.URL.Path 拿到请求的路径 package mainimport ( "fmt" "github.com/gin-gonic/gin" "net/http")//路由重定向,请求转发,ANY ,NoRoute,路由组func main() { r : gin.Default() // -------…...

vue项目 Editor.md使用示例

简介 Editor.md 支持“标准” Markdown / CommonMark 和 Github 风格的语法,也可变身为代码编辑器; 支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、搜索替换、只读模式、自定义样式主题和多语言语法高亮等…...

12.3 实现模拟鼠标录制回放

本节将向读者介绍如何使用键盘鼠标操控模拟技术,键盘鼠标操控模拟技术是一种非常实用的技术,可以自动化执行一些重复性的任务,提高工作效率,在Windows系统下,通过使用各种键盘鼠标控制函数实现动态捕捉和模拟特定功能的…...

【计算机网络-自顶向下方法】应用层(SMTP、POP3、DNS)

目录 1. Electronic Mail电子邮件应用画像1.1 电子邮件系统1.2 邮件报文格式1.3 邮件访问 2. DNS(Domain Name System)2.1 DNS提供的服务2.2 DNS工作机理2.3 DNS资源记录2.4 DNS协议,报文2.5 小结 1. Electronic Mail 电子邮件应用画像 应用…...

【Pm4py第八讲】关于Statistics

本节用于介绍pm4py中的统计函数,包括统计轨迹变体、案例持续时间、案例到达时间等。 1.函数概述 本次主要介绍Pm4py中一些常见的统计函数,总览如下表: 函数名说明pm4py.stats.get_start_activities()从事件日志中获取开始活动。pm4py.stats.…...

【Azure 架构师学习笔记】-Azure Data Factory (5) --Data Flow

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 接上文【Azure 架构师学习笔记】-Azure Data Factory (4)-触发器详解-事件触发器 前言 Azure Data Factory, ADF 是微软Azure 的ETL 首选服务之一, 是Azure data platfor…...

uniapp之ios开发及支付整体流程爬坑记录

前言 在写这篇记录的时候,关于ios的支付已经对接的差不多了,下一步就是测试好了直接发版,总共花了好几周的时间,从0到1对于首次做ios支付来说,确实很多坑。 其实业务层面很简单,甚至比安卓支付还简单&…...

AutoDL百川大模型体验

文章目录 镜像克隆模型下载测试效果AutoDL自定义服务 感谢AutoDL和CodeWithGPU这两个平台,让我们能低成本,低门槛地部署体验这些大模型 镜像克隆 我是在CodeWithGPU上克隆的这个镜像 模型下载 codewithgpu有介绍 注意这三个文件都需要下载 把那个&quo…...

蓝桥杯每日一题2023.10.8

题目描述 七段码 - 蓝桥云课 (lanqiao.cn) 题目分析 所有的情况我们可以分析出来一共有2的7次方-1种,因为每一个二极管都有选择和不选择两种情况,有7个二极管,但是还有一种都不选的情况需要排除,故-1 枚举每个方案看是否符合要…...

jmeter,性能测试,Locust

一。性能测试的概念 1.性能:就是软件质量属性中的 “ 效率 ” 特性 2.效率特性: 时间特性:指系统处理用户请求的响应时间 资源特性:指系统在运行过程中,系统资源的消耗情况 CPU 内存 磁盘IO(磁盘的写…...

opencv图像的直方图,二维直方图,直方图均衡化

文章目录 opencv图像的直方图,二维直方图,直方图均衡化一、图像的直方图1、什么是图像的直方图:2、直方图的作用:3、如何绘制图像的直方图:(1)cv::calcHist()函数原型:英文单词 calc…...

c++中的map和set

文章目录 1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用 3.2 map3.2.1 map的介绍3.2.2 map的使用 3.3 multiset3.3.1 multiset的介绍3.3.2 multiset的使用 3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用 1. 关联式容器 在初阶…...

Swagger使用详解

目录 一、简介 二、SwaggerTest项目搭建 1. pom.xml 2. entity类 3. controller层 三、基本使用 1. 导入相关依赖 2. 编写配置文件 2.1 配置基本信息 2.2 配置接口信息 2.3 配置分组信息 2.3.1 分组名修改 2.3.2 设置多个分组 四、常用注解使用 1. ApiModel 2.A…...

ToBeWritten之车联网安全中常见的TOP 10漏洞

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

软考-密码学概述

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 密码学基本概念 密码学的主要目的是保持明文的秘密以防止攻击者获知,而密码分…...

windows 2003、2008远程直接关闭远程后设置自动注销会话

1、2003系统: 按开始—运行—输入“tscc.msc”,打开“终端服务配置”。 单击左边窗口的“连接”项,右边窗口中右击“RDP-TCP”,选择“属性”。 单击“会话”项,勾选“替代用户设置”,在“结束已断开的会话”…...

iOS BUG UIView转UIImage模糊失真

iOS BUG UIView转UIImage模糊失真 ##UIView转成Image - (UIImage *)capture {UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0.0);[self.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *img UIGraphicsGetImageFromCurrentImageContext(…...

如何在10分钟内让Android应用大小减少 60%?

一个APP的包之所以大,主要包括一下文件 代码libso本地库资源文件(图片,音频,字体等) 瘦身就主要瘦这些。 一、打包的時候刪除不用的代码 buildTypes {debug {...shrinkResources true // 是否去除无效的资源文件(如…...

网络代理技术:保障隐私与增强安全

在当今数字化的世界中,网络代理技术的重要性日益凸显。无论您是普通用户还是网络工程师,了解如何使用代理技术来保护隐私和增强网络安全都是至关重要的。本文将深入探讨Socks5代理、IP代理以及它们在网络安全和隐私保护中的关键作用。 1. Socks5代理&am…...

数据结构 | (二) List

什么是 List 在集合框架中, List 是一个接口,继承自 Collection 。 Collection 也是一个接口 ,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable 也是一个接口,表示实现该接口的类是可以逐个…...

[NewStarCTF 2023 公开赛道] week1 Crypto

brainfuck 题目描述&#xff1a; [>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<-]>>>>>>>.>----.<-----.>-----.>-----.<<<-.>>..…...

C语言中文网 - Shell脚本 - 0

教程目录如下&#xff1a; 第1章 Shell基础&#xff08;开胃菜&#xff09; 1. Shell是什么&#xff1f;1分钟理解Shell的概念&#xff01; 2. Shell是运维人员必须掌握的技能 3. 常用的Shell有哪些&#xff1f; 4. 进入Shell的两种方式 5. Linux Shell命令的基本格式 6.…...

Transformer预测 | Pytorch实现基于Transformer 的锂电池寿命预测(CALCE数据集)

文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…...

2023年【通信安全员ABC证】找解析及通信安全员ABC证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 通信安全员ABC证找解析参考答案及通信安全员ABC证考试试题解析是安全生产模拟考试一点通题库老师及通信安全员ABC证操作证已考过的学员汇总&#xff0c;相对有效帮助通信安全员ABC证考试总结学员顺利通过考试。 1、【…...

前端框架Vue2.0+Vue3.0学习笔记01

一、Vue技术_课程简介 1、前端框架小白 2、熟练掌握Vue2 3、轻松玩转Vue3 ①、vue基础 ②、vue-cli ③、vue-router ④、vuex ⑤、element-ui ⑥、vue3 二、Vue技术_Vue简介 1、Vue是什么&#xff1f; 一套用于构建用户界面&#xff08;把你拿到手里的数据&#xf…...