1. 项目概述TMS320C5504 EMIF接口的核心价值与挑战在嵌入式DSP系统设计中外部存储器接口EMIF往往是决定系统性能、功耗和成本的关键枢纽。它不仅是处理器与外部世界交换数据的“高速公路”更是平衡速度、容量和能效的“调度中心”。我接触过不少基于TI C55x系列DSP的项目从早期的音频处理设备到后来的便携式医疗仪器几乎每一个需要处理大量数据或运行复杂算法的案子都绕不开对EMIF的深度配置。TMS320C5504作为该系列中的一员其EMIF模块的设计相当经典支持SDRAM、mSDRAM以及多种异步存储器但随之而来的时序配置复杂性也常常让开发者尤其是刚接触硬件底层的新手感到头疼。这份技术手册的片段恰恰揭示了EMIF配置中最核心也最易被忽视的部分时序参数与电气规范的精确匹配。很多工程师拿到芯片后第一反应是去翻寄存器手册照着例程配几个参数就让系统跑起来结果不是数据出错就是系统不稳定最后花大量时间在调试上。其实问题的根源往往在于没有吃透像EM_SDCLK时钟频率限制、建立/保持时间tsu/th以及不同电源域CVDD, DVDDEMIF下的时序差异这些底层约束。比如手册里明确写着当CVDD1.05V且DVDDEMIF1.8V时EM_SDCLK必须配置为SYSCLK/2且不能超过50MHz如果你忽略了这条强行跑在更高频率轻则数据读写错误重则芯片发热甚至损坏。因此深入理解这些时序表格和图表不是纸上谈兵而是确保项目一次成功、稳定运行的必修课。2. EMIF接口整体架构与核心功能解析TMS320C5504的EMIF是一个高度可编程的并行接口它像一位全能的外交官能够与性格迥异的各种存储器“对话”。其架构设计主要围绕两个核心场景展开一是与高速、同步的SDRAM/mSDRAM通信用于需要高带宽的数据缓冲区如音频帧缓冲区、图像处理中间结果二是与低速、异步的存储器如NOR Flash、SRAM或FPGA通信常用于存储启动代码、配置参数或作为控制接口。2.1 同步SDRAM/mSDRAM接口深度剖析同步接口的核心是时钟信号EM_SDCLK。所有操作包括命令如激活、读、写、预充电和数据传输都与这个时钟的边沿严格对齐。C5504的EMIF控制器内部集成了SDRAM控制器它自动处理了SDRAM协议中最繁琐的部分比如自动预充电管理、行列地址复用以及刷新控制。开发者需要做的就是通过配置寄存器告诉控制器“我用的SDRAM是多大容量、几个Bank、刷新周期是多少、时序要求如何”。这里手册提到了几个高级特性对于低功耗设计至关重要自刷新模式这是SDRAM的一种低功耗状态。当EMIF将SDRAM置于此模式后SDRAM会利用自身的振荡器来定期刷新存储单元而EMIF可以停止提供时钟EM_SDCLK。这对于电池供电的设备在待机时节省功耗非常有效。手册中提到的温度控制自刷新更是移动版SDRAM的“黑科技”它能根据芯片温度动态调整刷新率在保证数据不丢失的前提下进一步降低功耗。掉电模式比自刷新更省电但代价是SDRAM不进行任何刷新。因此在进入此模式前如果希望保留数据DSP必须定期唤醒SDRAM并执行刷新命令。这需要软件精确的时序控制。可编程引脚压摆率这是一个硬件层面的优化点。通过配置EMIF输出引脚的压摆率slew rate可以控制信号边沿的陡峭程度。更陡峭的边沿高速率有利于高速传输但会产生更强的电磁干扰更平缓的边沿低速率可以减少噪声和过冲改善信号完整性尤其在板级布线不理想或负载较重时非常有用。这需要在性能和电磁兼容性之间做权衡。2.2 异步存储器接口工作机制异步接口没有统一的时钟来同步操作其通信完全依赖于一系列控制信号如EM_CSx、EM_OEx、EM_WEx的握手时序。EMIF为每个片选CS2-CS5都提供了独立的配置寄存器如ACS2CR1/2允许开发者为连接在同一个接口上的不同速度、不同类型的存储器设备设置不同的访问时序。异步访问被划分为三个清晰的阶段理解这三个阶段是正确配置的关键建立阶段在发出读/写命令OE或WE变低之前地址和片选信号必须提前稳定一段时间。这个时间由配置寄存器中的建立时间参数如RS, WS决定单位为EMIF时钟周期E。选通阶段这是数据实际被读取或写入的窗口。对于读操作OE信号保持低电平对于写操作WE信号保持低电平同时数据在总线上有效。这个窗口的宽度由选通时间参数RST, WST控制。保持阶段在命令信号OE/WE撤销后地址和数据信号还需要继续保持有效一段时间以确保被寻址的设备能可靠地锁存数据或完成内部操作。这个时间由保持时间参数RH, WH控制。此外EM_WAITx信号是异步接口的“流量控制”关键。当连接的存储器速度较慢无法在预设的选通时间内完成操作时它可以拉低EM_WAITx信号通知EMIF“我需要更多时间”。EMIF会插入额外的等待周期直到EM_WAITx变高为止。手册中的tsu(EMOEL-EMWAIT)和tsu(EMWEL-EMWAIT)参数就定义了EM_WAITx信号必须在选通阶段结束前多久被断言才能被正确识别。注意在配置异步接口时最容易犯的错误是只关注存储器的“典型”访问时间而忽略了其在不同电压、温度下的最坏情况值。务必根据存储器数据手册中的最大值Max来设置EMIF的建立、选通和保持时间并留出足够的余量通常增加20%-30%否则在低温或低电压下极易出现读写失败。3. 核心时序参数详解与配置实战手册中大量的时序表格是设计的金科玉律但直接看数字容易让人迷惑。我们需要将其转化为可操作的配置步骤和计算公式。3.1 SDRAM接口时序参数计算与配置我们以CVDD1.3V, DVDDEMIF3.3V这个常见工作条件为例对应Table 5-17。假设我们的系统时钟SYSCLK 100 MHz并且我们希望EM_SDCLK也运行在100 MHz。时钟频率验证首先根据手册5.9.2节和Table 5-17的脚注(3)当CVDD1.3V且DVDDEMIF3.3V时EM_SDCLK最高可达100MHz。我们的设计符合要求。如果SYSCLK是120MHz那么EM_SDCLK就必须配置为SYSCLK/2 60MHz。关键时序参数提取与计算时钟周期tc(CLK)目标为10 ns (100MHz)。时钟高/低脉冲宽度tw(CLK)最小为5 ns。对于50%占空比的时钟10ns周期下高/低电平时间各为5ns刚好满足最小值但无余量。在实际设计中如果时钟源有抖动或PCB走线有延时建议让EMIF内部或外部时钟电路产生一个略高于5ns的脉宽比如5.5ns以增加可靠性。输出延迟td(CLKH-xxV)这一系列参数如td(CLKH-AV)地址有效延迟的最大值都是7.77 ns。这意味着在EM_SDCLK上升沿之后最晚7.77 ns内地址、数据、控制信号就会在引脚上变得有效。这个参数决定了信号从DSP发出到抵达SDRAM引脚的时间。在设计PCB时我们必须确保EM_SDCLK时钟线到SDRAM的飞行时间与地址/控制/数据线的飞行时间之间的差值即时钟偏斜在这个7.77ns的窗口内被妥善管理。通常要求时钟线略长于数据线让时钟边沿“等一等”数据。SDRAM芯片时序匹配EMIF的时序配置通过SDTIMR等寄存器必须满足SDRAM芯片本身的要求。例如我们需要配置tRCD(RAS to CAS Delay)在EMIF中这通常对应命令发出到数据操作开始的延迟。tRP(Precharge Time)预充电命令的持续时间。tRAS(Active to Precharge)行激活的最小时间。CL(CAS Latency)读命令发出后数据出现在数据总线上的延迟周期数。这是最重要的参数之一。配置时EMIF的配置值必须大于或等于SDRAM数据手册中对应参数在最坏情况下的最小值。例如SDRAM的tRCD(min) 18 ns而我们的EM_SDCLK周期是10ns那么我们需要将EMIF中对应的参数至少设置为2个时钟周期20ns。3.2 异步接口时序参数计算与配置异步接口的配置更为灵活也更容易出错。我们以配置一个访问时间为70ns的NOR Flash为例SYSCLK100MHz (E10ns)。确定存储器需求从Flash数据手册找到关键参数tACC(地址有效到数据输出) 70 ns (最大)tOE(OE低到数据有效) 25 nstOH(OE高后数据保持) 10 ns。将时间需求转换为时钟周期总访问时间需求主要由tACC决定约为70ns。在EMIF时钟周期E10ns下约需7个周期。我们需要将这个总时间分配给建立(RS)、选通(RST)、保持(RH)三个阶段。一个常见的分配策略是RS1个周期 RST5个周期 RH1个周期。这样总周期数 RSRSTRH 7对应70ns刚好满足tACC。同时5个周期的选通时间50ns也远大于tOE的25ns。配置寄存器将计算出的RS1, RST5, RH1写入对应片选空间如CS2的异步配置寄存器ACS2CR1/2。考虑EM_WAITx的用法如果Flash的速度在极端情况下可能变慢或者我们希望设计更稳健可以启用EM_WAITx功能。我们需要根据手册Table 5-19的公式计算tsu(EMOEL-EMWAIT)。当CVDD1.3V时该值为4E 7.5 ns 4*10 7.5 47.5 ns。这意味着如果我们要插入等待周期必须在读选通阶段结束前至少47.5ns对于写操作是tsu(EMWEL-EMWAIT)将EM_WAITx信号拉低。这要求Flash的“忙”状态信号如RY/BY#必须能在这个时间点之前反馈给DSP。计算实际时序裕量根据Table 5-20的公式我们可以验证最坏情况下的时序。例如读周期时间tc(EMRCYCLE)最大值为(RSRSTRH)*E 7.5 ns 7*10 7.5 77.5 ns。这仍然大于Flash的70nstACC有7.5ns的裕量。但要注意这个7.5ns是DSP端的输出偏差我们还需要考虑PCB走线延迟、信号完整性等因素。因此在高速或长走线情况下这个裕量可能不够需要适当增加RST或整体降低EMIF时钟频率。4. 寄存器配置详解与代码示例理解了时序原理后最终都需要落实到寄存器的配置上。手册中的Table 5-11列出了EMIF的所有寄存器我们挑几个最核心的来解读。4.1 SDRAM配置寄存器组SDCR1 (SDRAM Configuration Register 1, 地址 0x1008h)此寄存器定义SDRAM的基本拓扑和操作模式。SDRAM_SIZE配置SDRAM的容量大小如64Mb, 128Mb。IBANK_POS,PAGESIZE定义内部Bank数量和页大小必须与物理SDRAM芯片一致。CL设置CAS延迟必须匹配SDRAM芯片的规格如CL2或3。SDRAM_TRC,SDRAM_TRP配置行周期时间和预充电时间同样需满足SDRAM芯片的时序要求。SDTIMR1 (SDRAM Timing Register 1, 地址 0x1020h)此寄存器配置具体的时序参数单位是EM_SDCLK周期数。T_RFC自动刷新周期。T_RP预充电时间。T_RCDRAS到CAS延迟。T_WR写恢复时间。T_RAS行激活时间。T_RC行周期时间。配置这些字段时计算值 ceil(SDRAM芯片时序最小值 / EM_SDCLK周期)。例如芯片tRAS(min)42ns, EM_SDCLK10ns则T_RAS应配置为ceil(42/10) 5。SDRCR (SDRAM Refresh Control Register, 地址 0x100Ch)配置刷新速率。刷新计数器值 (刷新周期 / EM_SDCLK周期) - 1。例如SDRAM要求每64ms刷新8192行则每行的刷新间隔为7.8us。若EM_SDCLK100MHz则计数器值 (7.8us / 10ns) - 1 779。4.2 异步存储器配置寄存器组ACS2CR1/2 (Asynchronous CS2 Configuration Registers, 地址 0x1010h/0x1011h)这是配置CS2片选空间异步设备的核心寄存器。TA总线 turnaround 时间。当总线从读操作切换到写操作或反之需要插入空闲周期以防止总线冲突。通常设置为1或2个周期。RS,RST,RH读操作的建立、选通、保持时间。WS,WST,WH写操作的建立、选通、保持时间。SS选择模式。SS0为标准模式片选信号在建立阶段开始有效SS1为选通开始模式片选信号与读/写信号同时变低。后者可以减少片选信号的有效时间降低功耗和干扰。AWCCR1/2 (Asynchronous Wait Cycle Configuration Registers, 地址 0x1004h/0x1005h)配置EM_WAITx相关参数。MEWC最大外部等待周期。设置EMIF在等待EM_WAITx信号时最多可以插入多少个16个时钟周期的等待块。超过此值EMIF将产生超时错误。这可以防止因外部设备故障导致DSP死等。4.3 配置代码示例C语言以下是一个简化的初始化示例假设我们要初始化SDRAM和连接在CS2上的一个异步NOR Flash。#include c5504.h // 包含C5504寄存器定义的头文件 // 假设系统时钟SYSCLK 100MHz EM_SDCLK SYSCLK 100MHz // SDRAM芯片参数64Mb, 4 banks, CL3, tRCD20ns, tRP20ns, tRAS45ns, 刷新周期64ms/8192行 void EMIF_Init(void) { // 1. 首先确保以字模式访问EMIF寄存器根据手册Note (1) // 假设EMIF系统控制寄存器地址为0x1C00 BYTEMODE位在bit[1:0] *(volatile unsigned int *)0x1C00 ~(0x3); // 设置BYTEMODE 00b // 2. 配置SDRAM // SDCR1: 64Mb, 4 banks, 页大小512字 CL3 EMIF_SDCR1 (0x1 13) | // SDRAM_SIZE 1 (64Mb) (0x1 11) | // IBANK_POS 1 (4 banks) (0x1 7) | // PAGESIZE 1 (512 words) (0x3 4); // CL 3 // SDTIMR1: 时序参数计算 (周期数 ceil(时间/10ns)) // tRAS 45ns - 5 cycles, tRCD 20ns - 2 cycles, tRP 20ns - 2 cycles // tRC tRAS tRP 65ns - 7 cycles, tRFC 自动刷新周期假设为75ns - 8 cycles // tWR 写恢复时间假设为15ns - 2 cycles (必须至少2个周期) EMIF_SDTIMR1 (8 24) | // T_RFC 8 (2 20) | // T_RP 2 (2 16) | // T_RCD 2 (2 12) | // T_WR 2 (5 8) | // T_RAS 5 (7 0); // T_RC 7 // SDRCR: 刷新控制。刷新间隔 64ms / 8192 7.8125us // 所需刷新计数器值 (7.8125us / 10ns) - 1 780.25 - 取整781 EMIF_SDRCR 781; // 3. 配置异步存储器 (CS2空间假设连接一个70ns的NOR Flash) // ACS2CR1: 设置读/写时序。RS1, RST5, RH1; WS1, WST5, WH1; TA1 EMIF_ACS2CR1 (1 28) | // TA 1 (1 20) | // WH 1 (5 16) | // WST 5 (1 12) | // WS 1 (1 8) | // RH 1 (5 4) | // RST 5 (1 0); // RS 1 // ACS2CR2: 设置片选宽度32位和标准模式(SS0) EMIF_ACS2CR2 (0x2 4) | // 设置数据总线宽度等此处示例性设为32位访问 (0x0 0); // SS 0 (标准模式) // 4. 配置EM_SDCLK时钟源。通过ECDR寄存器(0x1C26h)的bit0设置。 // 0 SYSCLK/2, 1 SYSCLK。我们选择SYSCLK (100MHz)。 // 注意此操作可能涉及系统时钟控制模块此处仅为示意。 // *(volatile unsigned int *)0x1C26 | 0x1; // 5. 最后使能SDRAM控制器和相应的片选 // 通常SDCR1/2中还有使能位此处略去具体位操作。 }实操心得在编写此类底层驱动时务必在每次关键寄存器配置后插入一个小延迟如几个NOP指令确保写操作完成特别是对SDRAM控制器的配置。有些DSP的EMIF模块需要几个时钟周期来同步配置更新。直接连续写入多个配置寄存器可能导致状态机紊乱。5. 低功耗模式配置与电源管理策略TMS320C5504 EMIF的低功耗特性是其应用于便携式设备的一大亮点。合理使用这些模式可以显著延长电池寿命。5.1 SDRAM自刷新与掉电模式进入与退出流程进入自刷新步骤1确保所有对SDRAM的访问都已完成。步骤2通过配置SDRAM模式寄存器通常通过向特定地址写入特定命令序列来实现EMIF控制器可能提供专用命令或寄存器位来触发向SDRAM发送“进入自刷新”命令。步骤3等待SDRAM要求的tRFC自刷新进入时间过去。在此期间不能对SDRAM进行任何操作。步骤4关闭EM_SDCLK输出。这是省电的关键。可以通过配置时钟控制寄存器来实现。此时SDRAM仅依靠其内部振荡器维持数据。退出自刷新步骤1重新使能EM_SDCLK并等待时钟稳定。步骤2等待一段最小时间通常为tXSR自刷新退出时间远大于tRFC。步骤3向SDRAM发送“退出自刷新”命令随后必须紧跟一个自动刷新命令。步骤4等待至少8个具体看芯片手册自动刷新周期完成后SDRAM才能恢复正常读写操作。重要警告退出自刷新后的初始化序列尤其是那8个刷新命令绝对不能省略。很多系统不稳定或随机数据错误的bug都源于退出流程不完整。建议将这段初始化代码封装成函数并在每次退出低功耗模式后严格调用。进入/退出掉电模式流程与自刷新类似但掉电模式前无需特殊命令只需停止所有访问并关闭时钟。退出时需要先提供时钟然后由软件定期执行手动刷新命令来保持数据直到重新进入自刷新或正常模式。这对软件定时器的精度有要求。5.2 可编程压摆率配置压摆率配置通常位于EMIF的引脚控制寄存器或系统控制寄存器中。TI的文档中可能称之为“Slew Rate Control”或“Output Buffer Strength Control”。配置选项通常是“快”和“慢”两档或者有更精细的分级。高速场景50MHz建议使用快速压摆率以获得清晰的信号边沿满足建立/保持时间要求。低速或噪声敏感场景使用慢速压摆率。这能显著减少信号过冲和下冲降低由快速切换引起的电源噪声和电磁辐射。在电路板空间紧凑、布线不理想或使用长电缆连接外部存储器时这个配置尤其有效。调试技巧如果遇到间歇性的数据错误尤其是高负载或高温时用示波器观察数据线和时钟线的信号完整性。如果发现明显的振铃或过冲尝试将相关信号组的压摆率调慢往往能立竿见影地解决问题。6. 硬件设计与信号完整性要点再完美的软件配置也需要一个可靠的硬件平台作为基础。EMIF接口的PCB设计是硬件成功的关键。6.1 时钟与信号布线规则EM_SDCLK是生命线必须作为关键信号处理。优先布线首先布放时钟线确保其路径最短、最直接。阻抗控制要求做50欧姆的单端阻抗控制。避免过孔尽量减少过孔过孔会引入阻抗不连续和寄生电感。全程参考地平面时钟线下方必须有完整、无分割的地平面作为回流路径。地址/控制/数据线组等长布线同一组信号如所有数据线D[15:0]之间要进行组内等长控制误差通常控制在±50mil以内高速情况下要求更严。这可以减少数据位之间的偏斜保证同时被锁存。与时钟的时序关系根据手册td(CLKH-xxV)的最大值如7.77ns我们可以计算出允许的时钟-数据偏斜。假设信号在PCB上的传播速度约为6英寸/ns那么7.77ns对应的走线长度差约为46.6英寸。这看起来很大但实际设计时要考虑芯片内部的延迟、缓冲器延迟等安全做法是让数据/地址线的长度比时钟线长一点点如100-500 mil以确保在时钟边沿采样时数据已经稳定。这被称为“时钟延迟”或“源同步时序补偿”。终端匹配对于高速50MHz或长走线几英寸需要在SDRAM端为数据线和地址线添加串联终端电阻通常22-33欧姆靠近SDRAM放置以消除信号反射。6.2 电源与去耦设计电源域隔离DVDDEMIF是EMIF接口的IO电源CVDD是DSP核心电源。它们必须分开供电并通过磁珠或0欧姆电阻进行单点连接。这可以防止数字IO开关噪声串扰到敏感的核心电源导致DSP内部工作不稳定。充分去耦在DVDDEMIF和CVDD的每个电源引脚附近100mil都必须放置一个0.1uF的陶瓷电容到地。在SDRAM芯片的电源引脚处同样需要放置0.1uF电容。在整块板的电源入口处为每个电源域放置一个10uF的钽电容或大容量陶瓷电容作为储能电容以应对瞬间的大电流需求。地平面一个完整、连续的地平面至关重要。它为所有高速信号提供低阻抗的回流路径是保证信号完整性和抑制电磁干扰的基石。尽量避免地平面被信号线分割得支离破碎。7. 调试实战常见问题排查与解决方法即使设计和配置都小心翼翼调试阶段也难免遇到问题。以下是我在多个项目中总结出的EMIF相关典型问题及排查思路。问题现象可能原因排查步骤与解决方法系统上电后读写SDRAM数据全为0或固定值1. SDRAM未正确初始化。2. 时钟EM_SDCLK未输出或频率不对。3. 电源或复位异常。1.查配置用仿真器或调试器读取SDCR1、SDTIMR1、SDRCR寄存器确认值与预期一致。2.测时钟用示波器测量EM_SDCLK引脚确认有无时钟输出频率和幅值是否正常。3.查电源/复位测量SDRAM和DSP的电源电压、复位信号是否稳定。检查SDRAM的CKE引脚是否被正确拉高。随机性数据错误尤其在大量连续读写时1. 时序裕量不足。2. 信号完整性问题过冲、振铃。3. 电源噪声大。4. 刷新配置错误。1.增裕量在寄存器配置中将关键时序参数如tRCD, tRP, CL增加1-2个周期。2.看波形用示波器最好带高级触发捕获出错的读写周期波形检查数据建立/保持时间是否满足SDRAM要求检查有无明显失真。3.查电源用示波器AC耦合模式观察电源引脚上的噪声确保在容限内。加强去耦。4.查刷新确认SDRCR寄存器刷新率设置正确并检查在低功耗模式切换后刷新是否被正确恢复。异步存储器如Flash访问失败1. 异步时序配置RS/RST/RH不满足存储器最慢要求。2.EM_WAITx信号连接或配置错误。3. 片选信号连接错误或电平不匹配。1.算时间根据Flash数据手册最坏情况参数重新计算并增大EMIF的建立、选通、保持时间配置。2.查WAIT确认EM_WAITx信号已正确连接到存储器的“忙”状态引脚。用逻辑分析仪观察在访问期间该信号是否被拉低以及拉低时间是否覆盖了Flash的忙周期。3.查片选确认物理连接和片选空间地址映射正确。检查Flash的接口电压是否与DVDDEMIF匹配必要时加电平转换芯片。系统在低功耗模式唤醒后死机1. 退出自刷新/掉电模式的序列不完整或时序错误。2. SDRAM内容在低功耗期间丢失。1.严格遵循流程对照SDRAM芯片手册和本文5.1节的流程单步调试唤醒代码确保每个步骤尤其是刷新命令都执行到位并等待了足够的时间。2.检查CKE和时钟确保在进入低功耗前CKE被正确控制唤醒后时钟稳定再操作。检查电源在睡眠期间是否跌落到SDRAM保持电压以下。高负载时系统不稳定1. 同步开关输出噪声导致电源跌落。2. 同时切换的输出信号过多产生地弹。1.优化PCB检查电源/地平面是否完整去耦电容是否足够且靠近芯片。2.调整压摆率尝试将EMIF相关引脚的压摆率配置为“慢速”观察是否改善。3.分散访问在软件上避免对SDRAM进行背靠背的全带宽突发访问适当插入空操作或访问其他外设给电源恢复时间。终极调试工具逻辑分析仪与示波器联调当软件排查和简单测量无法定位问题时必须动用逻辑分析仪。将逻辑分析仪连接到EM_SDCLK、关键地址线、数据线、控制线如RAS、CAS、WE和片选信号上。设置一个复杂的触发条件例如在连续写入特定模式后捕捉读操作。通过分析捕获到的波形可以清晰地看到命令序列是否正确、数据是否在正确的时钟边沿出现、建立保持时间是否满足。将逻辑分析仪的时间戳与示波器测量的模拟波形特别是时钟和数据交叠处结合起来是解决最棘手时序问题的黄金手段。最后分享一个我个人的深刻体会EMIF的配置三分靠算七分靠调。手册给出的公式和参数是理论的起点但PCB的寄生参数、电源质量、环境温度都会影响最终效果。务必在硬件板卡回来后留出充足的调试时间从保守的配置开始更低的频率更长的时序逐步优化至稳定运行的极限。养成在关键信号测试点上放置焊盘或排针的习惯会让调试过程轻松很多。每一次成功驱动起一片外部存储器都是对硬件和软件协同工作理解的又一次加深。