S32K14X ADC Driver 纯C寄存器配置

4 篇文章 0 订阅
1 篇文章 0 订阅

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);

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴你对 S32K14X 感兴趣!S32K14X 是 NXP 公司推出的一款 ARM Cortex-M4 内核的汽车级微控制器,主要用于汽车电子系统的应用。下面是一些 S32K14X 学习笔记的内容: 1. 架构概述:S32K14X 基于 ARM Cortex-M4 内核,具有高性能和低功耗的特性。它包含了丰富的外设模块,例如模数转换器(ADC)、定时器(TIM)、通用串行接口(UART、SPI、I2C)等,适用于多种汽车电子应用场景。 2. 开发环境搭建:S32K14X 的开发可以使用 NXP 官方提供的 S32 Design Studio 或者其他支持 ARM Cortex-M 开发的集成开发环境(IDE),如 Keil MDK、IAR Embedded Workbench 等。 3. 程序编写:使用 C/C++ 语言进行程序编写,可以利用官方提供的开发工具链和库函数进行开发。需要了解 S32K14X 的寄存器映射和外设控制寄存器的使用方法,以实现相应功能。 4. 外设配置:根据具体应用需求,配置 S32K14X 的外设模块,如 ADC 的通道选择、定时器的时钟设置等。可以参考官方提供的开发文档和示例代码进行配置和开发。 5. 调试与测试:在开发过程中,可以使用 JTAG/SWD 调试器连接 S32K14X 板卡,进行程序的下载、调试和测试。可以通过断点、观察表等功能,帮助定位和解决问题。 6. 应用案例:S32K14X 可以应用于车身电子、底盘控制、驾驶辅助等多个汽车电子系统。学习过程中可以关注相关应用案例,了解实际场景下的应用方法和技巧。 以上是 S32K14X 学习笔记的一些内容,希望对你有所帮助!如果你有具体的问题或者需要更多资料,可以进一步向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值