本文主要是介绍RT1052 A/D数据采集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在开发板的例程中,提供了A/D数据采集的程序,使用时可调节板上的电位器来调节电压值来改变采集结果,通过串口调试工具可观察其采样值如图1所示。
<ignore_js_op>
![](/upload/202206/15/202206152322514423.png)
图1 数据采集效果
利用前面所介绍的OLED屏显示方法与A/D采集相结合,可达到图2所示的直观显示效果。
<ignore_js_op>
![](/upload/202206/15/202206152322517523.png)
图2 ADC 数据采集
实现图示效果的主程序如下:
- int main(void)
- {
- adc_config_t adcConfigStrcut;
- adc_channel_config_t adcChannelConfigStruct;
- BOARD_ConfigMPU();
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- PRINTF("\r\nADC polling Example.\r\n");
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(8,0,"OK1052-C");
- OLED_ShowString(8,2,"ADC TEST");
- OLED_ShowString(8,4,"ADC Value:");
- ADC_GetDefaultConfig(&adcConfigStrcut);
- ADC_Init(DEMO_ADC_BASE, &adcConfigStrcut);
- #if !(defined(FSL_FEATURE_ADC_SUPPORT_HARDWARE_TRIGGER_REMOVE) && FSL_FEATURE_ADC_SUPPORT_HARDWARE_TRIGGER_REMOVE)
- ADC_EnableHardwareTrigger(DEMO_ADC_BASE, false);
- #endif
- /* Do auto hardware calibration. */
- if (kStatus_Success == ADC_DoAutoCalibration(DEMO_ADC_BASE))
- {
- PRINTF("ADC_DoAntoCalibration() Done.\r\n");
- }
- else
- {
- PRINTF("ADC_DoAutoCalibration() Failed.\r\n");
- }
- /* Configure the user channel and interrupt. */
- adcChannelConfigStruct.channelNumber = DEMO_ADC_USER_CHANNEL;
- adcChannelConfigStruct.enableInterruptOnConversionCompleted = false;
- while (1)
- {
- ADC_SetChannelConfig(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP, &adcChannelConfigStruct);
- while (0U == ADC_GetChannelStatusFlags(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP))
- {
- }
- OLED_ShowNum(20,6,ADC_GetChannelConversionValue(DEMO_ADC_BASE, DEMO_ADC_CHANNEL_GROUP),4,16);
- delay_ms(500);
- }
- }
复制代码
在此基础上若添加相应的数值变换,则可达到一个数字电压表的效果。
这篇关于RT1052 A/D数据采集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!