AM1802引脚复用系统解析:USB、以太网与GPIO配置实战
1. AM1802引脚复用系统深度解析在嵌入式硬件设计领域尤其是基于ARM架构的工业级处理器引脚复用Pin Muxing是决定系统设计成败的关键技术。它直接关系到你的电路板能否顺利启动、外设能否正常工作以及整个系统的稳定性和扩展性。德州仪器的AM1802作为一款经典的ARM9应用处理器其引脚复用机制设计得相当典型且功能强大。很多工程师在初次接触这类芯片时常常对着密密麻麻的引脚定义表感到困惑为什么一个引脚有那么多名字如何避免功能冲突配置错了会有什么后果今天我就结合自己多年在工控和通信设备上使用AM1802的经验把它的引脚复用系统特别是USB、以太网和GPIO的配置掰开揉碎了讲清楚让你不仅能看懂手册更能玩转配置。AM1802的引脚复用本质上是一种“硬件资源时分复用”的智慧。芯片内部的硅片面积和封装引脚数量是有限的昂贵资源但处理器需要连接的外设却越来越多。为了解决这个矛盾芯片设计者让一个物理引脚在内部通过多路选择器连接到不同的功能模块上。具体连接到哪个模块则由一组叫做“引脚复用控制器”的寄存器来决定。对于AM1802而言这个控制中心就是SYSCFG模块。你提供的资料中Table 3-15到Table 3-20详细列出了各个外设的引脚功能而Table 4-1则揭示了控制这些功能的寄存器地址这两部分必须结合起来看。这里有一个非常重要的概念引脚的功能状态是分层的。第一层是复位后的默认状态通常由芯片内部硬连线或上/下拉电阻决定目的是确保芯片能从特定的存储设备如SPI Flash或NAND启动。第二层才是软件可配置的状态在系统初始化阶段由Bootloader或你的应用程序通过配置SYSCFG模块中的PINMUX0-PINMUX19寄存器来设定。这意味着你在设计原理图和编写驱动时必须同时考虑这两个阶段的需求。1.1 核心概念引脚类型、上下拉与电压组在深入具体外设前必须理解引脚描述表中几个关键字段的含义这是避免硬件设计踩坑的基础。TYPE类型这定义了引脚的基本电气行为。I (Input)纯输入引脚。例如外部中断、UART接收、某些时钟输入。你需要确保外部电路能提供稳定的高/低电平。O (Output)纯输出引脚。例如GPIO输出、PWM、UART发送。其驱动能力是有限的驱动LED或MOSFET时可能需要缓冲器。I/O (Bidirectional)双向引脚。最常见于数据总线如EMIF、地址总线、以及MMC/SD的数据线。这类引脚的方向通常在通信过程中动态变化由相应的外设控制器管理。A (Analog)模拟信号引脚。例如USB的差分数据线USB0_DM/DP、模拟音频输入等。这类引脚对PCB布线要求极高需要做阻抗控制和噪声隔离绝不能当作数字IO随意使用。PWR/GND电源和地引脚。这是系统的生命线布局和去耦电容的摆放至关重要。PULL上下拉这个配置决定了引脚在内部未驱动高阻态或外部未连接时的默认电平对于系统稳定性和功耗有直接影响。IPU (Internal Pull-Up)内部上拉电阻。通常阻值在20kΩ到100kΩ量级。当配置为输入且外部悬空时引脚会被拉至高电平。IPD (Internal Pull-Down)内部下拉电阻。同理悬空时引脚被拉至低电平。CP[n] (Configurable Pull)可配置上拉/下拉。这是AM1802提供的高级功能通过SYSCFG模块中的PUPD_ENA和PUPD_SEL寄存器进行动态配置。这给了软件极大的灵活性但请注意手册中的警告这些可配置的上下拉控制在芯片退出复位后才生效。在复位期间所有相关引脚默认为下拉状态。如果你的应用在复位期间就需要确定的上拉电平例如某些使能信号则必须使用外部电阻。GROUP电压组这是AM1802引脚设计的一个精妙之处也是容易出错的地方。引脚被分为A、B、C三个独立的I/O电压组Bank。Group A工作电压由电源DVDD3318_A决定。Group B工作电压由电源DVDD3318_B决定。Group C工作电压由电源DVDD3318_C决定。 每个组可以独立选择工作在1.8V或3.3V标称值。这意味着你可以在同一块板卡上让Group A连接3.3V的UART电平转换芯片让Group B连接1.8V的DDR存储器而Group C连接3.3V的以太网PHY。但是组内的所有引脚必须工作在相同的电压下你不能让Group A里的某些引脚接3.3V另一些接1.8V。在设计电源树时必须为这三个电源轨提供独立且可调的LDO或DCDC并根据你连接的外设电平来设置。实操心得电压组配置的坑我曾经调试过一块板卡以太网RMII接口在Group C始终无法建立链接。排查了半天发现原理图上DVDD3318_C接的是3.3V但与之对接的以太网PHY芯片的IO电平是1.8V。虽然短时间内似乎能工作但电平不匹配导致信号阈值容限不足在长电缆或高温下极易出错。解决方法就是更换为支持1.8V IO的PHY或者将DVDD3318_C的电源改为1.8V前提是Group C的其他外设也支持1.8V。所以画原理图时务必为每个电压组建立一个清晰的“外设-电平”对应表。2. 关键外设引脚功能详解与配置实战理解了基础概念我们来看你最关心的三个部分USB、以太网和GPIO。我会结合表格数据告诉你每个引脚该怎么用以及配置时要注意什么。2.1 USB 2.0 OTG模块引脚配置AM1802集成了一个USB 2.0 OTG控制器和PHY物理层这大大简化了设计。相关引脚集中在Table 3-15中。核心信号线USB0_DM (M18) / USB0_DP (M19)USB差分数据线对。类型为模拟(A)。这是USB通信的物理通道PCB布线必须作为差分对处理控制90欧姆的差分阻抗并等长、等距走线远离噪声源。它们内部默认有下拉电阻(IPD)这是USB规范要求的用于检测设备连接。USB0_ID (P16)OTG ID识别引脚。类型为模拟(A)。用于识别当前端口是作为主机A插头ID接地还是设备B插头ID悬空。如果你的应用固定为主机或设备这个引脚需要根据情况接地或悬空。USB0_VBUS (N19)USB总线电压检测引脚。类型为模拟(A)。用于检测USB端口上是否有5V VBUS存在。通常需要连接一个分压电阻网络例如用两个电阻将5V分压到芯片可承受的ADC输入电压范围以便内部电路检测。USB0_DRVVBUS (K18)VBUS电源控制输出。类型为输出(O)属于Group B。当AM1802作为USB主机时需要通过此引脚控制外部MOSFET或电源开关为USB端口提供5V VBUS电源。这是一个数字输出引脚。电源与时钟USB0_VDDA33 (N18)PHY的3.3V模拟电源。必须干净、稳定。建议使用独立的LDO供电并紧贴引脚放置10uF和0.1uF的退耦电容。USB0_VDDA18 (N14)PHY的1.8V模拟电源输入。同样需要干净的电源。USB0_VDDA12 (N17)PHY内部1.2V LDO的输出。这是一个非常关键的引脚手册明确强调“为了确保器件正常工作此引脚必须始终通过一个0.22μF电容连接到VSS地即使不使用USB0。”忽略这一点可能导致PHY工作不稳定甚至损坏。USB_CVDD (M12)USB控制器核心逻辑的1.2V数字电源。USB_REFCLKIN (A3)可选的时钟输入。USB PHY需要精确的时钟通常为19.2MHz, 20MHz, 24MHz, 26MHz等。你可以通过此引脚从外部提供时钟也可以配置为使用芯片内部的PLL产生时钟。这是一个复用引脚还与AHCLKX、UART1_CTS、GP0[10]共用。配置流程与代码示例USB的引脚复用相对简单因为大部分是专用模拟引脚。主要配置在于USB_REFCLKIN和USB0_DRVVBUS如果用作主机。确定时钟源假设我们使用外部24MHz晶振为USB提供时钟该时钟连接到了USB_REFCLKIN引脚。配置PINMUX需要将A3引脚的功能选择为USB_REFCLKIN。通过查阅数据手册中PINMUX寄存器的位域定义这部分需要参考更详细的寄存器手册但原理如下我们可以找到控制A3引脚对应某个PINMUX寄存器的特定位段的设置值。配置CFGCHIP寄存器在SYSCFG模块中CFGCHIP0/1/2/3/4寄存器用于配置USB PHY的工作模式、时钟选择等。例如需要设置位域来选择USB_REFCLKIN作为时钟源并使能PHY。一段简化的伪代码示意如下实际地址和位域需查寄存器手册// 1. 解锁SYSCFG模块的写保护KICK寄存器 *(volatile unsigned int *)0x01C14038 0x83E70B13; // KICK0R *(volatile unsigned int *)0x01C1403C 0x95A4F1E0; // KICK1R // 2. 配置A3引脚为USB_REFCLKIN功能假设PINMUX0的[xx:yy]位控制此引脚 unsigned int *pinmux0 (unsigned int *)0x01C14120; *pinmux0 ~(0x7 yy); // 清除原有功能 *pinmux0 | (0x4 yy); // 设置功能码为USB_REFCLKIN具体值需查表 // 3. 配置USB PHY使用外部参考时钟 unsigned int *cfgchip2 (unsigned int *)0x01C14188; *cfgchip2 | (1 8); // 假设第8位控制参考时钟选择1外部输入 // 4. 如果作为主机配置USB0_DRVVBUS引脚K18为GPIO输出模式并初始化为低电平 // 首先配置K18引脚为GPIO功能假设是GPIO Bank 1的某个bit // 然后通过GPIO方向寄存器和数据寄存器控制其输出。不使用USB时的处理Table 3-21 如果你的设计不需要USB功能为了节省功耗和避免干扰必须正确处理这些引脚USB0_DM,USB0_DP,USB0_ID,USB0_VBUS,USB0_DRVVBUS悬空No Connect。USB0_VDDA33,USB0_VDDA18可以断开不供电。但更稳妥的做法是将其连接到干净的电源或地具体参考芯片勘误表或应用笔记。USB0_VDDA12必须通过一个0.22μF电容接地。USB_REFCLKIN可以悬空或者配置为其他外设功能如GPIO。USB_CVDD仍需连接1.2V核心电源。2.2 以太网MAC (EMAC) 控制器引脚配置AM1802的EMAC支持两种标准接口MII媒体独立接口和RMII精简MII。你的资料Table 3-16列出了所有相关引脚。MII接口需要16根信号线而RMII只需9根加上时钟可以节省大量引脚资源但需要外部提供50MHz时钟。MII接口引脚详解数据与控制MII_TXD[3:0](E3, E2, E1, F3)发送数据输出。MII_TXEN(C1)发送使能输出。MII_TXCLK(D3)发送时钟25MHz输入由PHY提供。MII_RXD[3:0](C19, D18, E17, D16)接收数据输入。MII_RXDV(C17)接收数据有效输入。MII_RXCLK(D19)接收时钟25MHz输入由PHY提供。MII_CRS(C18)载波侦听输入。MII_COL(D1)冲突检测输入。MII_RXER(C16)接收错误输入。管理接口MDIOMDIO(D17)双向数据线用于读写PHY寄存器。MDCLK(E16)管理接口时钟输出。RMII接口引脚详解数据与控制RMII_TXD[1:0](V16, U18)发送数据输出。RMII_TXEN(R14)发送使能输出。RMII_RXD[1:0](V17, W16)接收数据输入。RMII_CRS_DV(W19)载波侦听/接收数据有效输入。RMII_RXER(W17)接收错误输入。时钟RMII_MHZ_50_CLK(W18)50MHz参考时钟方向为I/O。这是RMII与MII最大的不同。它可以配置为输入由外部有源晶振或时钟发生器提供或输出由AM1802提供给PHY。具体模式需要在CFGCHIP寄存器中配置。引脚复用冲突与选择仔细观察表格你会发现几乎所有EMAC引脚都与GPIO或其他外设复用例如MII_TXD[0]与AXR0和GP8[7]复用。这意味着你不能同时使用EMAC和与它复用引脚的其他外设。在设计初期就必须规划好引脚分配。配置实战以RMII模式为例假设我们设计一个使用RMII接口、外部50MHz有源晶振提供时钟的以太网模块。硬件连接将RMII_TXD[1:0],RMII_TXEN,RMII_RXD[1:0],RMII_CRS_DV,RMII_RXER连接到以太网PHY芯片如DP83848对应的RMII引脚。将外部50MHz时钟连接到RMII_MHZ_50_CLK引脚W18。连接MDIO和MDCLK到PHY的管理接口。电压组确认RMII信号属于Group C。因此DVDD3318_C的电压必须与你的PHY芯片的IO电压匹配通常为3.3V或2.5V1.8V较少见。软件配置配置PINMUX将所有RMII和MDIO用到的引脚通过PINMUX寄存器设置为EMAC功能。例如配置W18为RMII_MHZ_50_CLK输入配置R14为RMII_TXEN输出等。配置CFGCHIP需要设置寄存器将EMAC控制器的工作模式设置为RMII并配置RMII_MHZ_50_CLK为输入模式。配置GPIO上下拉通过PUPD_ENA和PUPD_SEL寄存器为这些引脚配置合适的上拉或下拉。对于RMII输入引脚通常不需要特别配置但输出引脚根据PHY要求可能需要弱上拉。初始化EMAC驱动最后才是配置EMAC控制器本身的寄存器设置MAC地址、速度、双工模式等。// 示例配置RMII相关引脚复用需查阅具体PINMUX寄存器位域 // 假设PINMUX13寄存器控制W18 (RMII_MHZ_50_CLK) unsigned int *pinmux13 (unsigned int *)0x01C14158; // 清除该引脚原有的功能位并设置为RMII_MHZ_50_CLK功能假设功能码为2 *pinmux13 ~(0x7 0); // 假设[2:0]位控制W18 *pinmux13 | (0x2 0); // 配置CFGCHIP寄存器选择RMII模式并使能外部时钟输入 unsigned int *cfgchip3 (unsigned int *)0x01C1418C; *cfgchip3 | (1 9); // 使能RMII模式 *cfgchip3 | (1 10); // 配置RMII_MHZ_50_CLK为输入模式注意事项时钟信号的完整性RMII的50MHz时钟是同步整个接口的关键。如果使用外部时钟源务必确保时钟信号质量好边沿陡峭抖动小。PCB布线时时钟线应尽可能短并远离高频噪声源。如果遇到网络连接不稳定、丢包等问题时钟信号是首要怀疑对象。可以用示波器测量时钟波形检查其幅值、频率和抖动是否在PHY和AM1802的要求范围内。2.3 GPIO引脚配置与使用技巧GPIO是嵌入式系统中最灵活、最常用的接口。AM1802提供了多达8个BankGP0-GP8的GPIO但请注意所有GPIO都是与其他功能复用的。Table 3-18及其续表列出了所有GPIO引脚。GPIO Bank的组织 GPIO以Bank为单位进行管理每个Bank通常包含16个引脚GP0[15:0]到GP8[15:0]。每个Bank有对应的方向寄存器DIR、数据输入寄存器PIN、数据输出寄存器SET/CLEAR/DATA等。这些寄存器位于GPIO模块的地址空间而非SYSCFG模块。配置一个GPIO引脚的基本步骤功能选择PINMUX这是第一步也是最容易忘记的一步。你必须先将该引脚的功能通过SYSCFG的PINMUX寄存器设置为“GPIO”模式。例如要将AXR6C1引脚用作GPIO需要查表找到它对应的GPIO号是GP1[14]然后在对应的PINMUX寄存器中选择GPIO功能通常有一个特定的功能编码如0x0。方向设置DIR在GPIO模块中设置相应Bank的方向寄存器位。1通常表示输出0表示输入。上下拉配置PUPD通过SYSCFG的PUPD_ENA使能和PUPD_SEL选择上拉/下拉寄存器配置该引脚的内置电阻。例如配置一个按键输入引脚通常需要使能上拉这样按键未按下时引脚为高电平。数据读写输出向DATA寄存器或SET/CLEAR寄存器写入数据。输入从PIN寄存器读取数据。代码示例配置GP1[14]C1引脚为输出并驱动高电平// 1. 解锁SYSCFG略 // 2. 配置PINMUX将C1引脚设置为GPIO功能假设PINMUX5控制此引脚GPIO功能码为0 unsigned int *pinmux5 (unsigned int *)0x01C14134; *pinmux5 ~(0x7 12); // 假设[14:12]位控制C1引脚的功能选择 // *pinmux5 | (0x0 12); // 功能码0即为GPIO因为已清零所以无需或操作 // 3. 配置GPIO方向GPIO1的DIR寄存器地址假设为0x01E26014 #define GPIO1_DIR (*(volatile unsigned int *)0x01E26014) #define GPIO1_SET_DATA (*(volatile unsigned int *)0x01E2601C) // SET寄存器 #define GPIO1_CLEAR_DATA (*(volatile unsigned int *)0x01E26020) // CLEAR寄存器 #define GPIO1_PIN (*(volatile unsigned int *)0x01E26010) // PIN寄存器 // 将GP1[14]设置为输出设置DIR寄存器的bit14为1 GPIO1_DIR | (1 14); // 4. 可选配置上下拉。假设我们想要默认下拉。 // 首先需要知道C1引脚属于哪个CP组。查Table 3-16AXR6 / GP1[14] ...的PULL是CP[5]。 // 在PUPD_SEL寄存器中将CP[5]对应的位设置为0下拉或1上拉。 // 在PUPD_ENA寄存器中使能CP[5]的上下拉功能。 unsigned int *pupd_sel (unsigned int *)0x01E2C010; unsigned int *pupd_ena (unsigned int *)0x01E2C00C; // 假设CP[5]对应PUPD_SEL的bit5和PUPD_ENA的bit5 *pupd_sel ~(1 5); // 选择下拉 *pupd_ena | (1 5); // 使能上下拉 // 5. 驱动GPIO输出高电平使用SET寄存器只操作特定位 GPIO1_SET_DATA (1 14); // 或者驱动低电平 // GPIO1_CLEAR_DATA (1 14);特殊GPIO引脚注意事项GP8[0] (RTCK)手册特别警告该引脚在复位后处于保留功能且状态不可预测只有在完成其GPIO配置后才会稳定。在复位期间如果该引脚连接了外部电路如LED其不确定状态可能导致意外行为设计时需要谨慎。Boot引脚GP7[7:0] / BOOT[7:0]这些引脚在复位时被采样用于决定启动方式NAND, NOR, SPI, UART, MMC等。即使你后续将它们用作GPIO在复位瞬间它们的状态也必须符合你设计的启动模式要求。通常的做法是通过外部上拉/下拉电阻将其固定在所需的启动电平上以确保可靠启动。内部的CP可配置上拉/下拉在复位期间是无效的。3. SYSCFG模块引脚复用的控制核心正如开篇所述SYSCFG模块是AM1802引脚复用和系统配置的“大脑”。Table 4-1列出了其关键寄存器。我们重点关注与引脚配置直接相关的部分。PINMUX0 - PINMUX19寄存器 这20个寄存器每个32位控制着芯片上几乎所有多功能引脚的当前功能。每个引脚通常由寄存器中的3到4个比特位一个位域来控制不同的值对应不同的功能如0x0GPIO0x1功能A0x2功能B等。配置PINMUX是改变引脚功能的第一步且通常需要在系统初始化早期、在外设驱动加载之前完成。PUPD_ENA 和 PUPD_SEL 寄存器 这两个寄存器共同控制所有标为CP[n]的可配置上拉/下拉电阻。PUPD_ENA使能寄存器。某位为1则使能对应CP组的上下拉功能。PUPD_SEL选择寄存器。某位为0对应CP组配置为下拉为1则配置为上拉。重要CP[n]中的n是“引脚组”编号而不是GPIO Bank编号。同一个CP组可能包含多个来自不同Bank的引脚。你需要根据Table 3-15到3-18中的“PULL”列来确定每个引脚属于哪个CP组。例如USB_REFCLKIN(A3) 的PULL是CP[0]那么它的上下拉就由PUPD_ENA[0]和PUPD_SEL[0]控制。CFGCHIP0 - CFGCHIP4 寄存器 这些寄存器用于配置一些芯片级的、与特定外设相关的杂项功能例如USB PHY的工作模式主机/设备、时钟源选择。EMAC接口模式选择MII/RMII、RMII时钟方向。......配置流程总结解锁向KICK0R和KICK1R写入特定的密钥值0x83E70B13和0x95A4F1E0以解锁SYSCFG模块的写保护。这是一次性操作通常在启动代码中完成。规划根据你的硬件设计原理图列出所有使用的引脚及其所需功能。设置PINMUX遍历你的列表通过写PINMUX0-19寄存器将每个引脚设置为目标功能。设置上下拉根据每个引脚在电路中的需求例如按键输入需要上拉I2C总线需要上拉配置PUPD_ENA和PUPD_SEL寄存器。设置外设特定配置根据需要配置CFGCHIPx寄存器如选择RMII模式。锁定可选出于安全考虑可以再次向KICK寄存器写入非密钥值来锁定配置防止被意外修改。4. 常见问题排查与设计经验实录即使理解了原理实际设计和调试中依然会遇到各种问题。下面是我总结的几个典型场景和排查思路。4.1 问题一外设无法通信读取的数据全为0或全为1可能原因及排查步骤PINMUX未正确配置这是最常见的原因。使用调试器或通过GPIO点灯的方式在初始化代码中读取PINMUX寄存器的值确认你关心的引脚位域是否被设置成了预期的功能模式。一个常犯的错误是只配置了外设控制器本身的寄存器却忘了配置SYSCFG中的PINMUX。时钟未使能AM1802的外设时钟默认可能是关闭的为了省电。你需要配置Power and Sleep Controller (PSC) 模块为你使用的外设如UART、SPI、EMAC使能时钟。没有时钟外设当然无法工作。电压组电平不匹配用万用表测量DVDD3318_A/B/C的电压确认其电平是否与对接的外设芯片IO电平一致。如果不一致信号的高/低电平识别会出错。上下拉配置冲突检查PUPD_ENA/SEL寄存器。如果使能了内部上拉但外部电路是强下拉或反之会导致引脚电平处于中间状态输入逻辑混乱。确认内外部上下拉电阻的配置是否协同。硬件连接问题检查焊接、虚连、短路。使用示波器或逻辑分析仪观察关键信号如时钟、片选、数据线是否有波形。4.2 问题二系统启动失败无法进入Bootloader可能原因及排查步骤Boot引脚状态错误在复位瞬间用示波器单次触发模式测量BOOT[7:0]即GP7[7:0]引脚的电平。确保它们与你期望的启动模式如从SPI Flash启动所要求的电平一致。务必使用外部电阻进行固定不要依赖软件初始化后的GPIO状态。启动设备未就绪如果从SPI Flash或NAND启动确保这些存储器在AM1802开始读取时已经完成上电初始化。有些Flash芯片需要几毫秒的唤醒时间。可以在复位电路上做文章让CPU的复位释放稍晚于Flash的上电完成。时钟配置错误Bootloader运行需要正确的系统时钟。检查晶体是否起振PLL配置参数是否正确。有时错误的时钟配置会导致Bootloader运行超时或失败。4.3 问题三GPIO输出驱动能力不足或输入不灵敏可能原因及排查步骤负载过重GPIO的驱动电流是有限的具体值查电气特性表。如果直接驱动继电器、电机或大功率LED可能需要增加三极管或MOSFET驱动电路。上下拉电阻值不当对于开漏输出如I2C或需要确定状态的总线上拉电阻的值很关键。阻值太大会导致上升沿太慢在高速时出错阻值太小会导致静态功耗过大且可能超出GPIO的灌电流能力。通常4.7kΩ到10kΩ是一个不错的起点。引脚配置为模拟功能如果你错误地将一个数字GPIO引脚通过PINMUX配置为了模拟功能A那么数字输入输出功能将失效。仔细检查PINMUX配置。4.4 设计检查清单在投板前强烈建议对照此清单检查你的AM1802相关设计检查项说明是否完成电源与地所有CVDD, RVDD, DVDD18, DVDD3318_x, USB_VDDAxx, DDR_DVDD18电源引脚是否都连接了正确电压的电源并配有足够且靠近引脚的退耦电容如10uF 0.1uF□Boot引脚BOOT[7:0] (GP7[7:0]) 是否通过外部电阻如10kΩ上拉/下拉到期望的启动电平□USB0_VDDA12是否连接了一个0.22μF的电容到地即使不用USB□未用引脚未使用的模拟引脚如不用的USB、ADC引脚是否按手册要求处理悬空或接地□电压组规划同一GroupA/B/C内的所有引脚其连接的外设IO电平是否一致DVDD3318_x电源电压是否与之匹配□时钟与复位主晶振电路是否按推荐设计复位信号是否干净脉宽是否足够□引脚复用冲突是否有两个需要同时使用的功能复用了同一个引脚□关键信号布线USB差分对、RMII时钟、高速信号线是否遵循了阻抗控制、等长、远离干扰源的原则□调试接口JTAG/SWD调试接口是否引出RESETOUT信号是否可用于调试□最后再分享一个调试小技巧当你遇到非常诡异的、时好时坏的问题时不妨检查一下电源纹波。AM1802这类嵌入式处理器对核心电压CVDD通常是1.2V或1.0V的稳定性要求很高。用示波器的交流耦合档在CVDD的退耦电容上测量看看在CPU全速运行或外设频繁访问时纹波是否在数据手册规定的范围内通常是±3%到5%。过大的纹波是导致系统不稳定的元凶之一。