ADC自学小笔记

本文详细探讨了ADC的触发机制,包括软件中断、EPWM触发以及采样窗口设置。文章介绍了如何通过优先级模式控制ADC的转换顺序,并关注了S+H相位、转换时间和同步操作的重要性。实例和程序展示了如何在实际应用中实现ADC的同步采样,以及注意事项和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以软件触发(好像中断里面就是软件强制那种?)

还可以epwm触发soc信号

计算采样窗口

采样窗口时间的要求

让我们看几个例子 

用的通道几就放在哪个结果寄存器吗(还有待考证,继续向下学习吧)

//学习完是这样,而且每个ADC都有自己的结果寄存器,在文章末的程序可以看得出

ADC的优先级模式(还没开始实际工程也学学吧)

//设定普通优先级的时候,就是设定谁优先级高就到谁那里去,然后就在转换完那个地方开始重新旋转,判定优先级,然后也看谁在第一轮第二轮,但其实就是重新旋转的优先级

/也就是说当SOCPRIORITY = 4的时候会将前4个SOC单独拿出来,
//这四个被拿出来的SOC的优先级数字越大优先级越低
//拿了4个出来剩下的12个SOC继续组成一个循环,他们的顺序仍然按照默认循环的模式运行
//拿出来的4个种有一个触发时,例如图中是SOC2触发了,它将比任何一个处于默认循环的优先级高
//比如SOC2和SOC12同时触发时,原本根据默认循环应该先触发SOC12,
//但是SOC12并没有单独拿出来提升优先级,因此会先看单独拿出来的四个SOC0~3有没有触发的
//再去看SOC4~SOC15有没有被触发,因此SOC2和SOC12同时触发,会先让SOC2转换再触发SOC12

借鉴TMS320F280049C的ADC 阅读记录_adc_setoffsettrimall-优快云博客

转化完成信号

经典操作,就读最后一个转化完成的,一般让最后一个转化完成触发中断,产生中断标志位,然后在主程序中查询这个中断标志位,查询到之后记得清除

ADC四个中断,四个中断的中断源可以是16个SOC的任意一个的EOC信号

四个中断的中断标志位都是ADCINTx,比如中断1就是ADCINT1

关于ADC转换时间和同步的内容

将模拟电压转换为数字值的过程分为S+H相位和转换相位。ADC采样和保持电路(S+H)由SYSCLK进行时钟控制,而ADC转换过程由ADCCLK进行时钟控制。adccclk是根据ADCCTL2寄存器中的PRESCALE字段对SYSCLK进行分割而产生的。

S+H持续时间是正在转换的SOC的ACQPS字段的值加上1乘以SYSCLK周期。用户必须确保此持续时间超过1 ADCCLK周期和数据表中指定的最小S+H持续时间。转换时间约为10.5个ADCCLK周期。确切的转换时间总是SYSCLK周期的整数。

//感觉这里就是倒推那个时间,毕竟之前的ACQPS也是我们根据那个采样窗口算出来的。

tSH

S+H窗口的持续时间。

在该窗口结束时,S+H电容上的值变为要转换为数字值的电压。持续时间由(ACQPS + 1) SYSCLK周期给出。ACQPS可以为每个SOC单独配置,因此不同SOC的tSH不一定相同。

注意:无论设备时钟设置如何,S+H电容的值在S+H窗口结束前大约5ns被捕获。

tLAT

从S+H窗口结束到ADC结果锁存到ADCRESULTx寄存器的时间。

如果在此之前读取ADCRESULTx寄存器,则返回之前的转换结果。

tEOC从S+H窗口结束到下一个ADC转换的S+H窗口可以开始的时间。随后的样本可以在转换结果锁定之前开始。
tINT

从S+H窗口结束到设置ADCINT标志的时间(如果配置了)。

如果设置了ADCCTL1寄存器中的INTPULSEPOS位,则tINT与转换结束(EOC)信号一致。

如果INTPULSEPOS位为0,并且ADCINTCYCLE寄存器中的OFFSET字段不为0,那么在设置ADCINT标志之前会有OFFSET SYSCLK周期的延迟。该延迟可用于在样品准备好时进入ISR或触发DMA。

如果INTPULSEPOS位为0,则tINT与S+H窗口的结束一致。如果tINT触发对ADC结果寄存器的读取(直接通过DMA或间接通过触发读取结果的ISR),则必须注意确保读取发生在结果锁存之后(否则,将读取先前的结果)。

其他的一些补充

为了获得最佳性能,设备上的所有adc必须同步操作。设备数据表规定了在同步和异步模式下的性能,这些参数在操作模式之间存在差异。

为了确保同步操作,设备上的所有adc必须同步操作。这是通过向所有adc写入配置来实现的,这些配置使所有adc的采样和转换阶段精确对齐。实现这一点的最简单方法是为每个ADC的触发选择和ACQPS (S+H持续时间)的SOC配置写入相同的值。此外,同步adc还必须为SOC优先级控制、突发模式、突发触发和突发大小配置相同的值。

下面看个程序

从图13-14中可以注意到几点。首先,虽然具有相同编号的soc的ACQPS值必须相同,但对于具有不同编号的soc可以使用不同的ACQPS值。因此,同步操作不需要单个全局S+H时间,而是只有同时采样的通道需要相同的S+H持续时间。这个例子的另一个要点是,任何通道选择值都可以用于任何SOC。最后,这个例子假设了循环操作。如果使用高优先级的soc,则所有adc的优先级必须设置为一致。

//这里其实就是承接13-16的结果,转换完一轮了,开始新的一轮,ADCA一轮转化三次,ADCB一轮转化两次,下次就会出现异步,这里要注意!

如果用户可以确保转换时间不重叠,那么就没有必要在所有adc上配置相同的所有soc,以实现与同步操作等效的性能。例如,如果系统中的两个ADC触发器来自两个始终180度的ePWM源,那么SOC0可以用于具有不同触发源和不同ACQPS值的ADCA和ADCB。

虽然每个ADC没有双S+H电路,但很容易实现同步采样。这是通过在两个或多个ADC模块上设置SOC触发器以使用相同的触发源来实现的。下面的示例演示了基于ePWM3事件的3个adc同时采样。ADCINA3, ADCINB2, ADCINC5采样。使用20个SYSCLK周期的采集窗口,但可以使用不同的持续时间。

当接收到ePWM3触发器时,所有三个adc立即开始并行转换。所有结果都存储在每个ADC的ADCRESULT0寄存器中。注意,这假设所有adc在接收到触发器时都处于空闲状态。如果一个或多个adc繁忙,则采样不会在完全相同的时间发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值