资讯中心

TI AM261x ADC触发与SOC配置实战:从原理到电机控制应用

📅 2026/7/26 6:18:51
TI AM261x ADC触发与SOC配置实战:从原理到电机控制应用
1. ADC触发与SOC配置从概念到实战的深度解析在嵌入式系统尤其是工业控制、电机驱动和精密测量领域模数转换器ADC的性能和灵活性直接决定了整个系统的精度与实时性。很多工程师在初次接触像TI AM261x这类高性能处理器时面对其ADC模块动辄上百页的技术手册尤其是关于触发Trigger和转换启动SOC的复杂配置往往会感到无从下手。大家最常问的问题是为什么需要这么多触发源SOC到底在干什么过采样和欠采样在实际项目中怎么用今天我就结合TI AM261x的技术手册把自己在多个电机控制项目里“踩坑”积累的经验掰开揉碎了讲清楚ADC的触发机制与SOC配置。这不仅仅是寄存器配置的罗列更是理解如何让ADC这个“数据采集员”高效、准时、准确地为你工作的核心逻辑。理解了这些你就能设计出采样时序精准、资源利用高效、代码结构清晰的数据采集系统。2. ADC触发机制不只是“开始转换”的信号很多人把ADC触发简单地理解为一个“开始转换”的开关信号这其实低估了它的价值。在复杂的实时系统中触发机制是协调ADC与系统中其他事件如PWM周期、定时器中断、外部信号同步的关键。它决定了采样的“时机”而这个时机往往比采样本身更重要。2.1 触发源全景图你的ADC可以由谁唤醒AM261x的ADC模块提供了极其丰富的触发源这绝不是冗余设计而是为了满足不同应用场景的同步需求。手册中的触发源表Table 7-159是理解这一切的起点。我们可以将其归类为几个核心类型软件触发ADCTRIG0这是最基础、最灵活的触发方式。通过直接写寄存器如ADCSOCFRC1.SOCx位来启动一次转换。它适用于非周期性的、由应用程序逻辑控制的采样比如上电自检、手动启动校准或响应某个非实时事件。但它的缺点也很明显时序完全由软件决定会受中断延迟、任务调度的影响无法保证精确的、周期性的采样间隔。定时器触发ADCTRIG1-4来自RTIReal-Time Interrupt模块的定时器事件。这是实现固定频率采样的经典方式。例如你可以配置RTI0每1ms产生一个触发信号ADC就会严格地每1ms采样一次。这种方式时序精准不占用CPU资源非常适合需要稳定采样率的应用如温度监控、电池电压巡检。ePWM触发ADCTRIG8-27等这是电机控制和数字电源等领域的“灵魂”配置。ePWM模块的ADCSOCA和ADCSOCB信号可以与PWM的载波周期、相位精确绑定。为什么这如此重要想象一下在电机控制中你需要精确地在PWM波形的“谷底”或“中点”时刻采样相电流以避开开关噪声并获得最真实的电流值。ePWM触发让你可以将ADC采样点“钉死”在PWM周期的特定相位上这是软件触发或普通定时器触发无法实现的硬件级同步精度。eCAP触发ADCTRIG72-79捕获模块的触发输出。当eCAP捕获到外部信号的边沿事件如编码器Z脉冲、过零检测信号时可以立即触发ADC采样。这常用于与外部事件严格同步的采样比如在旋转机械的某个固定机械角度进行采样。外部输入触发ADCTRIG5通过INPUTXBAR连接到某个GPIO引脚。这为系统提供了最大的灵活性允许一个外部数字信号如另一个处理器的同步信号、传感器的就绪信号来启动ADC转换。实操心得触发源的选择策略选择触发源不是拍脑袋决定的它基于你的系统时序需求。我的经验法则是追求绝对周期性和低CPU开销用RTI定时器触发。需要与PWM开关动作严格同步如电机相电流采样必须使用ePWM的ADCSOCA/B触发。响应非周期性的外部事件使用eCAP或外部GPIO触发。调试、单次采样或非关键任务使用软件触发。 在AM261x上一个SOC只能选择一个触发源但不同的SOC可以选择不同的触发源。这意味着你可以用ePWM1触发SOC0来采样电流同时用RTI定时器触发SOC1来采样温度实现多速率、多目的的混合采样策略。2.2 SOC转换任务的“工单”理解了谁可以发出“开始工作”的指令触发源接下来就要看ADC收到指令后具体“做什么”。这就是SOCStart-Of-Conversion的概念。你可以把每个SOC看作一个预先定义好的“工单”。一份完整的ADC转换“工单”即一个SOC的配置包含三个核心要素触发源TRIGSEL谁有权下发这个工单对应上一节的选择通道CHSEL要去哪个模拟通道采集数据采样窗口ACQPS给这个通道多长的“采样准备时间”AM261x的每个ADC模块支持最多16个独立的SOCSOC0-SOC15。这意味着你可以预先定义好16张不同的“工单”。例如SOC0的工单是“当ePWM1的ADCSOCA信号来时去采样通道A0电流并给予20个SYSCLK周期的采样时间”。SOC1的工单可以是“当RTI0定时器溢出时去采样通道A1温度给予50个SYSCLK周期的采样时间”。当指定的触发事件发生时ADC仲裁逻辑就会找到对应的SOC“工单”并立即安排一次转换任务。如果多个触发同时到来SOC的优先级可配置为轮询或固定优先级决定了执行顺序。3. SOC的精细配置让每一次采样都恰到好处配置SOC不仅仅是填写三个寄存器每一个参数背后都有硬件特性和系统需求的考量。3.1 通道选择CHSEL与输入模式ADCSOCxCTL.CHSEL寄存器不仅选择了物理引脚还隐含了输入模式单端或差分。这是由硬件连接决定的。单端模式测量输入引脚对地VREFLO的电压。配置简单占用引脚少。在AM261x上选择CHSEL0~6分别对应ADCIN0~ADCIN6。差分模式测量两个输入引脚之间的电压差。抗共模干扰能力强适合测量小信号。配置时CHSEL的值对应了一对正负输入引脚。例如CHSEL0在差分模式下意味着正输入为ADCIN0负输入为ADCIN1。注意事项差分模式的“坑”手册中提到了一个关键点在差分模式下ADC的原始输出码有一个2112或64 LSB的偏移。这是因为其内部设计将零点放在了量程中间类似双极性输入。如果你直接读取结果寄存器会得到一个围绕2112左右的值。务必在软件中减去这个偏移量或者按照手册说明通过配置adcX_cfg_1p1v[79:80]位来补偿这个偏移否则你的电压计算会完全错误。这是我早期调试时浪费了整整一天才发现的坑。3.2 采样窗口ACQPS的计算不仅仅是时间ADCSOCxCTL.ACQPS寄存器定义了采样保持电容的充电时间单位是系统时钟SYSCLK周期数。公式是采样窗口时间 (ACQPS 1) * SYSCLK周期。为什么这个值不能随便设它必须满足两个条件绝对最小值手册规定对于AM261xACQPS的最小值必须至少为16。这是硬性规定。信号建立需求采样窗口必须足够长让信号源通过外部和内部阻抗参见手册中的输入模型图将采样电容充电到目标电压的0.5 LSB误差范围内。如果时间不够采样值就不准确。如何计算所需的ACQPS这需要结合你的信号源阻抗Rs、ADC内部开关电阻Ron和采样电容Ch。手册的电气参数表会给出Ron和Ch的典型值。假设你的信号源阻抗Rs100ΩSYSCLK200MHz周期5ns。一个简化的估算方法是RC时间常数 τ (Rs Ron) * Ch。为了让电容充电到99.3%的精度达到5倍时间常数你需要的时间约为 5τ。那么ACQPS需要满足(ACQPS 1) * 5ns 5τ假设计算出的5τ是100ns那么ACQPS至少需要(100ns / 5ns) - 1 19。为了留有余量我们通常会设置得更大一些比如25或30。实操技巧ACQPS的调试方法在实验室里最直观的调试方法是对一个已知的稳定直流电压如1.65V进行高速采样。先将ACQPS设为一个较大的安全值如63记录采样值。然后逐步减小ACQPS观察采样值的波动和偏差。当发现采样值开始出现明显的跳动或系统性偏差时说明ACQPS已经不足。将ACQPS设置在此临界值之上并留有30%-50%的余量就是可靠值。对于高频交流信号采样这个窗口时间还影响了系统的带宽。3.3 外部多路复用器EXTCHSEL的妙用AM261x的SOC配置中有一个非常实用的功能ADCSOCxCTRL.EXTCHSEL字段。它允许SOC在转换时自动控制连接在ADC输入引脚上的外部模拟多路复用器Mux的地址线。这解决了什么问题芯片的ADC输入引脚数量是有限的例如8个。但你的系统可能需要采样20个温度传感器。传统做法是用GPIO控制Mux在软件中先设置GPIO再触发ADC这引入了软件延迟和时序不确定性。EXTCHSEL如何工作你将外部Mux的输出连接到芯片的某个ADC输入引脚如ADCIN0。将Mux的地址选择线连接到芯片的ADCxEXTMUX[3:0]输出引脚这些引脚需要通过GPIO交叉开关配置映射到物理GPIO。在配置SOC时CHSEL选择ADCIN0EXTCHSEL写入你想要选择的Mux通道号例如3。当该SOC被触发时硬件会自动在开始采样前将ADCxEXTMUX引脚设置为EXTCHSEL的值即二进制0011选通Mux的第3通道。采样结束后这些引脚可以恢复或保持。这样一来切换采样通道完全由硬件在触发时刻同步完成实现了与触发事件如PWM边沿的完美同步消除了软件延迟精度极高。这在需要快速巡回检测多路模拟量的系统中非常有用。4. 触发中继器实现高级采样策略的“神器”如果说基础的SOC配置是“单次命令”那么触发中继器Trigger Repeater就是实现复杂采样序列的“自动化脚本”。它是AM261x ADC模块中最强大、也最容易用错的功能之一。4.1 核心功能解析每个ADC实例有两个独立的中继器模块REP1, REP2。它们可以对输入的触发信号进行“加工”再输出给一个或多个SOC。加工方式主要有四种过采样模式Oversampling行为收到一个输入触发脉冲后会连续、背靠背地输出N1个触发脉冲N由REPxN.NSEL配置。应用场景这是最常用的功能之一。用于对同一个信号在极短时间内进行多次采样然后将结果平均以抑制随机噪声提高有效分辨率。例如配置NSEL15那么一个ePWM触发就能自动产生16次连续的ADC转换。你只需要配置一个SOC例如SOC0使用该中继器作为触发源并设置好PPB后处理块进行累加和平均就能轻松实现16倍过采样将有效位数从12位提升到14位左右。欠采样模式Undersampling行为每收到N1个输入触发脉冲只输出1个触发脉冲。应用场景降低采样频率。例如你的ePWM以100kHz频率产生触发但某个传感器如慢速温度传感器只需要1kHz的更新率。你可以设置NSEL99让中继器每100个输入脉冲才输出1个从而用同一个高速定时源驱动多个不同速率的采样任务简化了系统定时设计。相位延迟Phase Delay行为将输出触发脉冲整体延迟PHASE个SYSCLK周期。应用场景硬件消隐在电机驱动中IGBT/MOSFET开关瞬间会产生巨大的电压毛刺。即使你在PWM波谷触发采样毛刺可能仍未完全消除。通过设置一个几十到几百纳秒的相位延迟可以等毛刺平息后再开始采样获得更干净的信号。多ADC交错采样如果你有多个ADC模块如ADC0, ADC1, ADC2采样同一个高速信号可以让它们使用同一个触发源但为每个ADC的中继器设置不同的相位延迟例如0 20 40个周期。这样三个ADC的采样点就在时间上均匀错开等效地将系统采样率提升了三倍。重触发扩展Re-trigger Spread行为在过采样模式下控制连续两个输出触发脉冲之间的间隔SPREAD个SYSCLK周期。应用场景当背靠背的采样间隔太短信号源或前端运放来不及建立时可以插入一个固定的扩展时间保证每次采样前信号都已稳定。4.2 配置流程与避坑指南配置触发中继器需要遵循一个清晰的流程乱序配置可能导致不可预知的行为。标准配置流程先配置SOC将目标SOCx的ADCSOCxCTL.TRIGSEL设置为REP1TRIG或REP2TRIG。再配置中继器 a. 写REPxCTL寄存器设置MODE过采样/欠采样选择输入TRIGGER源如ePWM1_SOCA配置同步源SYNCINSEL如果需要。 b. 写REPxN.NSEL寄存器设置重复次数过采样N1次欠采样每N1次过1次。 c. 写REPxPHASE.PHASE寄存器设置相位延迟。 d. 写REPxSPREAD.SPREAD寄存器设置重触发扩展仅过采样模式有效。配置后处理块PPB如果用过采样做平均需要配置PPBxLIMIT等寄存器来设定累加次数和触发阈值。避坑指南中继器配置的常见陷阱陷阱一NSEL0时的误解当NSEL0时中继器在过采样和欠采样模式下都只是简单的“直通”但它仍然可以施加相位延迟。很多人忽略了这一点觉得NSEL0中继器就没用。实际上仅用相位延迟功能来统一调整多个SOC的采样时刻非常方便。陷阱二触发溢出手册明确指出在过采样模式且NSEL0时如果一个新的输入触发到来而之前由该中继器触发的所有SOC尚未完成即SOC标志位仍为pending那么REPxCTL.TRIGGEROVF标志会被置位。你的中断服务程序必须检查并处理这个溢出标志否则会丢失触发导致采样序列混乱。一个稳健的做法是在触发频率固定的应用中确保(采样转换时间) * (NSEL1) 触发周期。陷阱三同步源的使用中继器的SYNCINSEL可以配置为ePWM的SYNCOUT等信号。同步事件会将中继器内部计数器NCOUNT, PHASECOUNT重置为空闲状态。这用于将中继器的重复序列与一个外部事件如PWM周期开始重新对齐防止误差累积。在电机控制中通常将中继器同步到PWM的时基零点。陷阱四动态重配置手册提到可以在中继器工作时更新NSEL、PHASE、SPREAD和MODE寄存器新值会在下一个输入触发到来时生效。这是一个强大功能允许你动态改变采样策略。但务必注意这是一个“影子寄存器”机制写完后不会立即改变当前正在进行的序列。4.3 实战案例电机相电流采样与过采样平均假设我们在一个三相电机控制项目中需要采样两相电流Ia, Ib。我们使用ePWM1的周期匹配事件CTR0来触发采样希望在PWM周期的中点进行采样以避开开关噪声并通过4倍过采样来抑制噪声。步骤分解硬件连接电流传感器输出接ADCIN0Ia和ADCIN2Ib。ePWM配置配置ePWM1的时基周期并设置当计数器等于周期值的一半TBCTR TBPRD/2时置位ETSEL[SOCAEN]并产生ADCSOCA触发脉冲。触发中继器配置使用REP1。REP1CTL.TRIGSEL ePWM1_ADCSOCA。REP1CTL.MODE 0 (过采样模式)。REP1N.NSEL 3 (产生4次触发)。REP1PHASE.PHASE 10 (根据开关噪声的衰减时间延迟10个SYSCLK周期约50ns后开始第一次采样)。REP1SPREAD.SPREAD 0 (背靠背采样)。SOC配置SOC0:TRIGSELREP1TRIG,CHSEL0 (ADCIN0, Ia),ACQPS25 (根据信号源阻抗计算)。SOC1:TRIGSELREP1TRIG,CHSEL2 (ADCIN2, Ib),ACQPS25。注意SOC0和SOC1都使用同一个中继器触发源。当REP1产生一个触发脉冲时ADC会按优先级假设为轮询依次执行SOC0和SOC1的转换。然后由于NSEL3REP1会等待SOC0和SOC1都完成后ADCSOCFLG1相应位清零立即产生下一个触发脉冲如此重复4次。后处理块PPB配置将SOC0的结果送到PPB1SOC1的结果送到PPB2。配置PPBxLIMIT 4。配置PPB工作在累加模式。中断与数据处理配置ADC在PPB累加4次后即完成一组过采样产生中断。在中断服务程序中直接读取ADCPPB1SUM和ADCPPB2SUM寄存器它们已经是4次采样的累加和。将其右移2位除以4即可得到平均后的电流值。通过以上配置我们实现了与PWM中点严格同步、具有硬件消隐延迟、自动进行4次采样并累加、最终由CPU读取平均值的完整电流采样链。整个过程几乎不占用CPU时间精度和实时性都得到了保障。5. 全局软件触发与同步策略除了外设硬件触发AM261x还提供了强大的全局同步软件触发机制通过ADCSOCFRCGBSEL和ADCSOCFRCGB寄存器实现。它解决了什么问题假设你的系统有三个ADC模块ADC0, ADC1, ADC2需要绝对同时启动采样。如果你用普通的软件触发分别写三个ADC的ADCSOCFRC1寄存器由于写寄存器操作有先后顺序采样启动时刻会有几个时钟周期的偏差。这在需要多个ADC严格同步采样的应用中如多相电流同步测量是不可接受的。全局软件触发如何工作通过ADCSOCFRCGBSEL寄存器选择要同步触发的ADC实例例如同时选中ADC0和ADC1。向ADCSOCFRCGB寄存器写入要触发的SOC位域例如写入0x0003以触发SOC0和SOC1。关键点硬件会保证对于所有在ADCSOCFRCGBSEL中被选中的ADC模块其指定的SOC会在完全相同的SYSCLK周期内启动。这是硬件保证的同步精度远高于软件顺序执行。注意事项同步的代价全局软件触发是同步的但它需要访问系统级的模拟子系统寄存器其访问延迟可能比访问单个ADC的寄存器稍大。在极端追求低延迟的触发场景中需要权衡绝对同步性和触发延迟。对于大多数应用这种延迟可以忽略不计。6. 时钟、参考电压与模式选择确保ADC工作的基石在深入玩转触发和SOC之前必须打好ADC的基础否则所有高级功能都是空中楼阁。6.1 时钟配置速度与精度的平衡ADC的时钟链是SYSCLK-PRESCALE分频 -ADCCLK。SYSCLK是系统主时钟用于生成采样窗口。ADCCLK是转换器核心时钟仅在转换阶段有效采样保持期间被门控关闭以省电。关键计算手册指出一次转换需要约11.5个ADCCLK周期。ADCCLK的最大频率为66.67MHz。如果SYSCLK为默认的200MHz那么ADCCTL2.PRESCALE必须至少为3因为200MHz / 3 ≈ 66.67MHz。配置建议在满足ADCCLK不超过最大频率的前提下尽量选择更高的ADCCLK以获得更快的转换速度。转换时间Tconv ≈ 11.5 / ADCCLK。更快的转换意味着在同一个采样窗口内可以完成更多次转换对于过采样或者更快地释放ADC资源。但要注意更高的ADCCLK可能对电源噪声更敏感。6.2 参考电压精度之源AM261x的ADC参考电压设计需要特别注意内部参考仅ADC2模块内部关联了一个1.8V的精密参考缓冲器REFBUF0。ADC0和ADC1没有内部参考缓冲器。外部参考所有ADC都可以使用外部参考电压。关键硬件连接ADC_VREF*_G0引脚连接到ADC0和ADC1。ADC_VREF*_G1引脚连接到ADC2和REFBUF0。如果ADC0/ADC1想使用内部参考必须在PCB上通过走线将ADC_VREF*_G0和ADC_VREF*_G1连接起来。这是很多硬件工程师容易遗漏的点会导致ADC0/ADC1无法工作或精度极差。启用内部参考的步骤 a. 将MASK_ANA_ISO寄存器设置为0x7暂时隔离模拟模块防止电压监控器误触发复位。 b. 通过ADC_REFBUF0_CTRL寄存器使能参考缓冲器。 c. 将MASK_ANA_ISO设回0x0重新使能电压监控器。 d. 通过TOP_CTRL.ADC_REF_COMP_CTRL使能所需的参考电压监控比较器。 e. 检查ADC_REF_GOOD_STATUS寄存器确认参考电压稳定。血的教训参考电压的坑我曾在一个项目中ADC采样值始终飘忽不定噪声很大。排查了软件配置、采样窗口、信号源整整两天最后才发现是硬件工程师忘记了连接ADC_VREF*_G0和ADC_VREF*_G1的0欧姆电阻。ADC0和ADC1实际上在没有稳定参考电压的情况下工作。务必在硬件设计审查和调试初期就确认参考电压的连接和监控状态。6.3 单端与差分模式的选择单端模式输入电压范围是0V到VREF通常为3.3V或1.8V。代码简单但易受地噪声干扰。差分模式输入电压范围是-VREF/2到VREF/2以共模电压为中心。抗干扰能力强特别适合测量小信号或远距离传输的信号但需要占用两个引脚并且要注意共模电压必须在ADC允许的范围内。模式切换通过chsel_1p1v和diff_mode_1p1v位配置。注意同一个ADC模块的不同SOC可以配置为不同的输入模式只要它们使用不同的通道对。7. 常见问题排查与调试技巧实录即使理解了所有原理调试ADC时依然会遇到各种问题。下面是我总结的一些常见故障现象和排查思路。7.1 问题一ADC完全没有转换结果寄存器始终为0或不变。排查步骤检查电源和参考电压这是第一步也是最关键的一步。测量ADC的模拟电源引脚VDDA和参考电压引脚VREF电压是否稳定、准确。使用ADC_REF_GOOD_STATUS寄存器检查内部参考状态。检查时钟确认SYSCLK是否运行ADCCTL2.PRESCALE配置是否正确ADCCLK是否在允许范围内≤66.67MHz。可以通过测量某个GPIO翻转的时钟来间接验证。检查ADC使能确认ADCCTL1.ADCPWDNZ位已被置1上电ADC核心。检查触发路径对于软件触发单步调试确认写ADCSOCFRC1寄存器的操作确实执行了。对于硬件触发如ePWM使用示波器或代码检查触发源如ePWM的SOCA信号是否确实产生了。检查INPUTXBAR或触发路由配置是否正确。检查SOC配置确认目标SOC的ADCSOCxCTL寄存器已正确配置TRIGSEL, CHSEL, ACQPS。特别是TRIGSEL不能是保留值或禁用状态。检查中断与标志位即使你不使用中断也应轮询ADCSOCFLG1.SOCx位。触发发生后该位应由硬件置1转换完成后由硬件清0或软件读结果后清0。如果该位从未置1说明触发根本没到达SOC或SOC未就绪。7.2 问题二ADC有转换但采样值不准、噪声大或跳变严重。排查步骤检查模拟信号本身用示波器直接测量ADC输入引脚上的信号观察是否稳定、有无毛刺、噪声是否在预期内。这是区分硬件问题还是配置问题的关键。检查采样窗口ACQPS这是最常见的原因。使用上一节介绍的方法逐步增大ACQPS值观察采样值是否趋于稳定。如果稳定了说明原ACQPS值太小信号未充分建立。检查参考电压噪声测量参考电压引脚上的纹波。如果噪声大需要在PCB上加强滤波使用高质量的退耦电容通常是一个10uF钽电容并联一个100nF陶瓷电容并尽量靠近芯片引脚。检查接地确保模拟地AGND和数字地DGND的单点连接良好模拟信号走线远离数字噪声源如时钟线、PWM输出线。检查输入模式如果你配置的是差分模式但硬件接的是单端信号负输入端悬空或接地不理想结果会非常混乱。确保硬件连接与软件配置匹配。检查过采样与平均如果使用了过采样和后处理块PPB检查PPBxLIMIT是否设置正确是否在足够数量的采样完成后再去读取ADCPPBxSUM寄存器。7.3 问题三使用触发中继器过采样时采样序列混乱或丢失触发。排查步骤检查触发溢出标志在中断或主循环中检查REPxCTL.TRIGGEROVF和ADCSOCOVF1寄存器。如果它们被置位说明新的触发到来时旧的转换序列尚未完成。你需要增加SPREAD值拉长两次触发之间的间隔。减少NSEL减少过采样次数。提高ADCCLK减少单次转换时间。降低源触发频率。检查SOC pending标志逻辑中继器判断“所有关联SOC已完成”的依据是ADCSOCFLG1中相应位的状态。确保你的程序在读取转换结果后正确地清除了这些标志位如果是自动清除模式则无需操作。如果标志位未被清除中继器会认为SOC一直处于pending状态从而不会产生下一次触发。验证同步源如果你配置了中继器同步SYNCINSEL确认同步信号是否按预期产生。一个意外的同步脉冲会重置中继器内部状态打断正在进行的序列。7.4 问题四多ADC同步采样时采样时刻有偏差。排查步骤确认使用全局软件触发对于要求绝对同步的采样必须使用ADCSOCFRCGB全局触发而不是分别触发各个ADC。检查ADC时钟同步即使触发同步如果各个ADC模块的ADCCLK不同步转换速度也会有细微差别。确保所有ADC的ADCCTL2.PRESCALE配置相同并且由同一个SYSCLK分频而来。手册提到对不同ADC模块写入不同的时钟分频值会导致它们异步工作。检查采样窗口ACQPS即使转换同时开始如果不同SOC的ACQPS设置不同采样保持阶段的开始和结束时间也会不同。对于需要严格同步采样的多个通道应尽量使用相同的ACQPS值。调试ADC是一个系统工程需要软件、硬件知识结合并善用示波器、逻辑分析仪和芯片的寄存器调试工具。从电源、时钟、参考电压这些基础开始排查再到触发逻辑、SOC配置最后才是算法处理层层递进才能高效地定位和解决问题。