1. 项目概述为什么互补PWM与死区是电机驱动的生命线如果你正在用微控制器做电机驱动、逆变器或者任何涉及半桥/全桥功率开关的应用那么“互补PWM”和“死区时间”这两个词你一定不陌生。这不仅仅是两个功能更是保证你的硬件不会在一声轻响后冒烟的关键设计。简单来说互补PWM就是一对相位完全相反的PWM信号一个用来驱动半桥的上管另一个驱动下管。理想情况下它们应该完美互补一个关断的同时另一个立刻导通。但现实是骨感的功率器件如MOSFET、IGBT的开关并非瞬间完成存在开启和关断的延迟。如果控制信号在“上管未完全关断下管就已开启”的瞬间重叠就会导致电源正负极直接短路产生巨大的“直通”电流轻则器件过热重则当场炸管。这个为了避免短路而人为加入的、让上下管驱动信号都保持为“关断”状态的一小段非重叠时间就是“死区时间”。TI的MSPM0 C系列微控制器其内置的TIMA高级定时器模块将互补PWM生成和可编程死区插入功能做进了硬件里。这意味着你不再需要像使用基础定时器那样用两个输出通道并配合软件延时来模拟死区那种方式不仅精度差、占用CPU资源在高速开关下还极易出错。TIMA的硬件死区生成是同步、精准且可靠的它直接根据你配置的延时参数在信号跳变沿自动插入死区从根本上杜绝了软件干预可能带来的风险。更进一步TIMA还集成了强大的故障处理单元当系统检测到过流、过压等异常时能在纳秒级时间内硬件强制关断PWM输出进入安全状态为整个功率系统上了一把硬件“安全锁”。本文将深入MSPM0 TIMA模块的寄存器级细节手把手带你完成从互补PWM配置、死区时间计算到故障保护机制搭建的全过程这些都是构建一个稳健电机驱动板的基石。2. TIMA互补PWM与死区插入的核心原理与配置2.1 互补PWM的信号生成机制在TIMA模块中互补PWM的生成基于一个共同的“参考PWM信号”。这个参考信号由某个CCP捕获/比较通道产生例如TIMA0_C2。硬件会自动生成该信号的反相版本并从对应的互补输出引脚TIMA0_C2N输出。关键在于这个反相过程是在插入死区之后进行的或者说死区逻辑同时作用于原信号和反相后的信号以确保两者在任何时候都不会同时为有效电平通常高电平为导通。整个逻辑由信号生成块控制。当你将某个CCP通道的输出模式通过TIMx.OCTL_xy[0/1]寄存器的CCPO位域设置为0xC时即选择了“带死区的信号发生器”模式。此时该通道的物理输出引脚Cy和CyN将不再直接反映比较匹配结果而是输出经过死区处理后的互补PWM对。2.2 死区时间寄存器DBCTL深度解析死区的所有控制都集中于TIMAx.DBCTL寄存器。理解它的每一位是精确控制死区的基础。1. 死区模式选择M1_ENABLE位这是最容易让人困惑的地方它决定了死区延时应用的参考边沿并且与PWM对齐模式紧密相关。模式0 M1_ENABLE 0此模式适用于边沿对齐PWM和中心对齐PWM。RISEDELAY从参考PWM的上升沿开始延时之后Cy信号才变为高电平即Cy的上升沿被延迟。FALLDELAY从参考PWM的下降沿开始延时之后CyN信号才变为高电平即CyN的上升沿被延迟。工作逻辑它延迟的是有效通常为高电平边沿的到来。在参考PWM跳变后两个输出会先保持为无效电平低电平一段时间即死区然后再让该导通的那个管子导通。模式1 M1_ENABLE 1此模式仅适用于中心对齐PWM即上下计数模式。RISEDELAY从互补输出CyN的下降沿开始延时之后参考PWM才产生上升沿进而影响Cy的上升沿。FALLDELAY从参考PWM的下降沿开始延时之后CyN信号才变为高电平。工作逻辑它更侧重于在中心对齐PWM的对称周期中从无效电平跳回有效电平的时机。模式1能确保在每个PWM周期的开始和结束阶段死区时间是对称分布的。选择建议对于最常见的边沿对齐PWM如用于BLDC方波驱动直接使用模式0即可逻辑直观。对于中心对齐PWM常用于高级FOC算法两种模式都可用但模式1在对称性上有优势可以根据你对死区在周期内分布的具体要求来选择。2. 死区宽度设置RISEDELAY与FALLDELAY位域这两个位域直接决定了死区时间的长短单位是TIMCLK的周期数。TIMCLK是定时器的计数时钟可能来源于系统时钟分频或其他时钟源你需要先确定它的频率f_TIMCLK。死区时间t_dead的计算公式是寄存器值 f_TIMCLK × t_dead例如你需要400ns的死区时间TIMCLK频率为80MHz则寄存器值 80,000,000 Hz × 0.0000004 s 32因此你需要将RISEDELAY和FALLDELAY都设置为32。如果需要不对称的死区例如上升沿和下降沿需要不同的保护时间可以分别设置不同的值。注意这里的计算结果是纯数值没有单位。RISEDELAY和FALLDELAY是寄存器中的数值直接写入即可。务必确保计算结果为整数若非整数则需调整时钟频率或死区时间以满足精度要求。2.3 完整配置流程与代码示例假设我们需要在TIMA0的CCP0通道上生成一对带死区的互补PWM采用边沿对齐、向下计数模式PWM频率为20kHz死区时间为500nsTIMCLK为100MHz。步骤1配置基础PWM参数首先我们需要设置定时器产生一个基础的边沿对齐PWM信号作为参考。计算周期值PWM频率为20kHz周期T1/2000050us。TIMCLK为100MHz周期为10ns。因此计数器重载值LOAD 50us / 10ns 5000。设置占空比假设需要50%占空比则比较值CC0 LOAD / 2 2500。配置计数模式设置为向下计数CTRCTL.CM 2单次触发模式CCCTL.REPEAT 0或连续模式REPEAT 1。// 假设寄存器基地址定义 #define TIMA0_BASE 0x40020000UL #define TIMA0_LOAD (*(volatile uint32_t *)(TIMA0_BASE 0x00)) #define TIMA0_CC0 (*(volatile uint32_t *)(TIMA0_BASE 0x20)) // CC0寄存器偏移需查手册 #define TIMA0_CTRCTL (*(volatile uint32_t *)(TIMA0_BASE 0x08)) #define TIMA0_CCCTL (*(volatile uint32_t *)(TIMA0_BASE 0x0C)) // 1. 配置PWM周期和占空比 TIMA0_LOAD 5000 - 1; // 注意有些定时器架构LOAD值等于周期数-1需根据手册确认 TIMA0_CC0 2500; // 50%占空比 // 2. 配置为边沿对齐、向下计数、连续模式 TIMA0_CTRCTL (2 0); // CM2向下计数 TIMA0_CCCTL (1 0); // REPEAT1连续模式步骤2配置死区插入接着配置死区控制寄存器。计算死区寄存器值t_dead 500ns,f_TIMCLK 100MHz。RISEDELAY FALLDELAY 100e6 * 500e-9 50。选择模式0边沿对齐PWM适用。在输出控制寄存器中选择带死区的信号发生器模式。#define TIMA0_DBCTL (*(volatile uint32_t *)(TIMA0_BASE 0xE0)) #define TIMA0_OCTL0 (*(volatile uint32_t *)(TIMA0_BASE 0x80)) // CCP0输出控制寄存器偏移需查手册 // 3. 配置死区模式0上升/下降延迟均为50个TIMCLK周期 TIMA0_DBCTL (0 16) | // M1_ENABLE 0 模式0 (50 8) | // RISEDELAY 50 (50 0); // FALLDELAY 50 // 4. 配置CCP0输出为带死区的互补PWM模式 TIMA0_OCTL0 (0xC 0); // CCPO 0xC 选择带死区的信号发生器步骤3启用定时器最后启动计数器。// 5. 使能定时器计数器 TIMA0_CTRCTL | (1 8); // 设置EN位为1完成以上步骤后TIMA0_C0和TIMA0_C0N引脚上就会输出一对带有500ns死区的互补PWM信号。实操心得在调试阶段强烈建议先用示波器同时测量Cy和CyN两个引脚。首先验证死区是否存在并测量其实际宽度是否与计算值一致可能存在一个TIMCLK周期的量化误差。其次观察在死区期间两个信号是否都处于安全的无效电平通常是低电平。这是硬件安全的第一道检验。3. TIMA故障处理机制构建硬件安全屏障互补PWM驱动桥臂时死区防止了软件控制逻辑上的“直通”。但现实中还有更多意外电机堵转导致电流骤增、电源电压异常、温度过高等。这些故障需要比软件中断响应快得多的保护机制。TIMA的故障处理单元就是为此而生的硬件安全屏障。3.1 故障输入源与条件处理TIMA支持多种故障输入源可分为同步和异步两类它们在响应速度和功能上有所不同。1. 故障输入源配置故障源通过TIMA.FSCTL故障源控制寄存器使能并通过TIMA.FCTL故障控制寄存器配置极性。比较器输出COMPx_OUT这是最常用的故障源之一。你可以将电流采样电阻上的电压通过比较器与一个设定的阈值比较一旦过流比较器输出翻转立即触发故障。可以配置为同步或异步检测。外部故障引脚TIMA_FLTx芯片专门引出的故障引脚通常用于连接外部驱动芯片的nFAULT信号。当驱动芯片检测到欠压、过温等故障时会拉低此引脚通知MCU。同样支持同步/异步检测。系统时钟故障SYSCLK Fault当系统时钟失效时触发强制PWM输出进入高阻态。这是一个同步故障。触发信号Trigger来自事件 fabric 的其他外设触发信号可以用于构建复杂的故障联动逻辑例如ADC过采样触发故障。配置示例使能外部故障引脚0TIMA_FLT0低电平触发并启用数字滤波。#define TIMA0_FSCTL (*(volatile uint32_t *)(TIMA0_BASE 0xE8)) #define TIMA0_FCTL (*(volatile uint32_t *)(TIMA0_BASE 0xE4)) #define TIMA0_FIFCTL (*(volatile uint32_t *)(TIMA0_BASE 0xEC)) // 1. 配置故障引脚极性FSENEXT00表示低电平为故障有效假设nFAULT低有效 TIMA0_FCTL ~(1 0); // 清除FSENEXT0位设为低有效 // 2. 使能外部故障源0 TIMA0_FSCTL | (1 0); // 设置FEX0EN位为1 // 3. 可选启用并配置同步故障数字滤波防止毛刺误触发 TIMA0_FIFCTL | (1 0); // FILTEN 1使能滤波 TIMA0_FIFCTL | (0 1); // CPV 0选择“连续周期”模式 TIMA0_FIFCTL | (3 8); // FP 3滤波周期为3个TIMCLK // 上述配置意味着故障信号必须持续保持有效低电平至少3个TIMCLK周期才会被确认为真故障。 // 4. 最后全局使能故障输入 TIMA0_FCTL | (1 8); // FIEN 1使能故障输入2. 同步与异步故障的区别异步故障检测路径短响应极快1-2个TIMCLK周期但不能被锁存也不会产生中断事件。它适用于要求最高速响应的关键保护比如瞬间短路保护。其动作直接由硬件执行软件可能来不及记录。同步故障信号经过TIMCLK同步和可配置的数字滤波可以产生被锁存的故障事件RIS.F标志位并能触发中断。它适用于需要软件记录、分析和处理的故障如过载保护。滤波功能可以有效避免噪声误触发。3.2 故障发生时的行为控制故障被确认后TIMA硬件会自动执行预设的动作这分为两部分计数器行为和输出引脚行为。1. 计数器行为CTRCTL.FB/FRB当故障发生时计数器可以立即停止也可以忽略故障继续运行。这由CTRCTL寄存器中的FB故障行为和FRB故障恢复行为位控制。FB0计数器忽略故障继续计数。这在某些需要故障时维持定时基准的场景下有用但通常不用于功率驱动保护。FB1计数器立即停止计数。这是最常用的安全行为让PWM生成瞬间冻结。FRB决定故障解除后计数器如何恢复。例如FRB0表示从停止处继续计数FRB1表示从LOAD值重新开始向下计数FRB2表示从0开始重新向上/向下计数。在电机控制中通常选择FRB1让PWM周期在故障恢复后能完整地重新开始避免产生残缺的脉冲。2. 输出引脚行为CCACT_xy.FENACT/FEXACT这是故障保护的核心——控制PWM输出引脚在故障瞬间和故障持续期间的状态。通过CCACT_xy寄存器中的FENACT故障进入动作和FEXACT故障退出动作位域配置。动作选项0不受影响危险一般不用于功率桥。1强制输出高电平。2强制输出低电平最常用强制关闭所有开关管。3翻转。4高阻态Hi-Z。典型安全配置对于半桥驱动上下管都应配置为在故障进入时强制输出低电平FENACT2确保所有功率管关断。故障退出时可以配置为恢复原有PWM输出FEXACT0或者也保持低电平直到软件清除故障标志并重新使能输出。配置示例配置CCP0通道在故障时立即关断输出计数器停止故障恢复后计数器重启。#define TIMA0_CCACT0 (*(volatile uint32_t *)(TIMA0_BASE 0x90)) // CCP0动作控制寄存器 // 1. 配置故障时输出行为进入故障时强制输出低退出故障时恢复原状 TIMA0_CCACT0 ~(0xF 0); // 先清除低4位 TIMA0_CCACT0 | (2 0); // FENACT 2故障进入时强制低 TIMA0_CCACT0 ~(0xF 4); // 清除FEXACT位域 TIMA0_CCACT0 | (0 4); // FEXACT 0故障退出时恢复或根据需求设为2保持低 // 2. 配置计数器行为故障时立即停止故障恢复后从LOAD值重启 TIMA0_CTRCTL ~(0x3 12); // 清除FB位域 TIMA0_CTRCTL | (1 12); // FB 1立即停止 TIMA0_CTRCTL ~(0x3 14); // 清除FRB位域 TIMA0_CTRCTL | (1 14); // FRB 1从LOAD重启3.3 故障处理流程与软件协同一个健壮的故障处理流程是硬件与软件协同工作的结果硬件即时响应故障信号有效 → 数字滤波如启用→ 硬件立即执行预设的输出动作如强制拉低和计数器动作如停止。这个过程通常在几十到几百纳秒内完成不依赖CPU。软件后续处理如果是同步故障硬件会置位故障标志RIS.F并可能产生中断。CPU在中断服务程序中读取故障状态寄存器判断故障源。执行安全操作如关闭其他相关外设、记录故障日志。清除故障标志通常通过向ICLR.F位写1实现。检查故障条件是否已解除如读取比较器或GPIO状态。在确保安全的前提下重新配置定时器和输出并谨慎地恢复运行可能需要软启动流程。重要注意事项故障安全设计是“宁可错杀不可放过”。务必确保在任何故障条件下FENACT都能将PWM输出驱动到一个确定的安全状态对于绝大多数桥式电路就是强制低电平关闭所有开关管。不要依赖软件中断来执行第一时间的关断操作软件响应的延迟对于功率保护来说太长了。TIMA的硬件故障处理单元正是为了填补这个微秒级甚至纳秒级的关键保护窗口而存在的。4. 高级应用多定时器同步与交叉触发在复杂的电机控制如三相逆变器或需要多个严格同步的PWM通道时单个定时器可能不够用。MSPM0的TIMA/TIMG模块支持通过交叉触发Cross Trigger实现多个定时器的硬件级同步启动确保所有PWM的相位关系精确无误。4.1 主-从定时器同步原理交叉触发的核心思想是指定一个定时器作为“主定时器”Master其他定时器作为“从定时器”Slave。主定时器的特定事件如计数器加载、归零、比较匹配可以作为一个硬件触发信号通过芯片内部的事件 fabric 直接传递给从定时器从而同步启动或复位从定时器的计数器。如图18-38所示主定时器如TIMG0的交叉触发输出信号可以连接到从定时器如TIMA0的输入触发端口。当主定时器满足触发条件时从定时器的计数器会立即响应实现“齐步走”。4.2 配置步骤详解假设我们需要用TIMG0作为主定时器产生一个触发事件来同步启动TIMA0和TIMA1两个从定时器。步骤1配置主定时器TIMG0的交叉触发输出首先像普通配置一样设置好TIMG0的PWM或定时功能。选择用于触发从机的交叉触发输出通道例如CTTRIG1。使能交叉触发功能并选择触发源。触发源可以是软件触发CTTRIG.TRIG也可以是硬件事件比如主定时器的零事件Z或加载事件L。// 假设TIMG0基地址 #define TIMG0_BASE 0x40021000UL #define TIMG0_CTTRIGCTL (*(volatile uint32_t *)(TIMG0_BASE 0xF0)) #define TIMG0_CTTRIG (*(volatile uint32_t *)(TIMG0_BASE 0xF4)) // 1. 使能交叉触发输出1 TIMG0_CTTRIGCTL | (1 1); // 假设CTEN位在bit1具体查手册 // 2. 配置触发源例如选择主定时器的“加载事件”作为触发源 // 假设EVTCTTRIGSEL位域用于选择事件源L事件对应值3 TIMG0_CTTRIGCTL ~(0xF 8); // 清除事件选择位域 TIMG0_CTTRIGCTL | (3 8); // 选择加载事件(L)作为触发源 TIMG0_CTTRIGCTL | (1 12); // 使能硬件事件触发 (EVTCTEN1) // 或者使用软件触发在主定时器配置好后手动触发一次 // TIMG0_CTTRIG | (1 0); // 设置TRIG位步骤2配置从定时器TIMA0的交叉触发输入配置TIMA0自身的PWM功能。根据芯片数据手册的交叉触发映射表确定主定时器的哪个交叉触发输出连接到了TIMA0的哪个输入触发端口例如TRIG0。使能该输入触发并将其配置为定时器的启动条件。// 假设TIMA0基地址 #define TIMA0_TSEL (*(volatile uint32_t *)(TIMA0_BASE 0xD0)) #define TIMA0_IFCTL0 (*(volatile uint32_t *)(TIMA0_BASE 0x70)) // CCP0输入选择 // 1. 选择输入触发源假设主TIMG0的交叉触发输出1连接到TIMA0的输入触发0 TIMA0_TSEL ~(0xF 0); // 清除ETSEL位域 TIMA0_TSEL | (0 0); // ETSEL 0 选择输入触发0 // 2. 使能输入触发功能 TIMA0_TSEL | (1 4); // TE 1 // 3. 将输入触发配置为捕获/比较模块的输入源并指定其作为启动条件 // 假设ISEL3表示选择输入触发作为源 TIMA0_IFCTL0 (3 0); // ISEL 3 // 4. 对于边沿对齐PWM配置为在触发信号有效时产生一个加载事件从而启动计数器 TIMA0_CCCTL | (1 x); // 设置对应通道的LCOND位 (x需查手册确定位偏移) // 对于中心对齐PWM则应设置ZCOND位在触发时产生零事件。步骤3启动流程完成所有定时器主和从的静态配置。使能主定时器的计数器TIMG0.CTRCTL.EN 1。此时主定时器开始计数。当主定时器发生加载事件或你设定的其他触发事件时硬件会自动发出交叉触发信号。从定时器TIMA0, TIMA1在接收到触发信号的边沿其LCOND或ZCOND条件满足硬件会自动将CTRCTL.EN置位计数器开始从LOAD值或0开始计数。通过这种方式TIMA0和TIMA1的计数器将在主定时器的一个确定时刻被同步启动它们产生的PWM波形的相位将保持严格的同步关系这对于需要多路协同工作的系统至关重要。实操心得交叉触发配置的难点在于理清芯片内部的事件路由。务必仔细查阅你所使用的具体MSPM0型号的数据手册中的“Cross Trigger Map”或“Event Router”章节确认主从定时器之间可用的物理连接通道。错误的通道选择会导致触发失败。调试时可以先使用软件触发主定时器的CTTRIG.TRIG位来测试触发链路是否通畅然后再切换到硬件事件触发。5. 常见问题排查与调试技巧实录即使理解了所有原理和配置步骤在实际调试中依然会遇到各种问题。下面是我在多个项目中总结出的关于TIMA互补PWM和故障处理的常见坑点与解决方案。5.1 死区时间不生效或异常现象示波器测量Cy和CyN引脚发现两者仍有重叠或者死区时间与计算值相差甚远。检查点1输出模式寄存器OCTL_xy这是最容易被忽略的一步。确保你已经将对应CCP通道的CCPO位域设置为0xC带死区的信号发生器。如果设置为其他模式如0x8触发模式死区逻辑不会被启用。检查点2DBCTL寄存器写入时机确保在定时器使能CTRCTL.EN1之前配置好DBCTL寄存器。有些定时器模块在运行时修改某些控制寄存器可能无效或需要特定序列。检查点3TIMCLK时钟源与频率死区计算严重依赖于正确的f_TIMCLK。确认定时器的时钟源CTRCTL.CLKSEL和分频器CTRCTL.PRESCALE设置是否正确。一个简单的验证方法是先不配置死区生成一个已知频率的PWM通过测量实际周期反推f_TIMCLK。检查点4模式与PWM对齐方式匹配回忆前文模式1M1_ENABLE1仅适用于中心对齐PWM上下计数模式。如果你在边沿对齐PWM下错误地使用了模式1死区行为将是未定义或错误的。对于边沿对齐PWM坚持使用模式0。5.2 故障保护功能不触发现象模拟一个故障条件如拉低故障引脚但PWM输出没有变化计数器也未停止。检查点1故障输入全局使能TIMA.FCTL寄存器中的FIEN位必须设置为1。这是故障处理的总开关。检查点2故障源使能与极性检查FSCTL寄存器中对应故障源如FEX0EN是否使能。同时检查FCTL中对应的极性位如FSENEXT0设置是否正确。例如外部故障引脚低电平有效你需要设置FSENEXT00。检查点3数字滤波设置过于严格如果你启用了同步故障滤波FIFCTL.FILTEN1并且FP值设得较大短暂的故障脉冲可能被滤掉。调试初期可以暂时关闭滤波FILTEN0或减小FP值确认故障链路通畅后再调整滤波参数。检查点4输出动作配置确认CCACT_xy.FENACT是否配置为了一个有效的动作如2强制低。如果配置为0无动作即使故障触发输出也不会改变。检查点5物理连接确认故障源信号是否真的连接到了MCU的对应引脚并且信号电平符合预期。使用示波器或逻辑分析仪直接测量故障输入引脚的电平。5.3 故障恢复后系统行为异常现象故障条件解除后PWM输出无法自动恢复或恢复后波形错乱。检查点1故障标志清除同步故障会产生锁存标志RIS.F。在故障条件解除后必须通过软件向ICLR.F位写1来清除此标志否则硬件会认为故障依然存在。这是最常见的软件遗漏步骤。检查点2故障退出行为FEXACT检查FEXACT的配置。如果你希望在故障清除后手动恢复PWM可以将其设置为2保持低电平。然后在软件清除故障标志后重新初始化或使能定时器输出。如果设置为0恢复则硬件会在故障标志清除后自动恢复原有输出但要确保计数器行为FRB的配置与之匹配。检查点3计数器恢复行为FRBFRB的设置会影响恢复后的第一个PWM周期。例如FRB1从LOAD重启会保证恢复后第一个周期是完整的。如果选择FRB0从停止处继续可能会导致恢复瞬间产生一个极窄或极宽的脉冲对电机造成冲击。根据你的应用安全要求谨慎选择。5.4 多定时器同步不同步现象配置了交叉触发但从定时器的PWM启动时刻与主定时器仍有微小延迟或完全没启动。检查点1事件路由映射反复核对数据手册的交叉触发映射表。确认你选择的ETSEL值确实对应着主定时器输出的那个交叉触发信号。这是硬件连接问题配置错了就无法工作。检查点2从定时器的启动条件在从定时器端你不仅需要配置输入触发源ISEL3还必须配置LCOND边沿对齐或ZCOND中心对齐位。这个条件不满足即使触发信号来了从定时器的EN位也不会被自动置位。简单来说ISEL选择了“信号从哪里来”LCOND/ZCOND决定了“用这个信号来做什么启动计数器”。检查点3主定时器触发事件确认主定时器确实能产生你所选择的触发事件如加载事件L。确保主定时器的相关事件生成是使能的。调试技巧可以先将从定时器的LCOND/ZCOND条件改为由软件控制不使用触发单独测试其PWM生成是否正常。然后再切换到触发模式用示波器同时观察主定时器的某个输出或一个GPIO翻转作为事件标记和从定时器的PWM输出看延迟是否在1-2个时钟周期内硬件同步的理想范围。调试这类复杂外设逻辑分析仪是极其有用的工具。你可以同时捕获多个PWM输出、故障输入引脚、甚至通过调试器实时观察关键寄存器的值将硬件行为与软件配置清晰地对应起来从而快速定位问题根源。记住耐心和系统性的排查是解决嵌入式硬件问题的唯一捷径。