打印
[AIROC™ 蓝牙]

【英飞凌CYW20829测评】+ ADC实验

[复制链接]
277|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YangTwo|  楼主 | 2024-7-21 12:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 YangTwo 于 2024-7-21 12:48 编辑

本实验中的ADC配置为10位分辨率。输入电压施加在设备配置器中配置的其中一个gpio P3.5上。

通过设备配置器中的“电压范围”下拉菜单,可以设置电压范围为0 ~ 1.8 V或0 ~ 3.6 V。


ADC DC采样以定时器周期/定时器输入频率的间隔读取,该间隔可以在设备配置器中配置,如图所示。' makeInterval = Timer_period / Clock_frequency '本例中SysClk配置为96 MHz。因此,间隔为~104 uSec。


主要代码:
    while (1)
    {
        /* Monitoring for every one second */
        Cy_SysLib_Delay(1000);

        Cy_ADCMic_SetInterruptMask(adcmic_0_HW, CY_ADCMIC_INTR_DC);
        Cy_ADCMic_ClearInterrupt(adcmic_0_HW, CY_ADCMIC_INTR);

        /* Enable the DC monitoring */
        Cy_ADCMic_Enable(adcmic_0_HW);

        /* ADC Settling Time */
        Cy_SysLib_Delay(10);

        /* Enable ADC timer to generate interrupt for reading the sample */
        Cy_ADCMic_EnableTimer(adcmic_0_HW);

        /* Wait for DC monitoring samples to complete */
        while(batmon_cplt);

        for (int i = 0; i < NO_OF_DC_SAMPLES; i++)
        {
            batmon_dc_avg = batmon_dc_avg + batmon_samples[i];
        }

        batmon_dc_avg = batmon_dc_avg/NO_OF_DC_SAMPLES;

        /* Convert the ADC code in millivolts */
        batt_level_mv = Cy_ADCMic_CountsTo_mVolts((int16_t)batmon_dc_avg, adcmic_0_config.dcConfig->context );

        printf("batt_level_mv = %d \r\n",batt_level_mv);

        /* Reset for the next set of readings */
        batmon_cplt = 1;
        batmon_dc_avg = 0;
    }


实物测试:
根据任务要求,搭建简易电阻分压网络,在此选择两个10kΩ电阻串联,进而测试分压。



串口助手输出测试电压值:
接着测试了引脚悬空状态下P3.5引脚电压值:
串口结果:

看来平时不使用的PIN脚还是要做好处理,根据系统设计要求进行引脚悬空、上下拉或者接地处理。

使用特权

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

本版积分规则

17

主题

92

帖子

1

粉丝