查看: 4203|回复: 1

[原创] 【LPC54114之4板载电位器AD】

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3406

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9010
    最后登录
    2025-7-23
    发表于 2017-5-7 18:23:22 | 显示全部楼层 |阅读模式
    本篇测试板载12AD,通过阅读Datasheet可知道,5M的转换率,还是挺快的。板载有一个可调电位器,电路如图1所示:

    本次只测试基本的AD转换,实际项目中可测试中断。这个项目中,算是第一次使用复用引脚输出,所以,引脚的初始化定义很重要,如图2所示:
    1. CLOCK_EnableClock(kCLOCK_Adc0); /* SYSCON->AHBCLKCTRL[0] |= SYSCON_AHBCLKCTRL_ADC0_MASK; */
    2.           IOCON_PinMuxSet(IOCON, 1, 0, IOCON_MODE_INACT | IOCON_FUNC0 | IOCON_ANALOG_EN | IOCON_INPFILT_OFF);/
    复制代码

    接下来就是定义时钟和初始化AD,将转换数据付给一个全局变量,在watch窗口中,观察数据变化,如图3,图4所示
    1. void ADC_Configuration(void)
    2. {
    3.     adc_config_t adcConfigStruct;
    4.     adc_conv_seq_config_t adcConvSeqConfigStruct;

    5.     /* Configure the converter. */
    6.     adcConfigStruct.clockMode = kADC_ClockSynchronousMode; /* Using sync clock source. */
    7.     adcConfigStruct.clockDividerNumber = 1;                /* The divider for sync clock is 2. */
    8.     adcConfigStruct.resolution = kADC_Resolution12bit;
    9.     adcConfigStruct.enableBypassCalibration = false;
    10.     adcConfigStruct.sampleTimeNumber = 0U;
    11.     ADC_Init(ADC0, &adcConfigStruct);

    12.     /* Use the temperature sensor input to channel 0. */
    13.     ADC_EnableTemperatureSensor(ADC0, false);

    14.     /* Enable channel 0's conversion in Sequence A. */
    15.     adcConvSeqConfigStruct.channelMask = (1U << 3); /* Includes channel 0. */
    16.     adcConvSeqConfigStruct.triggerMask = 0U;
    17.     adcConvSeqConfigStruct.triggerPolarity = kADC_TriggerPolarityNegativeEdge;
    18.     adcConvSeqConfigStruct.enableSingleStep = false;
    19.     adcConvSeqConfigStruct.enableSyncBypass = false;
    20.     adcConvSeqConfigStruct.interruptMode = kADC_InterruptForEachSequence;
    21.     ADC_SetConvSeqAConfig(ADC0, &adcConvSeqConfigStruct);
    22.     ADC_EnableConvSeqA(ADC0, true); /* Enable the conversion sequence A. */
    23. }
    复制代码
    1. ADC_DoSoftwareTriggerConvSeqA(ADC0);
    2.                
    3.    while(!ADC_GetChannelConversionResult(ADC0, 3U, &adcResultInfoStruct))
    4.          {}
    5.              ADResult = adcResultInfoStruct.result;
    6.                   ADNumber = adcResultInfoStruct.channelNumber ;
    7.                   Delay_nms(0xAFFF);
    复制代码

    使用螺丝刀转动电位器,可以观察数值的变化,如图5所示:

    这款芯片AD也挺多,有时间要多路测试。

    图1

    图1

    图5

    图5
    加油哦
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2019-4-1 22:48
  • 签到天数: 302 天

    连续签到: 1 天

    [LV.8]以坛为家I

    87

    主题

    7322

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    4614
    最后登录
    2021-1-25
    发表于 2017-11-29 13:48:41 | 显示全部楼层
    来看一看
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-26 07:57 , Processed in 0.086969 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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