LPC15xx通信与模拟接口实战:USART、ADC、DAC配置与PCB布局避坑指南

LPC15xx通信与模拟接口实战:USART、ADC、DAC配置与PCB布局避坑指南 1. 项目概述深入理解LPC15xx的通信与模拟接口在嵌入式系统开发中选型一颗合适的微控制器不仅要看它的主频和内存更要看它的“外设工具箱”是否趁手。NXP的LPC15xx系列基于经典的ARM Cortex-M3内核其真正的亮点在于它提供了一套非常均衡且强大的通信与模拟接口组合。很多工程师拿到数据手册看到USART、ADC、DAC这些参数表格往往只关心几个关键指标比如最高波特率、ADC分辨率然后就匆匆开始画原理图、写代码。但实际做项目时通信不稳定、ADC采样值跳动大、DAC输出有毛刺等问题却频频出现最后不得不回头啃数据手册才发现很多坑其实厂家已经给出了提示只是被我们忽略了。今天我就结合自己多年使用LPC15xx系列尤其是LPC1549的经验抛开官方文档那些冰冷的参数表格重点聊聊它的USART、ADC和DAC这几个核心外设在实际应用中你需要真正关心的特性、配置要点以及那些容易踩坑的细节。我们的目标不是复述数据手册而是让你理解这些参数背后的意义并知道如何在项目中正确、稳定地使用它们。无论你是正在评估这颗芯片还是已经用它做项目遇到了问题相信这篇深度解析都能给你带来实实在在的帮助。2. USART接口不止于波特率深入时序与可靠性设计USART通用同步/异步收发器是我们最熟悉的老朋友但LPC15xx的USART有些不一样的玩法。官方数据给出同步主模式最高15 Mbit/s同步从模式最高18 Mbit/s的指标这在Cortex-M3级别的MCU中算是相当出色的性能。但高波特率也意味着对时序更严苛的要求直接照搬标准库函数而不加思考很可能在高速或长距离通信时翻车。2.1 核心时序参数解读与电路设计影响数据手册里的时序表Table 21是保证通信物理层可靠性的圣经。我们拆开看几个关键参数tsu(D) 数据建立时间Master模式最小33ns在时钟SCLK的采样边沿通常是上升沿到来之前数据线如MOSI上的信号必须提前至少33ns保持稳定。这个时间留给接收方Slave的输入缓冲器去锁存数据。如果Slave端器件如传感器、另一颗MCU的数据输出延迟tv(Q)较大或者PCB走线过长引起信号延迟就可能违反这个建立时间。th(D) 数据保持时间Master模式最小0ns在时钟采样边沿之后数据信号还需要保持稳定的最短时间。LPC15xx要求0ns这很宽松意味着时钟边沿一过数据就可以变化。但你要注意Slave端器件的要求它可能需要几个纳秒的保持时间。tv(Q) 数据输出有效时间Master模式最大7ns这是指从时钟边沿到主设备数据引脚上输出数据变得有效的时间。这个值很小最大7ns说明LPC15xx的IO口驱动能力很强输出延迟小有利于满足Slave端的建立时间要求。th(Q) 数据输出保持时间Master模式最小2ns时钟边沿后主设备数据引脚保持上一个数据值的时间。这个时间保证了Slave端有足够的保持时间窗口。这些时序参数对你意味着什么它们共同决定了你系统能跑到的最高实际波特率。计算公式可以简化为一个比特位的周期 Tbit 必须大于tsu(D) th(D) 主设备tv(Q) 信号在PCB上的传播延迟 一定的裕量。虽然手册给了15Mbps的理论值但在实际PCB上你需要为信号完整性留出余量。我的经验是在双面板、走线规范阻抗控制一般的情况下稳定运行在10Mbps以下是没问题的。如果想冲击15Mbps必须采用四层板严格控制时钟和数据线的等长与阻抗并可能需要在驱动端串联小电阻如22欧姆来改善信号过冲。注意手册特别提到USART功能可以映射到几乎所有数字IO引脚这得益于其开关矩阵Switch Matrix设计提供了极大的布局灵活性。但有两个例外PIO0_22和PIO0_23是开漏Open-Drain引脚通常预留给I2C总线。虽然理论上你也可以把USART映射到这里但开漏输出无法主动驱动高电平需要外部上拉电阻在高速同步模式下会严重劣化上升沿速度导致时序 violation。因此务必避免将USART的时钟或数据输出信号分配到这两个引脚上。2.2 同步模式与异步模式的选择策略LPC15xx的USART支持全双工异步模式UART和同步模式SPI-like。同步模式因为有独立的时钟线SCLK可以实现更高的速率和更精确的位同步这也是它能达到15Mbps的原因。何时选择同步模式高速数据流例如驱动高速串行LCD屏、与高速ADC/DAC芯片通信、FPGA与MCU间大数据量交换。需要时钟同步的从设备很多传感器、存储器如SPI Flash需要主设备提供时钟。抗干扰要求高同步通信对波特率误差的容忍度比异步通信高在时钟精度不高的系统中更稳定。何时坚持用异步模式连接标准设备如GPS模块、蓝牙串口、GSM模块、调试串口等这些设备通常只支持异步UART。节省引脚异步模式只需要TX和RX两根线加上可选的RTS/CTS比同步模式至少TX, RX, SCLK三根更省IO。远距离通信结合RS-485收发器异步UART是工业现场总线的常见基础。配置心得在LPC15xx的SDK或寄存器配置中你需要明确设置USART为同步模式并正确配置时钟极性CPOL和相位CPHA这需要与从设备严格匹配。一个常见的错误是忽略了时钟的空闲状态CPOL导致第一个数据位采样出错。2.3 波特率生成器的精密计算在同步模式下比特率Bit Rate直接由USART模块的输入时钟PCLK和波特率分频器BRGVAL决定。公式为Tcy(clk) 1 / Bit Rate (BRGVAL) / PCLK。这里的Tcy(clk)就是一个SCLK时钟周期。关键步骤确定PCLK首先查清你给USART模块分配的外设时钟PCLK频率是多少。这取决于系统时钟树配置。计算BRGVALBRGVAL PCLK / Desired_BitRate。例如PCLK60MHz目标比特率10Mbps则BRGVAL 6。检查误差BRGVAL必须是整数。如果不是就需要调整PCLK或接受一个接近的比特率。比特率误差应控制在从设备允许的范围内通常2%。考虑极限BRGVAL的最小值通常为1。当PCLK60MHz时理论最高比特率就是60Mbps但受限于前面讨论的IO时序特性实际达不到15Mbps是一个经过验证的可靠上限。避坑指南在低功耗应用中系统主频可能会动态调整。如果你在运行中改变了PCLK的频率必须重新计算并配置USART的BRGVAL否则通信会立刻失败。最好将USART的时钟源配置为一个独立的、稳定的时钟分支。3. 12位ADC从参数表到高精度采样的实战之路LPC15xx的12位ADC绝对是一个亮点2 Msps每秒百万次采样的吞吐率在同类MCU中很有竞争力。但高采样率和高精度往往是一对矛盾需要精心设计才能兼得。3.1 关键静态特性深度剖析表24里的参数不是用来仰望的而是设计的约束条件。分辨率与量程12位分辨率理论上有4096个码值。输入电压范围是0到VDDA模拟电源电压。这意味着你的参考电压就是VDDA。如果你想获得最好的精度必须保证VDDA极其干净和稳定。一个纹波大的VDDA会直接导致ADC读数波动。积分非线性INL与差分非线性DNL这是衡量ADC精度的核心。INLEL(adj)最大±2 LSB。这意味着ADC实际的转换曲线与理想直线之间的最大偏差不超过2个最小刻度。假设VDDA3.3V1 LSB 3.3V / 4096 ≈ 0.806mV。±2 LSB的INL意味着最大误差约为±1.61mV。这对于大多数传感器如温度、压力的测量是足够的。DNLED最大±2 LSB。这表示每个码值的宽度与理想1 LSB的差异。如果DNL 1 LSB就可能出现失码即某些数字码值永远不会出现。LPC15xx保证DNL ≤ ±2 LSB这意味着在极端情况下可能有个别码值宽度异常但通常不会导致连续的失码可靠性有保障。偏移误差EO与增益误差EGEO±3 LSB。这是零点误差可以通过软件校准消除。你可以在输入端接地0V读取一个平均值如Voffset_raw后续所有采样值减去这个值即可。EG±0.12% (在2Msps时)。这是满量程误差也与参考电压VDDA的精度有关。校准EG需要输入一个已知的、接近VDDA的精确电压如3.0V的基准源根据读数偏差来计算一个校正系数。公式大致为校正系数 理论码值 / 实际平均码值后续采样值乘以这个系数。实操建议对于精度要求不苛刻的应用如电池电压检测、电位器读取可以忽略INL/DNL只做简单的软件零点校准测一次地。对于精度要求高的应用如电子秤、精密温度测量必须做两点校准零点满点并尽量使用ADC专用的、低噪声的VREFP_ADC引脚接入一个外部精密基准电压源如REF3033而不是直接使用VDDA。3.2 动态特性与输入阻抗的陷阱这是最容易出问题的地方。采样频率fs与输入阻抗Zi手册给出在2Msps和25°C时输入阻抗典型值仅为0.1 MΩ100kΩ。而且这个阻抗与采样频率成反比Zi ∝ 1 / (fs * Ci)其中Ci是总的输入电容包括内部电容Cia和引脚电容Cio。这意味着采样率越高ADC输入端看起来的阻抗就越低。这意味着什么你的信号源必须有足够低的输出阻抗来驱动这个动态负载。如果信号源阻抗过高例如用一个100kΩ的电位器直接分压给ADC在ADC内部采样开关接通采样的瞬间会因为信号源无法快速给采样电容充电而导致采样电压不准确表现为读数不稳定、随采样率变化。输入RC电路模型手册图39揭示了ADC输入端的等效电路。它内部有一个开关电阻Rsw 5-25Ω和一个采样电容。外部信号源需要驱动这个RC网络。如果外部信号源阻抗Rs和输入电容Ci构成了一个低通滤波器其时间常数τ (Rs Rsw) * Ci必须远小于ADC的采样时间窗口否则电压来不及建立到稳定值。设计黄金法则在ADC输入引脚前必须加一个RC低通滤波器和/或电压跟随器。RC滤波器一个1kΩ的电阻串联加上一个100pF到1nF的电容对地。电阻限制了从信号源汲取的尖峰电流电容提供了局部电荷池帮助在采样瞬间稳定电压。截止频率应高于你关心的信号频率但远低于采样频率的一半满足奈奎斯特定理以滤除高频噪声。电压跟随器运放对于高输出阻抗的传感器如热电偶、某些气体传感器必须使用运放构成电压跟随器进行阻抗变换将高阻抗输出转换为低阻抗输出再送入ADC。3.3 噪声环境下的ADC性能提升实战手册第14.1节的应用笔记是精华我用自己的话和实战经验复述并扩展一下布局是生命线ADC输入走线必须短、直并远离任何数字信号线特别是高频的时钟线、PWM线、数据总线。最好在PCB布局时用模拟地平面将ADC输入线“包裹”起来进行屏蔽。电源去耦至关重要即使VDDA和数字VDD来自同一个电源也必须在靠近芯片的VDDA和VSSA引脚之间放置高质量的退耦电容。我的标准做法是一个10μF的钽电容或陶瓷电容储能并联一个0.1μF的陶瓷电容滤高频且电容的GND端必须直接连接到干净的模拟地AGND过孔。地平面分割与单点连接将模拟地AGND和数字地DGND在物理上分割但必须在一点连接通常这个连接点选在芯片下方或电源入口处。确保所有模拟元件ADC基准源、运放的接地都连接到AGND区域所有数字元件接地到DGND区域。错误的接地会导致数字噪声通过地线串扰到ADC。睡眠模式采样在极端噪声环境下手册建议在ADC转换期间将设备置于睡眠模式。这是因为睡眠模式下CPU和大部分数字逻辑时钟停止芯片内部的数字开关噪声大大降低。具体操作是启动ADC转换 - 触发睡眠模式 - ADC转换完成中断唤醒CPU。这需要配置好相应的功耗模式和中-断唤醒源。4. 10位DAC输出模拟量的精度与速度权衡LPC15xx集成了一个10位DAC对于需要生成模拟控制信号如可调电压基准、波形生成、音频输出的应用非常方便。4.1 DAC核心参数与电路设计要点看表25我们关注几个关键点建立时间ts最大2.5μs。这是DAC输出从收到新数字码到稳定在目标电压值误差范围内通常是±0.5 LSB所需的时间。它直接决定了DAC的输出刷新率上限。虽然转换频率fc(DAC)典型值可达500 kSamples/s但受限于建立时间实际稳定的更新率会低于这个值。如果你想输出一个正弦波其频率必须远低于1/(2.5μs * 点数)。输出阻抗RO典型300Ω。这个阻抗不算低。这意味着你不能直接用DAC引脚去驱动重负载例如低阻抗的耳机、电机。直接连接会导致输出电压被拉低精度丧失。输出电压范围VO最大VDDA - 0.3V。即使你写入满量程数字值1023输出电压也无法达到VDDA会有一个压差。设计电路时你的后级电路如运放、比较器的输入范围必须覆盖这个实际输出范围。线性度误差INL/DNLINL最大±3 LSBDNL最大±0.4 LSB。对于10位DAC这个精度在开环控制如设定一个固定阈值中通常足够但如果用于闭环控制或高精度波形生成可能需要进行软件查表补偿。外围电路设计手册图41的测试电路DAC输出接10kΩ到地揭示了一个重要信息DAC需要有一个对地的负载来保证正常工作。在实际应用中最佳实践是电压跟随器使用一个单位增益带宽足够远高于你关心的信号频率的运放构成电压跟随器。DAC输出接运放同相端运放输出端反馈到反相端。运放提供了极高的输入阻抗几乎不吸取DAC电流和极低的输出阻抗可以驱动后续电路。这是最推荐的做法。RC低通滤波在DAC输出端串联一个电阻如100Ω并接一个对地电容如0.1μF构成一个无源低通滤波器。这可以平滑DAC因数字码切换产生的阶梯噪声尤其适用于生成直流或低频信号。电阻值不能太大需与DAC的输出阻抗300Ω和后级输入阻抗分压考虑。4.2 与ADC协同工作的系统考虑LPC15xx的ADC和DAC共享VREFP和VREFN参考电压引脚在部分型号上VREFP可能被ADC和DAC复用。这是一个需要特别注意的地方。场景一独立使用如果只使用ADC或只使用DAC将不用的那个外设的参考电压引脚按手册14.7节建议处理ADC不用时VREFP_ADC接VDDVREFN接VSSDAC不用时VREFP_DAC_VDDCMP接VDD。场景二同时使用且要求不高如果ADC和DAC对绝对精度要求不高可以简单地将它们的VREFP都连接到干净的VDDAVREFN连接到AGND。这样ADC的测量基准和DAC的输出基准一致系统有一个统一的“模拟满量程”。场景三高精度系统如果系统对精度要求高强烈建议使用一个外部精密电压基准源芯片如TI的REF50xx系列ADR45xx系列。将这个基准源的输出同时提供给ADC的VREFP_ADC和DAC的VREFP_DAC_VDDCMP引脚。这样ADC的测量和DAC的输出都基于同一个极其稳定的基准消除了因电源波动带来的系统误差。这是构建高精度数据采集与控制系统的关键。电源去耦为VREFP引脚无论是接VDDA还是外部基准提供极其干净的电源同样重要。除了芯片本体的去耦电容在外部基准源芯片的输出端也应增加足够的滤波电容。5. 模拟比较器与内部电压基准被低估的实用外设除了ADC和DACLPC15xx的模拟比较器和内部电压基准也是非常有用的模拟外设常用于低功耗监测和阈值检测。5.1 模拟比较器的灵活应用比较器可以快速比较两个模拟电压输出数字信号无需经过ADC转换和CPU干预速度快、功耗低。关键参数传播延迟tPD在68ns到250ns之间取决于过驱电压。这意味着比较器反应非常迅速适合用于过流保护、零交叉检测等需要快速响应的场合。可编程迟滞Vhys这是防止输入电压在阈值附近抖动导致输出振荡的神器。你可以软件配置5mV, 10mV, 15mV的迟滞电压。例如用于电池欠压检测你可以设置迟滞为10mV这样当电压跌落到阈值如3.0V以下时触发只有当电压回升到3.01V以上时才解除避免了电压在阈值处波动时的频繁触发。内部阶梯电阻Ladder比较器的一个输入端可以连接到内部一个32级的电阻分压网络电压阶梯这个阶梯的参考可以是VDDA或内部电压基准。这样你无需外部电阻就能为比较器生成多个精确的阈值电压用于多级电压监控非常节省成本和空间。应用示例电池电压监控将电池电压通过电阻分压后接入比较器的正输入端COMPx。将比较器的负输入端COMPx-配置为连接内部阶梯电阻并设置一个分压比对应你想要的欠压阈值例如对应电池电压3.0V。使能比较器并开启中断。当电池电压低于阈值时比较器输出翻转产生中断CPU可以立即进入低功耗模式或执行保护操作。整个过程无需ADC周期性采样功耗极低。5.2 内部电压基准与温度传感器内部电压基准VREF典型值905mV25°C精度在875mV到925mV之间。它主要服务于内部ADC、DAC和比较器阶梯电阻。注意它的绝对精度并不高±25mV且随温度漂移见手册图42。因此它不适合作为高精度测量的绝对基准但非常适合作为比例测量的参考或者为比较器阶梯电阻提供一个相对稳定的内部参考因为ADC/DAC/比较器使用的是同一个基准系统误差在一定程度上可以抵消。温度传感器芯片内部集成了一个温度传感器其输出电压与温度成线性反比关系斜率约-2.29 mV/°C。手册提供了线性最小二乘拟合参数你可以用ADC读取这个电压值通过公式Temperature (°C) (Vsensor - Vintercept) / Slope来计算温度其中Vintercept是0°C时的传感器电压典型577.3mV。精度传感器自身精度约±5°C线性度误差也有±5°C。所以它只能用于监测芯片结温的大致变化比如做过温保护而不能用于测量环境温度。如果需要测环境温度必须外接专用的数字温度传感器如DS18B20, LM75。6. 系统级设计电源、时钟与PCB布局实战指南再好的外设也离不开一个稳健的硬件基础。手册第14章的应用信息是无数工程师经验教训的总结必须高度重视。6.1 电源与去耦网络设计图49是官方推荐的连接图但我们需要理解其背后的原理数字电源VDD每个VDD引脚都必须就近放置一组去耦电容。经典组合是一个10μF的陶瓷电容或钽电容用于储能搭配一个0.1μF和一个0.01μF的陶瓷电容用于滤除不同频段的噪声。电容的接地端必须通过短而粗的走线或直接用过孔连接到数字地平面。模拟电源VDDA这是ADC、DAC、比较器、内部基准的命脉。必须与数字电源VDD通过磁珠或0Ω电阻进行隔离。去耦电容同样关键一个10μF的储能电容加上至少一个0.1μF的陶瓷电容必须紧挨着VDDA和VSSA引脚放置。参考电压VREFP, VREFNVREFP_ADC/VREFP_DAC_VDDCMP如果使用外部基准直接接基准源输出并加0.1μF滤波电容。如果不用接VDDA。VREFN接模拟地AGND。如果不用ADC接数字地DGND。电池备份电源VBAT如果使用RTC则VBAT接备份电池如3V纽扣电池并加0.1μF去耦电容。如果不用RTC必须将VBAT连接到VDD绝不能悬空。6.2 时钟电路设计主时钟晶体根据你选择的晶体频率和负载电容CL严格按照表32和表33选择匹配电容Cx1和Cx2。电容值不准确会导致晶体起振困难、频率漂移或功耗增加。这些电容必须使用高精度、低ESR的NPO/C0G材质陶瓷电容并尽可能靠近芯片XTALIN和XTALOUT引脚放置。RTC 32kHz晶体计算公式Cx1 Cx2 2 * CL - Cp其中Cp是引脚寄生电容约3pF。例如一个负载电容为12.5pF的32.768kHz晶体应选择Cx1 Cx2 2*12.5 - 3 22pF。使用22pF的匹配电容。布局要点晶体下方和周围禁止走任何数字信号线最好在PCB所有层围绕晶体做一个接地保护环Guard Ring并将其通过过孔连接到地平面以屏蔽噪声。6.3 未使用引脚的处理悬空的引脚是噪声天线和功耗漏洞。必须按表34处理普通GPIO引脚在软件初始化时配置为输出模式并输出低电平同时禁用内部上拉/下拉电阻。这既防止了引脚浮空引入噪声也避免了因内部上拉电阻导致的额外功耗。开漏引脚PIO0_22, PIO0_23同样配置为输出低电平。RESET引脚如果应用不使用外部复位且不使用深度掉电模式可以将其配置为GPIO输出低电平并禁用上拉。如果使用深度掉电模式则必须保留其内部上拉或外接上拉电阻以确保能从该模式可靠唤醒。模拟电源/地引脚VDDA, VSSA, VREFP, VREFN, VBAT必须按前述方法连接绝不能悬空。6.4 PCB布局的黄金法则分区布局将板子划分为模拟区域和数字区域。模拟部分ADC输入、DAC输出、模拟电源、晶体振荡器集中在一起数字部分MCU、数字外设、内存在另一侧。地平面分割与单点连接使用完整的接地层但通过物理分割或“壕沟”将模拟地和数字地分开。在一点通常位于芯片下方或电源入口处用0Ω电阻或磁珠连接。所有模拟元件的接地都连接到模拟地区域数字元件连接到数字地区域。电源走线电源线尽可能宽。模拟电源走线从滤波电容出来后应先经过模拟区域最后再回到连接点。避免数字电源线从模拟器件上方或下方穿过。敏感信号线ADC输入线、晶体振荡线、模拟基准电压线必须使用短而直的走线两侧用地线包围进行屏蔽。绝对避免与高频数字信号线如时钟、PWM、数据总线平行走线。7. 常见问题排查与调试心得在实际项目中即使完全按照手册设计也可能遇到问题。以下是我总结的一些常见故障和排查思路问题1USART通信低速正常高速时数据出错。排查用示波器测量SCLK和MOSI/MISO信号。检查建立时间tsu和保持时间th是否满足从设备要求。注意观察信号是否有过冲、振铃或边沿过于缓慢。检查PCB走线。高速信号线是否过长是否靠近其他噪声源尝试缩短走线或在驱动端串联一个22-100Ω的电阻。确认时钟配置。USART模块的PCLK频率是否正确BRGVAL计算是否有误在改变系统时钟后是否重新配置了USART检查从设备端的电源和去耦是否良好。高速通信时电源噪声会影响接口电平。问题2ADC采样值不稳定跳动大。排查首先确认输入信号本身是否稳定。用示波器直流耦合档直接测量ADC输入引脚对地的电压观察是否平稳。检查参考电压VDDA或VREFP的波形。用示波器交流耦合档将带宽限制到20MHz观察上面是否有高频噪声毛刺。一个纹波大的参考电压是ADC跳动的首要元凶。检查输入端的RC滤波器。电容是否焊接良好容值是否合适可以尝试增大电容如从100pF增加到1nF看跳动是否减小。检查布局和接地。ADC输入线是否被数字线干扰模拟地和数字地是否在单点连接模拟部分的地平面是否完整尝试在ADC转换期间让CPU进入睡眠模式看采样值是否变得稳定。如果稳定了说明是芯片内部数字噪声干扰。降低采样率。如果高速采样时跳动大低速时正常基本可以确定是输入阻抗和信号源驱动能力问题或者需要更强大的输入缓冲电路。问题3DAC输出有台阶感或噪声。排查用示波器观察DAC输出。如果是一个稳定的直流电压但有高频毛刺需要在输出端增加RC低通滤波器如100Ω 0.1μF。如果输出波形有台阶例如生成正弦波时检查DAC的更新速率是否超过了其建立时间2.5μs允许的范围。降低更新频率或使用DMA进行数据搬运以减少软件延迟。检查负载。是否直接驱动了低阻抗负载必须使用运放电压跟随器进行缓冲。检查VREFP_DAC的电压是否稳定。问题4芯片发热或功耗异常。排查检查所有未使用的引脚是否已按前述方法配置为输出低电平并禁用上下拉。检查外部晶体电路是否正常起振。有时晶体停振或工作异常会导致功耗激增。检查是否有IO引脚外部被拉高或拉低导致内部电流冲突。在低功耗模式下确认所有不需要的外设时钟都已关闭。调试工具建议示波器必备。用于观察电源纹波、信号完整性、时序关系。一定要学会使用示波器的带宽限制、测量、FFT等功能。逻辑分析仪用于调试USART、SPI、I2C等数字通信协议可以直观地看到数据帧比串口打印高效得多。万用表用于测量静态电压、电阻检查电源和接地是否短路。最后再强调一点数据手册、参考手册和勘误表Errata Sheet是你的终极武器。LPC15xx的勘误表里可能会记载某些芯片版本在外设使用上的已知限制或缺陷。在遇到无法解释的怪异问题时去查一下勘误表也许就能找到答案。嵌入式开发就是这样一半是写代码另一半是和硬件细节、芯片特性做斗争。把这些外设的特性吃透把PCB画好你的项目就成功了一大半。希望这篇超详细的梳理能让你在LPC15xx的开发路上少走些弯路。