【S32K3 入门系列】- ADC 模块简介(下)

一、前言

       在 《【S32K3 入门系列】- ADC 模块简介(上)》中我们介绍了四种通道类型的区别、ADC 的功能框图、ADC 的工作流程、时钟源的范围等。本文是上一篇博文的延续,将继续介绍 S32K3 的ADC 模块。

二、ADC 模块简介

2.1 ADC 的三种触发模式

       ADC 模块的工作流程非常纯粹,它在收到触发信号后,会按照之前配置的参数开始转换当前被启用的通道。因此,实现复杂转换的完整性完全取决于触发信号的生成。现在我们逐一来看 ADC 模块的三种主要触发信号类型:标准触发、注入触发和 BCTU 触发。

2.1.1 标准触发:

       标准触发是最常见的触发模式,它是由软件或者硬件来启动一次 DMA 转换,转换模式一般分为单次转换模式(One-Shot mode)和连续扫描模式(Scan mode)单次转换模式就是把所有使能的标准通道(由 NCMR 寄存器使能)转换完成后就自动停止转换,而连续扫描模式就是连续循环转换。其中软件触发模式就是给 MCR[NSTART] 写 1,而硬件触发就是通过 TRGMUX 模块来配置其他外设信号触发标准通道转换。

这时候就存在转换顺序的问题,转换顺序一般是由转换通道的类型所决定,转换顺序为 Precision—>standard—>External,若是同类型通道,则转换顺序是由通道的序号决定,同类型通道从小到大依次转换,当所有通道转换完成后 ECH 中断置位。

       例如:设备中存在 A→B→C→D→E→F→G→H 通道,需要一次性转换 B→D→E通道。转换从通道  B  开始,接着是通道  D  和通道  E 的转换。在通道 E 转换结束时,扫描通道停止,如下图:

 

2.1.2 注入触发:

       当一次注入触发信号来了,ADC模块就会立即去转换使能的注入通道(由JCMR寄存器使能),如果当前ADC模块正在转换标准通道,那么此时ADC会中断转换并开始转换注入通道,等注入通道转换完成后再恢复标准通道的转换。流程示意图如下:

       例如:设备正处于一次性转换 B→C→D→E 的流程中,此时转换流走到了 Convert C 时注入 I、J  的转换通道,则立即开始 I、J 的转换,然后返回 Convert C 的转换流,就类似中断的机制,当遇到注入触发时就会先去处理中断再返回处理原来的程序。注入触发方式也是有软件触发和硬件触发两种,软件触发就是 MCR[JTRGEN]写  1,而硬件触发就是通过  TRGMUX  模块来配置其他外设信号触发  ADC  注入通道转换。

2.1.3 BCTU 触发:

       BCTU 触发就是用外部模块 BCTU 发起信号去触发 ADC 模块。下图是两个模块之间的连接:

       其中 BCTU 发送给 ADC 触发信号 Tregger 和通道号 Channel,而 ADC 模块则返回三个信号,分别是 Next command,End of conversion 和  Data, 其中  Next command 表示 ADC 模块已经准备好接受下一次的触发信号了,End of conversion 表示当前转换完成,数据可用,至于 Data  就是转换的结果数据。

       其中 BCTU 有两种模式去控制 ADC,分别是 BCTU Trigger mode 和 BCTU Control mode。

       BCTU Trigger mode:

       这个模式其实就是增强型注入触发,处于该种模式下,当 ADC 模块接收到来自 BCTU 的触发信号时,ADC 模块就会终止当前转换,立即响应 BCTU 的触发,原理和注入触发是一致的。也就是说三者的优先级关系为 BCTU 触发 > 注入触发 > 标准触发。所以当 ADC 处于响应 BCTU 的状态时,注入触发信号是无效的。

       BCTU Control mode:

       这种模式就比较简单了,就是 BCTU 一家独大,完全接手 ADC 的控制权,此时只有 BCTU 可以启动转换,另外两种触发信号无效。

2.2 自检

       S32K3 系列的 MCU 一般具有 ASIL-D 功能安全等级,为确保芯片的正常运行,S32K3 的  ADC 具有自检功能。启用自检后,ADC 会自动检查其组件,并在发现错误时标记错误,此处入门过程一般使用不到,不赘述,只做简单介绍。

2.3 模拟看门狗

       模拟看门狗非常简单,就是设置两个值 THRH 和 THRL,当满足以下条件的一种时会产生中断信号


2.4 转换时间

       最后提一下转换时间的计算,转换时间的基准是 ADC 的时钟源,转换时间为:

       预采样时间 + 采样时间 + 比较时间 + 数据处理时间 + 触发处理时间

       预采样时间(PST,等于  ST  并延时 1 个 ADC_CLK 周期,一般预采样不使能,所以一般等于  0)

       采样时间(ST,可配置,最小值为  8  个  ADC_CLK  周期)

       比较时间(CT,固定,每  bit  4  个  ADC_CLK  周期)

       数据处理时间(DP,固定,2  个  ADC_CLK  周期)

       触发处理时间(TPT,固定,1  个  ADC_CLK 周期)

       所以,总转换时间=([(PST+ST+CT+DP) * 通道数 ]+TPT)* ADC_CLK 周期。


三、结语

   
   到此 S32K3 ADC 的入门简介已经介绍结束,若是对 S32K3 系列的其它模块感兴趣,可以进入我的主页查看其它模块的博文


四、参考文档

       [1] NXP - 《 S32K3xx Reference Manual

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论