S32K344_MCAL_ADC

0.闲话

工作需求,将会开展一段时间的S32K344的开发,本人也是萌新,就一边学习一边写一些配置过程和心得吧,欢迎各位大佬一起交流和指教。

---------------------------------------------------------------------------------------------------------------------------------

        因为英文不太好,所以把芯片手册译了一下和原版对照着看,也算是快速上手的一个方式吧。

1.基本属性

1.S32K344一共有3个instance,表里的信息貌似有错误,内部特殊通道ADC_0有4个,1/2分别有3个(别人说的)。特殊通道指的是温度传感器一类的。

这里的精密通道,标准通道区别是分辨率,精密通道可以达到12bit,标准通道达到10bit,注意,无论分辨率是多少bit,最终的转换结果都是15位,进行左/右对齐后输出。

外部通道是ADC提供三个外部解码信号,用于从外部模拟多路复用器的八个通道中选择一个通道。最多可以有四个这样的多路复用器用于连接32个外部通道。ADC根据选择用于转换的当前通道,自动设置解码信号以控制这些外部模拟多路复用器。

2.一个ADC通道可能有多个PAD驱动,当设置某一个PAD为AI后,要查一下是不是默认的,否则要配置一下DCM寄存器。

2.功能详解

1.内部框图

2.运行过程

这里数据手册有详细解释,我翻译一下:

1.当ADC接收到三种不同类型的触发器(BCTU、注入或正常)中的一种时,优先级多路复用器(Priority Multiplexer)启动转换。
2.根据触发器类型和自检的配置,进行通道选择。
3.状态机(FSM)从空闲状态转换为转换状态。如果下一次要转换的通道为外部通道,那么转换在DSDR[DSD]配置的延迟后开始。
4.转换开始后,转换控制块将保持内部电容网络CDAC保持相同的CTRi[INPSAMP]的时间。
5.在比较阶段,CALBISTREG[RESN]定义了用于执行逐次逼近算法的步数。校准期间确定的误差校正值将添加到原始结果中。如果平均值被启用(MCR[AVGEN]=1),最多32个(通MCR[AVGS]指定)转换结果被平均以获得后果。
7.当转换完成且所有平均步骤均已完成时:
A. 转换完成信号置位。
B. 转换_数据[14:0]写入数据结果寄存器。(左对齐为[15:1])
C. FSM状态机切换为完成状态。
8.通道选择块中的下一个输入被选择,FSM状态机切换到转换状态,第二次转换开始。这将持续进行,直到所有选定的通道输入都已转换。
9.如果启用了模拟看门狗,则将转换结果与配置的阈值进行比较。如果满足条件,可以触发中断。
自检可以检查ADC的完整性,可以与正常转换交错进行,也可以作为独立检查。
10.如果正在进行的转换被中止(通过将1写入MCR[ABORT]),或一组输入通道的转换被中止(通过将1写入MCR[ABORTCHAIN]),FSM将转换为空闲状态。如果MCR[ABORT]写1,则转换控制块停止当前转换;如果MCR[ABORTCHAIN]写1,则完成当前转换再中止转换。在这两种情况下,转换控制块的转换完成输出信号都会被置1。

3.时钟

ADC模块支持最高频率为80MHz,如果选择时钟超过范围要进行分频

4.触发

S32K344的触发方式为,有触发就按通道开始转换,很直接。一共有三种触发信号。

1.标准触发:

传统的ADC触发信号,由软件或硬件触发,启动一次DMA转换,可以是单次或连续扫描。

其中软件触发模式就是给MCR[NSTART]写1,而硬件触发就是通过TRGMUX模块来配置其他外设信号触发标准通道转换。

  转换的顺序为Precision—>standard—>external,同类型通道则从小往大。当所有使能的标准通道转换完成后ECH中断置位。

2.注入

注入信号的优先级高于标准触发,当一个注入信号过来,如果当前正在转换标准信号则会进入中断,先进行注入信号的转换。

注入触发方式也是有软件触发和硬件触发两种,软件触发就是对MCR[JTRGEN]写1,而硬件触发就是通过TRGMUX模块来配置其他外设信号触发ADC注入通道转换。

不同类型通道的转换顺利同上,当使能的注入通道全部转换完成后,JECH中断置位。

3.BCTU触发

BCTU触发是由外部模块进行触发

BCTU向ADC输出触发与通道号,ADC返回转换完成标志,数据和已准备好下次转换信号。转换结果也保存在相应通道的数据寄存器中,并在请求时与模拟看门狗阈值进行比较。

BCTU有两种触发模式

1.注入模式

在注入模式下,BCTU的信号为最高优先级,当正在进行的普通转换收到BCTU触发时,会进入中断,当正在进行的注入转换收到BCTU触发时,会中断注入链,只有BCTU注入会继续进行。只有在ADC校准成功后,才能请求BCTU转换。应用程序必须防止在校准过程中触发任何BCTU。

以下是手册描述:

在触发器模式下,还可以执行正常转换和注入转换。所有类型的转换都可以在此模式下启动。下文讨论了三种类型转换的优先次序。 当接收到触发时,通道编号被作为注入的通道值,并且触发的注入转换开始。此时MSR[BCTUSTART]自动转换为1,当触发的注入转 换完成时,它也自动重置为0。 只有在ADC校准成功后,才能请求BCTU转换。应用程序必须防止在校准过程中触发任何BCTU。 如果在正在进行的注入转换期间接收到BCTU触发器,则注入链立即中止,并且只有BCTU触发的注入转换继续进行。此外, MSR[JSTART]被重置为零。注入转换的中止由MSR[JABORT]指示。 如果在正在进行的正常转换期间接收到BCTU触发,则暂停正在进行的普通信道转换,并且处理BCTU所触发的注入转换。BCTU触发 的转换完成后,从暂停的通道恢复正常转换。 如果在BCTU转换过程中请求正常转换(MSR[BCTUSTART]=1),则在BCTU转换完成后开始正常转换(将MSR[BCTUSTART]重 置为零)。 如果在BCTU转换过程中提出要求,任何注入的转换都将被丢弃,并且MCR[JSTART]立即重置为零。

2.控制模式

在控制模式下,只有BCTU信号会被响应,其他信号全部忽略。

 --------------------------------------------------------------------------------------------------------------------------------

被保安大爷gank了,把我灯关了,明天再写。2023/9/6/20:57

工作重心切到芯钛A8了,等一段时间我再来更新。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值