查看: 1060|回复: 2

[原创] LPC51U68的电压监测

[复制链接]
  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2019-12-18 22:54:22 | 显示全部楼层 |阅读模式
        本次测试的项目为电压测量,即利用LPC51U68内置的ADC外设采集电压来监测主系统的各项电压值,并根据电压值来研判主系统的工作状态。
        阅读说明书后,个人觉得NXP的MCU还是非常适合作为工业应用,其ADC外设为12位 5M采样率再配上其最高100MHz的主频,基本上任何PWM方式控制全部都能高效、可靠胜任了。
        今天晚上的实验是使用ADC1通道,在A0引脚读取电压值。原理图所示如下:
    A0引脚图.png
        在官方示例的基础上,我们修改了其通道值即可完成程序的编写。最后通过PRINTF()函数将结果输出。
    1. /*******************************************************************************
    2. * Definitions
    3. ******************************************************************************/
    4. #define DEMO_ADC_BASE ADC0
    5. #define DEMO_ADC_SAMPLE_CHANNEL_NUMBER 1U
    6. #define DEMO_ADC_CLOCK_DIVIDER 0U

    7. ADC_DoSoftwareTriggerConvSeqA(DEMO_ADC_BASE);

    8. /* Wait for the converter to be done. */
    9. while (!ADC_GetChannelConversionResult(DEMO_ADC_BASE, DEMO_ADC_SAMPLE_CHANNEL_NUMBER, &adcResultInfoStruct))
    10. {
    11. }
    12. PRINTF("adcResultInfoStruct.result        = %d\r\n", adcResultInfoStruct.result);
    13. PRINTF("A0 pin voltage                    = %d\r\n", adcResultInfoStruct.result * 330 / g_Adc_12bitFullRange);
    14. PRINTF("adcResultInfoStruct.channelNumber = %d\r\n", adcResultInfoStruct.channelNumber);
    15. PRINTF("adcResultInfoStruct.overrunFlag   = %d\r\n", adcResultInfoStruct.overrunFlag ? 1U : 0U);
    16. PRINTF("\r\n");
    复制代码


        结果输出如下图所示:
    1. adcResultInfoStruct.result        = 4073
    2. A0 pin voltage                    = 328
    3. adcResultInfoStruct.channelNumber = 1
    4. adcResultInfoStruct.overrunFlag   = 0
    复制代码


        使用万用表的测量值如下图所示:
    万用表测量图.png
        两者的测量值略有差别,不过,谁准也不太好说了。


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-28 15:52
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    2

    主题

    33

    帖子

    0

    注册会员

    Rank: 2

    积分
    172
    最后登录
    2020-12-29
    发表于 2020-1-10 13:10:33 | 显示全部楼层
    您好,请问这个不需要配置ADC引脚吗?例程并没有说明。我按照规格书ADC模式配置了引脚,但悬空的时候(外部无输入),存在一个3.3V电压
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-28 15:52
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    2

    主题

    33

    帖子

    0

    注册会员

    Rank: 2

    积分
    172
    最后登录
    2020-12-29
    发表于 2020-1-10 13:48:20 | 显示全部楼层
    附上我的代码:
    /*******************************************************************************
    * Definitions
    ******************************************************************************/
    #define DEMO_ADC_BASE ADC0
    #define DEMO_ADC_SAMPLE_CHANNEL_NUMBER 2U
    #define DEMO_ADC_CLOCK_DIVIDER 0U

    void ADC_InitPins(void)
    {
      const uint32_t port0_pin31_config = (
        IOCON_PIO_FUNC0 |                                        /* Pin is configured as ADC */
        IOCON_PIO_MODE_INACT |                                   /* No addition pin function */
        IOCON_PIO_INV_DI |                                       /* Input function is not inverted */
        IOCON_PIO_DIGITAL_OFF |                                  /* Disable digital function */
        IOCON_PIO_INPFILT_OFF |                                  /* Input filter disabled */
        IOCON_PIO_SLEW_STANDARD |                                /* Standard mode, output slew rate control is enabled */
        IOCON_PIO_OPENDRAIN_DI                                   /* Open drain is disabled */
      );
      IOCON_PinMuxSet(IOCON, PORT0_IDX, PIN31_IDX, port0_pin31_config); /* PORT0 PIN31 (coords: 9 is configured as ADC */
    }

    void main()
    {
    ADC_DoSelfCalibration(DEMO_ADC_BASE);
    ADC_DoSoftwareTriggerConvSeqA(DEMO_ADC_BASE); /* Trigger the ADC and start the conversion. */
    /* Wait for the converter & transfer to be done. */
    while (!ADC_GetChannelConversionResult(DEMO_ADC_BASE, DEMO_ADC_SAMPLE_CHANNEL_NUMBER, &adcResultInfoStruct))
    {               
    }
    DD=adcResultInfoStruct.result;
    }
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-25 14:41 , Processed in 0.119949 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表