登录/注册

lpc1768 adc复用

更多

在NXP LPC1768微控制器中,ADC(模数转换器)的引脚通过引脚复用功能(Pin Muxing) 实现多路复用。以下是配置步骤和要点:


1. ADC通道与引脚对应关系

LPC1768的ADC0模块支持8个通道(AD0.0~AD0.7),每个通道可映射到多个物理引脚(需通过寄存器配置选择)。常见复用引脚如下: ADC通道 可选引脚
AD0.0 P0.23 P1.30
AD0.1 P0.24 P1.31
AD0.2 P0.25 P1.32
AD0.3 P0.26 P1.33
AD0.4 P0.27 P1.34
AD0.5 P1.30 P1.35
AD0.6 P1.31 P1.36
AD0.7 P1.32 P1.37

注意:同一ADC通道不能同时使用两个引脚,需通过寄存器选择其一。


2. 配置步骤

(1) 选择引脚功能(PINSEL寄存器)

通过 PINSEL0/PINSEL1/PINSEL2/PINSEL3 寄存器将GPIO配置为ADC功能(通常选择 Function 01Function 10)。

示例:配置 P0.23AD0.0

// P0.23 属于 PINSEL1[15:14]
LPC_PINCON->PINSEL1 &= ~(3 << 14);  // 清除原有配置
LPC_PINCON->PINSEL1 |=  (1 << 14);  // 设置 Function 01 (AD0.0)

(2) 配置引脚模式(PINMODE寄存器)

禁用上拉/下拉电阻,使引脚处于模拟模式(高阻态):

// P0.23 对应 PINMODE1[15:14]
LPC_PINCON->PINMODE1 &= ~(3 << 14);  // 清除模式
LPC_PINCON->PINMODE1 |=  (2 << 14);  // 设置模式: 无上拉/下拉 (0b10)

(3) 初始化ADC模块


3. 读取ADC值

等待转换完成并读取结果:

while (!(LPC_ADC->ADDR0 & (1 << 31)));  // 等待DONE标志位
uint16_t adc_value = (LPC_ADC->ADDR0 >> 4) & 0xFFF;  // 提取12位结果

4. 关键注意事项

  1. 避免冲突:同一时刻一个ADC通道只能使用一个物理引脚。
  2. 模拟模式:必须通过PINMODE禁用数字功能(上拉/下拉)。
  3. 时钟限制:ADC时钟(ADCCLK)不得超过13MHz(通过分频控制)。
  4. 电源管理:ADC默认关闭,需通过PCONP寄存器使能。
  5. 多通道采样:使用ADCRSEL字段选择多个通道,结合突发模式(Burst Mode)提高效率。

参考代码(以AD0.0为例)

#include "LPC17xx.h"

void ADC_Init(void) {
    // 1. 配置P0.23为AD0.0
    LPC_PINCON->PINSEL1 |= (1 << 14);   // P0.23: Function 01 (AD0.0)
    LPC_PINCON->PINMODE1 |= (2 << 14);  // 无上拉/下拉

    // 2. 使能ADC电源
    LPC_SC->PCONP |= (1 << 12);

    // 3. 配置ADC时钟(PCLK=100MHz时,分频值=12 → ADC时钟≈7.14MHz)
    LPC_ADC->ADCR = (1 << 21)          // 使能ADC
                  | (12 << 8);         // 分频值=12
}

uint16_t ADC_Read(uint8_t channel) {
    LPC_ADC->ADCR &= ~0xFF;            // 清除通道选择
    LPC_ADC->ADCR |= (1 << channel);   // 选择新通道
    LPC_ADC->ADCR |= (1 << 24);        // 启动转换

    while (!(LPC_ADC->ADDR[channel] & (1 << 31))); // 等待完成
    return (LPC_ADC->ADDR[channel] >> 4) & 0xFFF;  // 返回12位结果
}

// 使用示例
int main() {
    ADC_Init();
    uint16_t result = ADC_Read(0);  // 读取AD0.0
}

通过以上步骤,即可在LPC1768中灵活复用ADC引脚。详细引脚映射请查阅 《LPC1768 User Manual》 第8章(I/O Configuration)和第31章(ADC)。

使用 SSP 的 LPC1768 上的 SPI 传输数据损坏是什么原因导致的?

我正在 SPI 主从模式下使用 LPC1768 SSP 外设。使用基于ISR的SPI传输时,我遇到传输数据的问题。这是我观察到的行为: 预期行为: MOSI 应发送:11 22 33 44 55

2026-04-28 07:53:16

是否可以将ESP8266-01与lpc1768接口?

我正在尝试从连接到 lpc1768 uC 的温度传感器读取数据,并通过 wifi 将传感器值发送到我的手机。我在我的项目中使用 CMSIS。我是 ESP8266-01 的新手。我的问题是 1. 是否

2023-05-22 10:38:34

LPC1768 RTC问题如何解决?

我们在我们的产品中使用了 LPC1768 微控制器, 如下观察到的问题, 1)RTC增量问题(同板RTC不工作), (触摸图 32khz 晶体或电容器,RTC 工作正常) 与将任何示波器探头接触到工作正常的电容器 RTC 相同。 但仪器 RTC 上的同一板电源不工作。 什么是问题?

2023-05-16 06:08:11

LPC1768下载软件

LPC1768下载软件

资料下载 吴湛 2021-12-04 10:36:13

NXP LPC1768最小系统板Keil开发环境流程演示

关键字:NXP LPC1768 最小系统 Keil MDK 开发环境 J-Link 仿真器概述:以 MDK4.74版本配合 J-Link 仿真器为例演示一下最小系统板的调试过程。首先运行

资料下载 佚名 2021-11-17 16:06:03

NXP LPC1768最小系统板硬件介绍

NXP LPC1768最小系统板硬件介绍关键字:NXP LPC1768 LPC1700 ARM Cortex-M3 RISC 最小系统 mini

资料下载 479461 2021-11-17 14:21:02

DC1768A-模式

DC1768A-模式

资料下载 佚名 2021-05-17 12:30:38

在Keil C51下使用sprintf的死机问题应该如何解决

前段时间在使用KEIL V4 来给我的LPC1768单片机编写程序,但程序总是有bug,经常有时候能运行,有时候又会死机,跟踪调试了一下,发现每次都在sprintf()函数这边出问题,到这地方程序就死掉了,这一句基本形式如下面这样:

资料下载 敷衍作笑谈 2019-09-04 17:27:00

如何将hex文件编程到LPC1768

有人告诉我使用已过时的 LPC-Link2 对 LPC1768 设备进行编程。我看到 MCU-Link Pro Debug probe 和 MCU-Link Debug Probe 被列为 OBS

2023-05-06 07:12:17

LPC1768 PWM负载问题求助

LPC1768 - PWM - 负载问题

2023-04-20 07:03:55

NXP lpc1768设计手册哪里可以免费找到

arm lpc1768设计手册哪里可以免费找到

2022-04-14 09:58:58

LPC1768开发板的相关资料推荐

介绍LPC1768开发板下载软件文章目录前言软件包二、软件内选择1.界面2.读入数据总结前言LPC1768开发板下载过程与单片机下载过程极为相似软件包链接:https://pan.baidu.com

2022-02-07 07:21:15

NXP LPC1768最小系统板硬件相关资料下载

NXP LPC1768最小系统板硬件介绍关键字:NXP LPC1768 LPC1700 ARM Cortex-M3 RISC 最小系统 mini

2021-11-25 06:56:07

关于LPC1768芯片的keil5逻辑分析器使用问题

我使用的芯片是LPC1768,写程序用KEIL5现在遇到的问题是需要用keil5 debug中的logic analyzer功能用于检测IO口的状态,但是无法像STM32那样添加引脚情况如下图:有没有用过LPC1768

2019-07-16 10:43:26

LPC1768开发板的特性及USB通信应用方案的研究

通信系统中,通常LPC1768 开发板可用于应用例程中的重要元件。本文以LPC1768 开发板为核心,并且分析了其主要的特性,如高精度、高速度、高信噪比、良好的实用性等特点使其成为模/数转换的极佳

2019-07-16 08:03:00

7天热门专题 换一换
相关标签