CCS配置MSPM0G3507(五) ADC

一.sysconfig

(1)Quick Peripheral

1.ADC12 Profiles 设置为 Custom (自定义)

(2)Basic Config

1).Sample Clock Config

1.选择时钟源,默认为SYSOSC

2.Sample Clock Divider 默认为 Divide by 1

2).Sampling Mode Config

1.转换模式,可选择单通道和序列(多通道)

2.转换开始地址,与 Memory Config 中的开始地址一致

3.Sampling Mode 设置为 Auto 自动,则其采样时间为Advanced Config中的Timer0或Timer1来确定

4.Trigger Source 触发源设置为软件触发,即在程序中用代码开始让ADC转换

5.数据格式默认为右对齐

ADC Conversion Memory Config

1.选择接收转换结果的寄存器,其最低的地址要与 Conversion Starting Memory 相等

2.选择ADC通道

3.选择参考电压

4.选择采样周期的定时器

(3)Advanced  Config

1.选择转换方式为12位

2.Power Down Mode 设置为 Manual ,即软件使能后ADC保持为上电状态,若设置为Auto,则ADC转换完1次后会下电

3.设置期望采样时间为 125us

(4)Interrupt Config

使能 MEM0 result loaded interrupt,即MEM0装载值后进入中断

(5)Pin Mux

可选择使用ADC0或ADC1

可选择复用功能引脚

二.代码

1.初始化

(1).上面将ADC触发方式设置为了软件触发,所以每次采集完一次数据都要重新开启ADC转换和使能ADC转换

(2).注意adc_flag要用 voliate 修饰,防止编译优化

重要函数:

读取MEM中的转换值

DL_ADC12_getMemResult(ADC12_0_INST,DL_ADC12_MEM_IDX_0);
int main(void)
{
    SYSCFG_DL_init();

    NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);      //使能ADC中断
    //开启ADC转换,需要重复开启
    DL_ADC12_startConversion(ADC12_0_INST);

    while (1) 
    {


        //ADC转换结束,则读取数据
        if(adc_flag)
        {
            //读取ADC0的MEM0的数据
            adc_value = DL_ADC12_getMemResult(ADC12_0_INST,DL_ADC12_MEM_IDX_0);
            adc_flag = false;
            //开启ADC转换,需要重复开启
            DL_ADC12_startConversion(ADC12_0_INST);
            //使能ADC,否则ADC只能转换一次
            DL_ADC12_enableConversions(ADC12_0_INST);
        }
    }
}

2.编写中断服务函数

注意:此函数会自动清除中断标志位

DL_ADC12_getPendingInterrupt(ADC12_0_INST)
void ADC12_0_INST_IRQHandler(void)
{
    //DL_ADC12_getPendingInterrupt()函数会自动清除中断标志位
    switch(DL_ADC12_getPendingInterrupt(ADC12_0_INST))
    {   
        //MEM0装载数据
        case DL_ADC12_IIDX_MEM0_RESULT_LOADED:
            adc_flag = true;
            break;

        default:
            break;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值