S32K146:Questions related to ADC function registers

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

S32K146:Questions related to ADC function registers

585 Views
ShaoTianzhi
Contributor II

Hello :

    我最近在使用NXP提供的示例代码测试读取AD值的时候发现,读出来的值变化非常大,询问了一下NXP的客服,给我的回答是使用COCO寄存器来等待AD值稳定

ShaoTianzhi_0-1713145346728.png

尝试使用了以后,读出来的AD值不再大幅度变化,但是一次读取AD的时间会消耗1ms到8S不等,想问一下这种情况是什么原因导致的。

同时我也有使用其他的AD通道,在没有使用COCO,仅使用示例代码提供的ADACT寄存器,读出来的值非常稳定,我想了解COCO寄存器应该在什么时候使用。

ShaoTianzhi_1-1713145766000.png

 

0 Kudos
Reply
3 Replies

566 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@ShaoTianzhi

1.你可以提供你的工程,我可以帮你排查下原因。

2.事实上COCO位和ADACT还是有区别的,它们的含义是不一样的,你可以看到每个ADC实例的16个通道都有对应的COCO标志位,而ADACT是一个ADC实列才有一个,并不是对应每个通道。一个表示的是每个通道完成的标志状态(或用于产生中断),另一个其实是表示整个ADC目前是否处在正在转换过程中。

 

0 Kudos
Reply

538 Views
ShaoTianzhi
Contributor II

Hello: 

出于某些原因,我没办法给你提供我的代码,,在查看芯片手册的示例代码时,我有一个疑惑,20240416-095202.jpg

这里为什么是SC1[0]不是SC1[12],如果是根据Channel配置的话,这里我理解应该是SC1[12]。

在使用这个寄存器等待转换完成时,有时候会等待超过3s,这种情况的发生是外围硬件/电路导致的么

0 Kudos
Reply

533 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@ShaoTianzhi

附件是软件触发的裸机例程,你自己测一下

void convertAdcChan(uint16_t adcChan)
{
/*!
* For SW trigger mode, SC1[0] is used
* ===================================================
*/
  ADC0->SC1[0]&=~ADC_SC1_ADCH_MASK;       /* Clear prior ADCH bits */
  ADC0->SC1[0] = ADC_SC1_ADCH(adcChan);   /* Initiate Conversion */
}
0 Kudos
Reply