深入解析TMS320F28003x模拟子系统:架构、配置与电机控制实战

发布时间:2026/7/19 11:20:40
深入解析TMS320F28003x模拟子系统:架构、配置与电机控制实战 1. 模拟子系统架构与核心设计思路在嵌入式实时控制领域尤其是电机驱动、数字电源和工业自动化等高精度应用场景微控制器的模拟子系统性能往往是决定整个系统成败的关键。TMS320F28003x作为德州仪器C2000系列中的明星产品其模拟子系统Analog Subsystem的设计充分体现了“集成”与“灵活”两大核心理念。它不是简单地将ADC、DAC、比较器堆砌在一起而是通过精密的内部互联和统一的参考电压架构构建了一个高度协同的混合信号处理引擎。这个子系统的核心价值在于它让开发者能够像搭积木一样根据具体应用需求灵活配置信号链路。例如在伺服驱动器中你可能需要同时采样三相电流、直流母线电压和位置传感器信号并进行快速的过流保护比较。F28003x的模拟子系统允许你将多个ADC通道、DAC输出以及CMPSS比较器子系统的输入输出通过内部模拟交叉开关Analog Interconnect和复用器MUX进行路由几乎无需外部电路就能构建复杂的监控和保护环路。这种设计极大地减少了外部分立器件的数量降低了BOM成本和PCB面积同时提高了系统的可靠性和抗干扰能力。理解其架构首先要抓住几个核心模块三个独立的12位ADC模块ADCA ADCB ADCC、两个12位缓冲DACDACA DACB、四个独立的比较器子系统CMPSS1-4以及一个共享的模拟参考电压电路。这些模块并非孤岛它们通过一个复杂的模拟互连矩阵连接在一起并与特定的设备引脚Ax Bx Cx CMPx_HPy等相连。引脚复用是另一个设计亮点许多引脚身兼数职既可以是ADC输入也可以是CMPSS的输入或DAC的输出甚至是数字GPIOAIO/AGPIO。这种复用能力带来了极大的灵活性但也要求开发者在软件配置时必须清晰、无冲突地定义每个引脚的功能。整个子系统的“指挥中心”是一组位于ANALOG_SUBSYS_REGS内存空间的配置寄存器。你的配置工作本质上就是通过读写这些寄存器来定义信号从哪里来选择输入源、到哪里去路由到哪个模块、以及如何处理设置参考电压、使能模块等。因此深入理解每个寄存器的位域含义及其相互间的制约关系是驾驭这片“模拟领土”的不二法门。2. 核心模块功能与交互机制详解2.1 模数转换器ADC模块精度与速度的平衡F28003x集成了三个独立的12位SAR逐次逼近寄存器型ADC内核ADCA ADCB和ADCC。每个ADC拥有多达16个外部输入通道A0-A15 B0-B15 C0-C15并且支持内部连接例如采样温度传感器信号或来自CMPSS的DAC输出通过回环功能。ADC的性能指标如采样率、转换时间在数据手册中有明确规定但实际能达到的精度则严重依赖于参考电压的质量和模拟前端的设计。这里需要特别关注参考电压电路。所有三个ADC共享同一套参考电压源由ANAREFCTL寄存器控制。你可以选择内部参考电压由芯片内部的带隙基准源产生并通过缓冲器驱动到VREFHI引脚或外部参考电压由外部精密基准源直接提供到VREFHI引脚。内部参考又分为两种量程3.3V内部产生1.65V经缓冲放大后输出和2.5V内部产生2.5V直接输出通过ANAREFCTL.ANAREF2P5SEL位选择。注意选择内部参考时必须在VREFHI引脚到VSSA之间连接一个外部电容具体容值需查阅数据手册。这个电容对于稳定参考电压、抑制噪声至关重要。如果切换内部参考的量程例如从3.3V切换到2.5V必须留出足够的时间让外部电容充电到新的电压值否则ADC转换结果将不准确。2.2 数模转换器DAC与比较器子系统CMPSS实时控制的利器两个12位缓冲DACDACA DACB能够直接驱动外部负载常用于产生可编程的模拟阈值电压或波形。它们的参考电压可以选择与ADC共享的VREFHI也可以选择独立的VDAC引脚。这在需要DAC输出范围与ADC参考不同的场景下非常有用。CMPSS是模拟子系统中用于实现快速硬件保护的“尖兵”。每个CMPSS包含两个比较器一个高侧CMPH一个低侧CMPL、两个内部12位DAC分别用于为高、低比较器提供可编程参考电压、以及数字滤波模块。比较器的正负输入端可以通过CMPHPMXSELCMPHNMXSELCMPLPMXSELCMPLNMXSEL这组寄存器从多达6个模拟输入源来自ADC引脚或内部网络中选择。这种灵活性使得你可以轻松实现窗口比较、逐周期电流限制等复杂功能。例如在电机控制中你可以将采样电阻上的电流信号通过运放调理后接入CMPSS的正输入端同时用内部DAC设定一个电流保护阈值。一旦电流超过阈值比较器会在纳秒级内翻转产生的CTRIP信号可以直接连接到PWM模块立即关闭驱动桥臂实现硬件级的过流保护其速度远快于软件中断响应。2.3 模拟引脚复用与数字功能AIO/AGPIOF28003x的许多模拟引脚复用了数字输入AIO或数字输入/输出AGPIO功能。这为系统设计提供了额外的便利。例如一个引脚既可以作为ADC采样通道监测电压也可以在特定模式下配置为数字输入来读取开关状态。AIO仅支持数字输入功能。配置相对简单主要通过GPyAMSEL寄存器将引脚功能切换到数字模式即可。AGPIO支持完整的数字输入/输出功能。配置稍复杂涉及AGPIOCTRLA寄存器以及对应的GPIO控制寄存器。以100引脚封装的GPIO20/B5为例你需要协调AGPIOCTRLA.GPIO20、GPAAMSEL.GPIO20和GPHAMSEL.GPIO252这几个位来决定该引脚最终是连接到ADC的B5输入、作为数字输入AIO252还是作为通用数字IO口GPIO20。表15-1的配置矩阵是解决这个问题的钥匙使用时务必仔细对照。实操心得在使用AIO/AGPIO功能时必须警惕数字信号对相邻模拟通道的串扰。如果连接到AIO/AGPIO的数字信号边沿过陡高dv/dt其噪声可能会耦合到相邻的模拟信号线上尤其是当这些相邻通道用于高精度ADC采样时。因此如果系统中有高精度模拟信号与AIO/AGPIO相邻务必限制数字信号的边沿速率例如在GPIO输出端串联一个小电阻或在PCB布局上做好隔离。3. 关键寄存器配置与驱动库函数应用实战直接操作寄存器地址进行配置虽然直接但易错且可读性差。德州仪器提供的DriverLib库函数封装了底层寄存器操作是推荐的开发方式。下面我们结合关键寄存器看看如何用DriverLib安全、高效地配置模拟子系统。3.1 参考电压与子系统全局配置一切配置的起点是参考电压。使用DriverLib配置内部3.3V参考的代码如下#include “driverlib.h” void InitAnalogSubsystemRef(void) { // 解锁配置寄存器许多模拟子系统寄存器受EALLOW保护 EALLOW; // 配置ADC使用内部参考量程3.3V (1.65V * 2) // 此函数内部会配置ANAREFCTL寄存器 ADC_setVREF(ADC_BASE_ADCA, ADC_REF_INTERNAL, ADC_REF_3_3V); ADC_setVREF(ADC_BASE_ADCB, ADC_REF_INTERNAL, ADC_REF_3_3V); ADC_setVREF(ADC_BASE_ADCC, ADC_REF_INTERNAL, ADC_REF_3_3V); // 注意对于DAC如果其参考源选择VREFHI则其参考模式自动跟随ADC的配置。 // 如果DAC选择VDAC作为参考则需要单独配置DAC模块的参考选择位。 DAC_setReferenceVoltage(DACA_BASE, DAC_REF_VREFHI); // DACA使用VREFHI // DAC_setReferenceVoltage(DACB_BASE, DAC_REF_VDAC); // DACB使用VDAC引脚 // 锁定寄存器防止误写 EDIS; }关键点解析ADC_setVREF函数不仅设置了ANAREFCTL.ANAREFSEL内部/外部参考选择和ANAREFCTL.ANAREF2P5SEL量程选择还会根据数据手册要求在切换参考模式后插入必要的延时DEVICE_DELAY_US这是手动操作寄存器时极易忽略的步骤。所有ADC模块共享参考源因此为任一ADC调用ADC_setVREF即完成了全局参考配置。为每个ADC调用一次是安全的但非必需。配置完成后必须等待参考电压稳定。DriverLib函数内部已包含基础延时但如果你在系统初始化早期就调用此函数并且紧接着就要进行高精度转换建议额外增加几毫秒的延时确保外部电容完全充电。3.2 比较器输入多路复用器配置这是模拟子系统最灵活也最易出错的部分。假设我们需要将CMPSS1的高侧比较器正输入端CMP1_HP连接到模拟引脚A2它同时是ADCA的通道2、ADCB的通道6、ADCC的通道9负输入端连接到内部DAC1H的输出用于实现一个可编程电压比较。首先我们需要查阅表15-2模拟引脚和内部连接表和框图。找到A2/B6/C9这一行看到它连接到CMP1且其“High Positive”列对应的MUX选择值为HPMXSEL0。这意味着要将A2连接到CMP1_HP需要将CMPHPMXSEL寄存器中对应CMPSS1的字段CMP1HPMXSEL设置为0。使用DriverLib配置void ConfigCMPSS1InputMux(void) { EALLOW; // 配置CMPSS1高侧比较器正极输入源为 MUX 选项0 (对应引脚A2/B6/C9) // 此函数配置CMPHPMXSEL寄存器的CMP1HPMXSEL字段 CMPSS_configHighComparatorInputMux(CMPSS1_BASE, CMPSS_HIGH_COMP, 0); // 配置CMPSS1高侧比较器负极输入源为内部DAC (这是默认选项通常无需更改) // 如果需要选择其他外部输入则需配置CMPHNMXSEL寄存器 // CMPSS_configHighComparatorNegInputMux(CMPSS1_BASE, CMPSS_INTERNAL_DAC); // 配置CMPSS1低侧比较器本例未使用可保持默认或禁用 // CMPSS_configLowComparatorInputMux(CMPSS1_BASE, CMPSS_LOW_COMP, 1); // 示例选择MUX选项1 EDIS; }配置逻辑深度剖析CMPSS_configHighComparatorInputMux函数内部操作的是CMPHPMXSEL寄存器的CMP1HPMXSEL[2:0]位域。该位域的值0-5直接对应图15-5中CMPSS输入多路复用器的选择线。每个CMPSS的HP HN LP LN输入都有独立的MUX选择寄存器字段CMPxHPMXSELCMPxHNMXSELCMPxLPMXSELCMPxLNMXSEL。配置时必须确保选择的MUX索引值在该CMPSS模块和输入类型上是有效的参考数据手册或头文件中的宏定义。同一引脚不能被两个冲突的功能同时使用。例如如果你将某个引脚通过MUX路由给了CMPSS那么它仍然可以作为ADC输入使用因为ADC输入是直接连接的但如果你将该引脚配置为数字输出AGPIO则模拟功能可能被禁用或产生冲突需要参考AGPIOCTRLA的配置表。3.3 回环功能与自测试配置ADCDACLOOPBACK寄存器提供了一个强大的诊断和自校准功能它允许将CMPSS1的低侧内部DACDACL输出回环到三个ADC的输入前端。这意味着你可以让ADC去采样一个由软件精确控制的DAC输出电压从而验证ADC的线性度、校准偏移/增益误差或者构建一个纯数字控制的模拟测试信号源。配置回环功能需要向ADCDACLOOPBACK寄存器写入一个密钥KEY0xA5A5然后使能对应ADC的回环位。void EnableADCLoopbackFromDAC(void) { EALLOW; // 将CMPSS1的DACL输出回环到ADCA的输入。 // 注意使能后ADCA的采样通道选择(CHSEL)将被覆盖固定采样此回环信号。 // 函数内部会处理密钥写入。 ADC_enableLoopback(ADC_BASE_ADCA); // 如果需要同时回环到多个ADC // ADC_enableLoopback(ADC_BASE_ADCB); // ADC_enableLoopback(ADC_BASE_ADCC); EDIS; // 随后需要配置CMPSS1的DACL输出一个已知电压。 // 假设DAC参考为VDDA3.3V12位分辨率要输出1.0V。 uint16_t dac_code (uint16_t)((1.0 / 3.3) * 4095); CMPSS_configDAC(CMPSS1_BASE, CMPSS_DAC_LOW, CMPSS_DAC_REF_VDDA, dac_code); CMPSS_enableDAC(CMPSS1_BASE, CMPSS_DAC_LOW); // 现在启动ADCA转换读取的结果应该对应1.0V输入需考虑ADC的参考电压。 }重要警告一旦使能了某个ADC的回环功能该ADC的通道选择逻辑将被覆盖。无论你将ADC的采样序列配置为哪个外部通道它实际采样的都是CMPSS1 DACL的输出。这个特性在用于校准时非常方便但在正常数据采集时务必确保回环功能已禁用。3.4 配置锁定机制模拟子系统的许多关键配置寄存器如ANAREFCTLCMPHPMXSEL等具有一次性写入或锁定功能由LOCK寄存器控制。这是为了防止软件跑飞或意外修改导致系统关键模拟参数变化进而引发故障。例如在电机运行中如果参考电压模式被意外改变可能导致ADC读数全部错误造成灾难性后果。配置锁定的通常流程是在系统初始化阶段完成所有模拟子系统的配置后立即锁定相关寄存器。void LockAnalogSubsysConfig(void) { EALLOW; // 锁定模拟参考控制寄存器防止后续代码或异常程序修改参考电压设置 AnalogSubsysRegs.LOCK.bit.ANAREFCTL 1; // 锁定比较器输入MUX配置寄存器 AnalogSubsysRegs.LOCK.bit.CMPHPMXSEL 1; AnalogSubsysRegs.LOCK.bit.CMPLPMXSEL 1; AnalogSubsysRegs.LOCK.bit.CMPHNMXSEL 1; AnalogSubsysRegs.LOCK.bit.CMPLNMXSEL 1; // 锁定温度传感器控制寄存器 AnalogSubsysRegs.LOCK.bit.TSNSCTL 1; EDIS; }踩坑记录LOCK寄存器的这些位是“写1置位”类型R/WSonce一旦置1只有系统复位才能清零。这意味着你在调试阶段如果锁定了寄存器又想修改配置必须重启芯片。因此建议在开发调试阶段先不要锁定或者将锁定操作放在最终产品代码中。务必仔细检查CONFIGLOCK寄存器锁定所有配置寄存器和各个模块自身的锁定机制避免过早锁定导致调试困难。4. 上电时序优化与功耗管理实践模拟模块的上电和稳定需要时间尤其是内部参考电压电路。F28003x的模拟子系统设计了一个巧妙的优化当多个模块如ADCA和ADCB共享内部参考电压时第一个模块上电需要等待完整的内部参考稳定时间tADCPUINT但第二个及后续模块只需要等待更短的外部参考稳定时间tADCPUEXT因为参考电路已经就绪。优化策略示例 假设你的应用需要使用ADCA和DACB且两者都使用内部参考电压。首先初始化并上电ADCA使用内部参考。调用ADC_enable或相关初始化函数该函数内部会触发参考电路上电流程。此时你需要等待时间tADCPUINT具体值查数据手册通常在几十到几百微秒量级。DriverLib的ADC_setVREF和ADC_enable函数通常会集成必要的延时但你需要确认其是否满足最坏情况下的时间要求。接着初始化DACB。由于共享的参考电路已经由ADCA上电完成DACB的上电等待时间可以缩短为tDACPUEXT。你可以在配置DACB后插入一个较短的延时DEVICE_DELAY_US(tDACPUEXT)而不是完整的tDACPUINT。具体代码思路void OptimizedAnalogPowerUp(void) { // 1. 配置并上电第一个使用内部参考的模块 (例如 ADCA) ADC_setVREF(ADC_BASE_ADCA, ADC_REF_INTERNAL, ADC_REF_3_3V); ADC_enable(ADC_BASE_ADCA); // 此函数可能包含上电延时 // 为确保可靠手动插入数据手册要求的最大tADCPUINT延时 DELAY_US(500); // 例如等待500us具体时间需查阅数据手册 // 2. 配置并上电后续共享参考的模块 (例如 DACB 也使用VREFHI内部参考) DAC_setReferenceVoltage(DACB_BASE, DAC_REF_VREFHI); DAC_enable(DACB_BASE); // 只需等待外部稳定时间 DELAY_US(50); // 例如等待50us具体时间tDACPUEXT需查阅数据手册 // 3. 上电其他ADC模块 (如ADCB)同样只需tADCPUEXT ADC_setVREF(ADC_BASE_ADCB, ADC_REF_INTERNAL, ADC_REF_3_3V); // 参考已稳定此调用主要配置寄存器 ADC_enable(ADC_BASE_ADCB); DELAY_US(50); // 等待tADCPUEXT }核心要点这种优化能显著减少系统启动时间。关键在于厘清模块间的依赖关系——哪些模块共享了参考源。ADC模块A B C和缓冲DAC当选择VREFHI作参考时共享同一套参考电路。而CMPSS内部的DAC参考VDDA或VDAC是独立的不参与此优化。5. 典型应用场景配置案例电机相电流采样与保护让我们结合一个永磁同步电机PMSM矢量控制的典型场景将上述知识串联起来。我们需要采样两相电流Iu Iv并使用CMPSS实现硬件过流保护。系统假设电流通过采样电阻和运放调理后变为0-3V的电压信号分别接入模拟引脚A2Iu和A3Iv。希望用ADCA同步采样这两路电流。用CMPSS1监控Iu当电流超过软件设定的阈值时立即产生故障信号关断PWM。配置步骤初始化模拟参考电压ADC_setVREF(ADC_BASE_ADCA, ADC_REF_INTERNAL, ADC_REF_3_3V); // 等待参考稳定 DELAY_US(500);配置ADC采样序列以SOC0 SOC1为例ADC_setupSOC(ADC_BASE_ADCA, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY, ADC_CH_ADCIN2, 15); // SOC0采样A2 (Iu) ADC_setupSOC(ADC_BASE_ADCA, ADC_SOC_NUMBER1, ADC_TRIGGER_SW_ONLY, ADC_CH_ADCIN3, 15); // SOC1采样A3 (Iv) ADC_enableConverter(ADC_BASE_ADCA); ADC_enableSOC(ADC_BASE_ADCA, ADC_SOC_NUMBER0); ADC_enableSOC(ADC_BASE_ADCA, ADC_SOC_NUMBER1);配置CMPSS1用于过流保护目标将电流信号IuA2引脚送入CMPSS1高侧比较器正端内部DAC1H设定阈值输出CTRIP1H连接至PWM的故障输入。步骤 a.配置输入MUX将CMPSS1高侧正输入连接到A2。查表知A2对应CMP1HPMXSEL0。CMPSS_configHighComparatorInputMux(CMPSS1_BASE, CMPSS_HIGH_COMP, 0);b.配置内部DAC阈值假设过流阈值为2.5V对应DAC码值 2.5 / 3.3 * 4095 ≈ 3102。CMPSS_configDAC(CMPSS1_BASE, CMPSS_DAC_HIGH, CMPSS_DAC_REF_VDDA, 3102); CMPSS_enableDAC(CMPSS1_BASE, CMPSS_DAC_HIGH);c.配置比较器设置滤波、滞后等参数。CMPSS_configHighComparator(CMPSS1_BASE, CMPSS_INSEL_DAC, CMPSS_HYST_DISABLE); // 负端选择内部DAC 禁用迟滞 CMPSS_enableHighComparator(CMPSS1_BASE); CMPSS_enableFilter(CMPSS1_BASE, CMPSS_HIGH_COMP); // 使能数字滤波抗噪声 CMPSS_setFilterLength(CMPSS1_BASE, CMPSS_HIGH_COMP, CMPSS_FILTER_SAMP_COUNT_3); // 设置滤波深度d.路由CTRIP信号至PWM这通常需要通过GPIO多路复用器或直接连接实现具体配置取决于PWM模块的故障输入源选择。需要在GPIO和PWM模块的配置中完成。可选配置回环用于自检在系统启动自检中可以临时使能回环让ADC采样CMPSS1 DAC输出的一个已知电压验证ADC通路是否正常。void SelfTestAnalogPath(void) { // 1. 使能回环 ADC_enableLoopback(ADC_BASE_ADCA); // 2. 设置DAC输出一个中值电压例如1.65V CMPSS_configDAC(CMPSS1_BASE, CMPSS_DAC_LOW, CMPSS_DAC_REF_VDDA, 2048); CMPSS_enableDAC(CMPSS1_BASE, CMPSS_DAC_LOW); // 3. 启动ADCA转换并读取结果 ADC_forceSOC(ADC_BASE_ADCA, ADC_SOC_NUMBER0); while(ADC_getInterruptStatus(ADC_BASE_ADCA, ADC_INT_NUMBER1) false); // 等待转换完成 uint16_t adc_result ADC_readResult(ADC_BASE_ADCA, ADC_SOC_NUMBER0); // 4. 判断adc_result是否在预期范围内考虑偏移和增益误差 // 5. 禁用回环恢复正常采样 ADC_disableLoopback(ADC_BASE_ADCA); }6. 常见问题排查与调试技巧实录即使按照手册配置模拟子系统有时也会出现读数异常、比较器误动作等问题。以下是我在实际项目中总结的一些排查经验和技巧。问题1ADC采样值跳动大噪声高。检查电源与地模拟电源VDDA VSSA是否干净是否与数字电源VDD VSS通过磁珠或电感隔离并在靠近芯片引脚处用10uF和0.1uF电容去耦VREFHI引脚上的外部电容通常为10uF是否焊接良好检查输入信号信号源阻抗是否过高对于SAR型ADC输入信号在采样瞬间需要为内部采样电容充电。如果源阻抗太大会导致建立时间不足读数不准。建议在ADC输入引脚前增加一个运放缓冲器电压跟随器。检查采样窗口ADC的采样保持窗口时间ACQPS是否设置得太短对于高源阻抗的信号需要增加采样窗口时间。使用DriverLib的ADC_setupSOC函数时最后一个参数就是采集预分频器ACQPS的值增大它可以延长采样时间。检查PCB布局模拟信号走线是否远离数字信号线、时钟线和高功率线路是否使用了完整的模拟地平面ADC输入引脚到采样源之间的路径应尽可能短。问题2CMPSS比较器输出不稳定偶尔误触发。启用数字滤波这是解决比较器因噪声误触发的最有效方法。通过CMPSS_enableFilter和CMPSS_setFilterLength函数设置一个合适的滤波深度例如3或6个采样周期。滤波原理是要求比较器输出在连续多个周期内保持一致才确认为有效跳变。调整迟滞如果比较器在阈值点附近因信号噪声来回翻转可以启用内部迟滞功能CMPSS_configHighComparator时设置迟滞选项。迟滞会创建一个“死区”提高抗噪声能力。检查参考电压如果CMPSS的DAC参考电压VDDA或VDAC噪声大会导致阈值电压波动。确保VDDA电源干净如果使用VDAC引脚务必按照手册要求连接一个≥1µF的电容到地。验证输入MUX配置确认CMPxHPMXSEL等寄存器配置的值确实对应了你想要的物理引脚。一个常见的错误是寄存器位域赋值错误导致实际选择的输入源与预期不符。使用调试器读取这些寄存器的值进行验证。问题3配置了AGPIO但数字信号无法输入或输出。确认三重配置AGPIO的配置需要AGPIOCTRLA、GPxAMSEL和GPxDIR/GPxDAT寄存器协同工作。以GPIO20/B5为例AGPIOCTRLA.GPIO20决定引脚是连接到AGPIO pad还是Analog pad。GPAAMSEL.bit.GPIO20决定GPIO20复用器的模拟开关状态。GPHAMSEL.bit.GPIO252决定AIO252模拟功能的开关状态。 必须严格按照表15-1的矩阵进行组合配置。最安全的做法是直接使用DriverLib中针对特定封装的GPIO初始化函数并仔细查看其源码中对AGPIO的处理。检查引脚冲突确保没有其他外设如EPWM SPI等也映射到了同一个GPIO引脚。问题4从低功耗模式唤醒后ADC读数异常。重新初始化模拟子系统某些低功耗模式会关闭模拟模块的电源或时钟。唤醒后模拟子系统可能未恢复到正常工作状态。最稳妥的做法是在唤醒后的初始化代码中重新执行一遍模拟子系统的关键配置流程特别是参考电压控制ANAREFCTL和ADC/DAC的使能。注意重新配置可能需要再次等待参考电压稳定时间。调试利器内部测试节点INTERNALTESTCTL寄存器是一个强大的调试工具。它允许你将内部的一些关键模拟节点如VDDCORE VDDA VREFLO 各个CMPSS的DAC输出等路由到ADC的输入进行测量。这在诊断电源噪声、验证内部电压是否正常时非常有用。使用时需要向KEY字段写入0xA5A5并设置TESTSEL选择要测量的内部节点然后配置ADC采样相应的通道通常是固定的测试通道。