[AIROC™ 蓝牙] 【英飞凌CYW20829测评】+ ADC实验

[复制链接]
550|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。


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

  5.         Cy_ADCMic_SetInterruptMask(adcmic_0_HW, CY_ADCMIC_INTR_DC);
  6.         Cy_ADCMic_ClearInterrupt(adcmic_0_HW, CY_ADCMIC_INTR);

  7.         /* Enable the DC monitoring */
  8.         Cy_ADCMic_Enable(adcmic_0_HW);

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

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

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

  15.         for (int i = 0; i < NO_OF_DC_SAMPLES; i++)
  16.         {
  17.             batmon_dc_avg = batmon_dc_avg + batmon_samples[i];
  18.         }

  19.         batmon_dc_avg = batmon_dc_avg/NO_OF_DC_SAMPLES;

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

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

  23.         /* Reset for the next set of readings */
  24.         batmon_cplt = 1;
  25.         batmon_dc_avg = 0;
  26.     }


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



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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

110

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部