在线时间1020 小时
UID299704
注册时间2011-6-18
NXP金币2187
TA的每日心情 | 开心 2024-4-10 22:38 |
---|
签到天数: 1335 天 [LV.10]以坛为家III
版主
- 积分
- 9049
- 最后登录
- 2024-4-13
|
本次测试的项目为电压测量,即利用LPC51U68内置的ADC外设采集电压来监测主系统的各项电压值,并根据电压值来研判主系统的工作状态。
阅读说明书后,个人觉得NXP的MCU还是非常适合作为工业应用,其ADC外设为12位 5M采样率再配上其最高100MHz的主频,基本上任何PWM方式控制全部都能高效、可靠胜任了。
今天晚上的实验是使用ADC1通道,在A0引脚读取电压值。原理图所示如下:
在官方示例的基础上,我们修改了其通道值即可完成程序的编写。最后通过PRINTF()函数将结果输出。
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- #define DEMO_ADC_BASE ADC0
- #define DEMO_ADC_SAMPLE_CHANNEL_NUMBER 1U
- #define DEMO_ADC_CLOCK_DIVIDER 0U
- ADC_DoSoftwareTriggerConvSeqA(DEMO_ADC_BASE);
- /* Wait for the converter to be done. */
- while (!ADC_GetChannelConversionResult(DEMO_ADC_BASE, DEMO_ADC_SAMPLE_CHANNEL_NUMBER, &adcResultInfoStruct))
- {
- }
- PRINTF("adcResultInfoStruct.result = %d\r\n", adcResultInfoStruct.result);
- PRINTF("A0 pin voltage = %d\r\n", adcResultInfoStruct.result * 330 / g_Adc_12bitFullRange);
- PRINTF("adcResultInfoStruct.channelNumber = %d\r\n", adcResultInfoStruct.channelNumber);
- PRINTF("adcResultInfoStruct.overrunFlag = %d\r\n", adcResultInfoStruct.overrunFlag ? 1U : 0U);
- PRINTF("\r\n");
复制代码
结果输出如下图所示:
- adcResultInfoStruct.result = 4073
- A0 pin voltage = 328
- adcResultInfoStruct.channelNumber = 1
- adcResultInfoStruct.overrunFlag = 0
复制代码
使用万用表的测量值如下图所示:
两者的测量值略有差别,不过,谁准也不太好说了。
|
|