打印
[Kinetis]

【经验分享】KL27 ADC采样引脚设计注意点

[复制链接]
1121|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FSL_TICS_ZJJ|  楼主 | 2015-10-30 14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2015-10-30 17:26 编辑

使用MKL27Z64VFM4芯片,PTE30引脚做为ADC输入引脚,经过配置后,通过改变PTE30引脚的电压,发现输出的ADC采样值永远是接近ADC转换位的最大值,比如配置为12位,则转换值大概4095。是什么导致这个问题的呢?
     
      具体原因请查看附件文档:

【经验分享】KL27 PTE30引脚ADC采样问题讲解.pdf (268.33 KB)

相关帖子

沙发
FSL_TICS_ZJJ|  楼主 | 2015-10-30 14:53 | 只看该作者
希望能对大家的设计有帮助,同时欢迎大家分享自己的宝贵经验!

使用特权

评论回复
板凳
万利电子| | 2015-10-30 17:10 | 只看该作者

void Init_ADC( void )
{
        ADCHSelect = 0;

        ADC_ConvertedValue[0] = 0;
        ADC_ConvertedValue[1] = 0;
        ADC_ConvertedValue[2] = 0;

        ADC_Relust[0] = 0;
        ADC_Relust[1] = 0;
        ADC_Relust[2] = 0;
               
        SIM->SCGC6 |= SIM_SCGC6_ADC0_MASK;
        
        ADC0->SC1[0] = 0;
        ADC0->SC1[1] = 0;
        ADC0->SC2 |= 0x01;         //差一点中枪,64K KL27,PTE30作为ADC输入
        ADC0->SC3 |= 0x07;
        
        ADC0->CFG1 = ADC_CFG1_MODE(3)|
                                 ADC_CFG1_ADIV(3)|
                                 ADC_CFG1_ADICLK(0)|
                                 ADC_CFG1_ADLSMP_MASK;
        
        ADC0->CFG2 = ADC_CFG2_ADLSTS(0)|               
                                 ADC_CFG2_ADHSC_MASK|
                                 ADC_CFG2_ADLSTS(2);

        NVIC_EnableIRQ(ADC0_IRQn);
}

void ADC_TrigCH(u8 ch_n)
{
        ADC0->SC1[0]  = ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(ch_n & 0x1F);
}

void ADC0_IRQHandler()
{
        u16 dat = ADC0->R[0];
        switch ((ADC0->SC1[0] & 0x1F) - 8) {
        case 0:  ADC_ConvertedValue[0]  = dat; break;    //PTB0
        case 1:  ADC_ConvertedValue[1]  = dat; break;    //PTB1
        default: ADC_ConvertedValue[2]  = dat; break;    //PTE30 增加ADC->SC2 |= 1后,ADC采样正确
        }
}

测试结果:PTE30可以作为ADC输入使用

使用特权

评论回复
地板
FSL_TICS_ZJJ|  楼主 | 2015-10-30 17:29 | 只看该作者
万利电子 发表于 2015-10-30 17:10
void Init_ADC( void )
{
        ADCHSelect = 0;

是的,PTE30作为ADC输入的时候,一定要选择VDDA作为参考电压,而不是VREF.
关键就是小于36脚封装,REFSEL=0的时候,是PTE30为参考电压。

使用特权

评论回复
5
风的样子| | 2015-10-31 10:23 | 只看该作者
12bit的ADC不正好到4095吗

使用特权

评论回复
6
Micachl| | 2015-10-31 10:48 | 只看该作者
是不是输入电压超过上限了啊

使用特权

评论回复
7
万利电子| | 2015-11-1 08:45 | 只看该作者
我的理解是:当PTE30作为ADC输入时,通常都不会超过AVDD/VREFH。当配置错误时,这话个电压就被认为是参考电压,导致其它通道都参考电压进行转换。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

5069

帖子

88

粉丝