S32K14X ADC Driver 纯C寄存器配置

S32K14X ADC Driver 纯C寄存器配置

void ADC_init(void)
{

PCC->PCCn[PCC_ADC0_INDEX] &=~ PCC_PCCn_CGC_MASK;
/* Disable clock to change PCS /
PCC->PCCn[PCC_ADC0_INDEX] |= PCC_PCCn_PCS(1)
| PCC_PCCn_CGC_MASK; /
PCS=1: Select SOSCDIV2 16Mhz */

    ADC0->SC1[0] = ADC_SC1_ADCH_MASK;  	/* ADCH=3F: Module is disabled for conversions*/
                                        /* AIEN=0: Interrupts are disabled */
    ADC0->CFG1 = ADC_CFG1_ADICLK(0) | ADC_CFG1_ADIV(3)
              |  ADC_CFG1_MODE(1);   /* ADICLK=0: Input clk=ALTCLK1=SOSCDIV2 */  
                                     /* ADIV=0: Prescaler=1 */      //ADIV=1 (input clock)/8 = 2Mhz
                                     /* MODE=1: 12-bit conversion */
    ADC0->CFG2 = ADC_CFG2_SMPLTS(100);  	/* SMPLTS=12(default): sample time is 13 ADC clks */
    ADC0->SC2 = 0x00000000;  	/* ADTRG=0: SW trigger */
                                /* ACFE,ACFGT,ACREN=0: Compare func disabled */
                                /* DMAEN=0: DMA disabled */
                                /* REFSEL=0: Voltage reference pins= VREFH, VREEFL */

    ADC0->SC3 = ADC_SC3_ADCO_MASK;  //ADC_SC3_ADCO_MASK;  //0x00000000;  	/* CAL=0: Do not start calibration sequence */
                                /* ADCO=1: 1b - Continuous conversions*/
                                /* AVGE,AVGS=0: HW average function disabled */
                                
    ADC0->CLPS = 0x00u;
    ADC0->CLP3 = 0x00u;
    ADC0->CLP2 = 0x00u;
    ADC0->CLP1 = 0x00u;
    ADC0->CLP0 = 0x00u;
    ADC0->CLPX = 0x00u;
    ADC0->CLP9 = 0x00u;

    ADC0->SC3 |= ADC_SC3_CAL_MASK;     //CAL=1, the ADC begins the calibration sequence

    while((ADC0->SC3 & ADC_SC3_CAL_MASK)>>ADC_SC3_CAL_SHIFT)
    {
            /* Wait for calibration to finish */
    }

}

uint16_t Adc0_ChxValule(uint16_t adcChan)
{
uint16_t adc_result = 0;

/* 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*/

while(!((ADC0->SC1[0] & ADC_SC1_COCO_MASK) >> ADC_SC1_COCO_SHIFT));    /* Wait for conversion complete flag */
adc_result = (uint16_t)ADC0->R[0];                     /* For SW trigger mode, R[0] is used */
ADC0->SC1[0] &= ~ADC_SC1_COCO_MASK;                    //clear conversion complete flag

return (adc_result);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值