打印
[G32A]

极海G32A1465汽车通用MCU评估板测试06+内部ADC调试

[复制链接]
56|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天和分享一下极海ADC调试过程
一:简介:2 个 12 位精度的 ADC,各通道转换模式有单次、连续转换。还可以选择硬件转换触发器和硬件通道。
主要特征:
四个输入时钟源、32 个单端外部模拟输入、可选择的参考电压:外部或交替
输出
单端 12 位、10 位、8 位输出模式输出以右对齐的无符号格式为单端
转换模式:单次转换模式、连续转换模式
高性能:线性逐次逼近算法,高达 12位分辨率、自校准、可编程采样时间转换速度/功率、自动比较大于,小于或等于中断,在范围内或超出范围及可编程值
DMA 支持
转换完成/硬件平均完成标志和中断
可选择的硬件转换触发器与硬件通道选择9)
硬件平均功能
在低功耗模式下运行,降低噪声

二:软件编写流程:
1:系统时钟的选择:根据电路板的硬件设计,由于该开发板并没有外部晶振,这里我们使用的是内部的RC时钟,然后配置ADC的时钟分频器,确保ADC在工作时频率正确,最后使能使用的ADC1的时钟
2:ADC的基本参数配置:
选择合适的ADC模式,支持多种转换模式,单次转换和多次转换的模式,我个人认为还是使用连续多次转换的模式效果更好些。设置好合适的采样周期,ADC的采集到的数据不仅仅和外部传感器输入的实际数据有关,和采样的频率也息息相关,经过我个人的工作经历来说,合适的采样时间才能采集到准确的AD数据,通常采集频率过快,会导致ADC数据不稳定。较高的采样时间会增加数据的稳定性,但是这样会增加程序运行的时间。
3:在软件中配置好ADC转换的来i元,可以时外部触发、定时器或者是中断处触发等等触发方式。
4:开始转换并读取ADC的采集数据结果。

三:软件代码:
void ADC_init(void)
{
    /* Reset adc module */
    ADC_Reset(ADC_INSTANCE);
    /* Initialize ADC based on configuration values */
    ADC_ConfigConverter(ADC_INSTANCE,&adcConvCfg0);
    /* Verify ADC */
    ADC_AutoCalibration(ADC_INSTANCE);
    /* Enable hardware comparison function */
    ADC_ConfigHwCompare(0,&adcCompareCfg0);
}
float ADC_readValue(void)
{
    uint16_t partAdcValue;
    /* Trigger using software */
    ADC_ConfigChan(ADC_INSTANCE, 0u, &adcChanCfg0);
    /* waiting for conversion to complete */
    ADC_WaitConvDone(ADC_INSTANCE);
    /* Obtain conversion flag bits */
    g_compareFlag = ADC_ReadConvCompleteFlag(ADC_INSTANCE,0);
    /* Obtain conversion results */
    ADC_ReadChanResult(ADC_INSTANCE, 0u, &partAdcValue);
    return (float)partAdcValue;
}
       SysTick_Delay_ms(250);
        /* Calculated voltage value */
        adcValue = ADC_readValue() / g_adcMaxValue * g_adcDifference;

        /* serial output ADC conversion value ,Compare flag bits */
        printf("ADC conversion voltage value = %fV    Compare flag bits = %d\r\n",adcValue,g_compareFlag);

        if(g_compareFlag == 0)
        {
            LED_On(LED_RED);
            LED_Off(LED_GREEN);
        }
        else
        {
            LED_On(LED_GREEN);
            LED_Off(LED_RED);
        }
测试ADC输出图片:

实验现象:当旋转板载的电位器时候,可以看到串口工具内ADC的变化情况,同时可以看到板载RGB灯的变化情况;
测试视频如下:

使用特权

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

本版积分规则

49

主题

126

帖子

0

粉丝