LPC55S69之ADC

NXP提供的LPC55S69资料不是十分的完善,给的例子是单通道ADC,运行没问题,但是多通道ADC采样就有点问题了。

多通道ADC需要按照以下配置方式。

一、引脚。

二、外设。

添加ADC外设。

通用配置。

命令1。

命令2。

命令3。

触发0。

触发1。

触发2。

触发3。

中断配置默认即可。

说明。

一个命令对应一个触发,触发中的Target Comand ID就是对应于命令中的Comand ID。

理论上3个命令是对应3个触发,但是这里用了4个触发(可能是固件库的问题)。

第4个触发和第3个触发是一样的功能,只是触发号不同。

三、代码。

在上一步配置完成了,需要点击“更新源代码”。

这样,peripherals.c会按照之前的配置更新,这个是只读文件,不能直接在该文件中修改,需要在”外设“、”引脚“、”时钟“、”TEE“,四个配置窗口中修改,再更新过来。

第一个图片是开发,就是写代码的界面,第二个是”引脚“,第三个是”时钟“,第四个是”外设“,第五个是”TEE“。

修改工程中Source中的源文件,根据你的工程名不同而不同。

#include "fsl_debug_console.h"
#include "board.h"
#include "fsl_lpadc.h"
#include "peripherals.h"
#include "clock_config.h"
#include "pin_mux.h"
#include "fsl_power.h"

int main(void) {
    lpadc_conv_result_t mLpadcResultConfigStruct;

    CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    BOARD_InitPins();
    BOARD_BootClockPLL150M();
    BOARD_InitDebugConsole();
    BOARD_InitBootPeripherals();
    CLOCK_SetClkDiv(kCLOCK_DivAdcAsyncClk, 16U, true);
    CLOCK_AttachClk(kMAIN_CLK_to_ADC_CLK);
    POWER_DisablePD(kPDRUNCFG_PD_LDOGPADC);

    PRINTF("Please press any key to get user channel's ADC value.\r\n");
	while (1) {
        GETCHAR();

        LPADC_DoSoftwareTrigger(ADC0_PERIPHERAL, 1U); /* 1U对应触发0*/
        while (!LPADC_GetConvResult(ADC0_PERIPHERAL, &mLpadcResultConfigStruct, 0U)) {}
        if(mLpadcResultConfigStruct.triggerIdSource == 0) { /*触发0的结果*/
        	PRINTF("CH0 ADC0_P PIO0_23: %d\r\n", ((mLpadcResultConfigStruct.convValue) >> 3U));
        }

        LPADC_DoSoftwareTrigger(ADC0_PERIPHERAL, 2U); /* 2U对应触发1*/
        while (!LPADC_GetConvResult(ADC0_PERIPHERAL, &mLpadcResultConfigStruct, 0U)) {}
        if(mLpadcResultConfigStruct.triggerIdSource == 1) {
        	PRINTF("CH2 PIO0_15_GPIO_ARD PIO0_15: %d\r\n", ((mLpadcResultConfigStruct.convValue) >> 3U));
        }

        LPADC_DoSoftwareTrigger(ADC0_PERIPHERAL, 4U); /* 4U对应触发3*/
        while (!LPADC_GetConvResult(ADC0_PERIPHERAL, &mLpadcResultConfigStruct, 0U)) {}
        if(mLpadcResultConfigStruct.triggerIdSource == 2) {
        	PRINTF("CH12 PIO1_9_GPIO_ARD PIO1_9: %d\r\n", ((mLpadcResultConfigStruct.convValue) >> 3U));
        }
    }
}

点击Debug,调试。

在控制台中,输入个回车。

得到ADC采样的数据,这里没有转换为电压。参考电压是3.3V。

四、其它问题。

笔者尝试ADC0的通道8,但是在NXP的开发板上,采不到数据。

LPC55S69的内部温度传感器也是用ADC实现的,可以使用官方提供的例子,只有在例子中的工程才能打印浮点数。

自己新建工程打印不了浮点数,尽管配置和代码一样。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
LPC55S69处理器+RC630 NFC射频读卡芯片电子锁主板ALTIUM设计硬件原理图+PCB文件, 硬件4层板设计,大小为104mmx53mm,ALTIUM设计的工程文件,包括完整的原理图和PCB文件,已测试验证,可以做为你的设计参考。 主要器件型号列表: Library Component Count : 45 Name Description ---------------------------------------------------------------------------------------------------- A71CLS A7101CLTK2/T0BC2W,HVSON-8,NXP BATTERY Rechargeable Battery\3.1V,1mAh,Discharge 5uA,300 cycle\DxH4.8x1.4_SMD BUZZER2 AS-905I-LF,无源,Ф9×4.8mm,常州立翔,RoHS CAP ELECTRO1 100μF,25V,±20%,RXW101M1EBK-0611,Ф6.3×11mm,Lelon,RoHS CAP1 CC1206KKX7RDBB102,102,±10%,2KV,X7R,1206,YAGEO,RoHS CAT24CXX CAT24C04WI,SO-8,ON,RoHS CAT6219 CAT6219-330TD,TSOT-23-5,ON,RoHS CON12 Connector CON16_2EPAD 0.5FFC-16S,下接,抽屉式,SMT,RoHS CON2 2.5-2T,180°,PA46本色,WF2501-WSH02T02,WCON,RoHS CON6 Connector DIODE ZENER1 2.4V,150mW,BZX584C2V4,SOD-523,长电,RoHS DIODE-D DIODE1 LMBR140FT1G,SOD-123,LRC ESD-1D PESD5V0S1BA,SOD-323,NXP,RoHS PRTR5V0U2X PESD5V0S1BA,SOD-323,NXP,RoHS ESD-3 PESD3V3S2UT,SOT-23,NXP,RoHS HEADER 9X2 HOLE - 不上螺丝 HT7130A TJ7533AGF,SOT-89,HTC,RoHS INDUCTOR1 600Ω,1A,DCR200mΩ,BH03Y314S-600R,SMD,0603,丰晶,RoHS IS25LP064A-JBLE IS25LP064A-JBLE,ISSI,SOIC-8,RoHS JMP2 LED1 0603QRC,红色,0603,创光,RoHS LPC55S69 LPC55S69JBD100,HLQFP100,NXP MARKER MOSFET-P1 IRLML6402TRPBF,SOT-23,IR,RoHS MP1653 MP1653GTF-Z,SOT563,MPS MP6550 MP6550GG-Z,QFN-12,MPS NPN-1 BC846BLT1G,SOT-23,ON PCF8563 PCF85063AT,SO8,NXP,RoHS RC630 CLRC66301HN,HVQFN-33,NXP MF RC523 CLRC66301HN,HVQFN-33,NXP RES2 0Ω,0603,*,RoHS SN3218A SN3218AI424E,QFN24,SI-EN Technology SW-DPDT 8.5×8.5mm,自锁,,* SW-PB

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值