
1. 项目概述与核心价值如果你正在寻找一个基于主流Arm Cortex-M33内核、能快速上手的无刷直流电机BLDC控制方案那么恩智浦的LPC553x/LPC55S3x系列微控制器搭配其官方提供的六步换向梯形控制演示绝对是一个值得深入研究的起点。这个方案的核心就是利用电机内部三个霍尔传感器提供的转子位置信号通过一套精密的电子开关逻辑即六步换向来替代传统有刷电机的机械换向器从而实现电机的高效、可靠运转。我接触过不少电机控制项目从简单的有刷直流到复杂的伺服驱动深感一个清晰、完整且经过验证的参考设计对于工程师来说有多重要。这份基于LPC55S3x的应用笔记其价值不仅在于它验证了芯片在电机控制领域的适用性更在于它完整地呈现了一个“麻雀虽小五脏俱全”的闭环控制系统。它涵盖了从最基础的PWM波形生成、霍尔信号捕获到速度PI调节、硬件过流保护等关键环节代码量不大仅约20KBCPU负载极低约1.7%这意味着你有充足的资源去添加更复杂的功能如通信协议、人机界面或更高级的控制算法。对于嵌入式软件工程师而言这个项目是理解电机控制与MCU外设协同工作的绝佳范例对于硬件工程师它展示了如何利用MCU内置的模拟比较器、DAC等实现可靠的硬件保护降低系统风险。无论你是想为智能家居产品增加一个静音风扇还是为模型航模设计一个高效电调亦或是学习电机控制的基础原理这个基于LPC553x/LPC55S3x和霍尔传感器的六步控制方案都提供了一个扎实、可复现的工程蓝本。接下来我将结合自己的实操经验为你层层拆解这个方案的实现细节与设计精髓。2. 核心控制理论与硬件平台解析2.1 六步换向原理与霍尔传感器定位要驾驭无刷直流电机首先得明白它怎么“转”起来。你可以把它想象成一个永磁体转子磁铁在一个由三组线圈定子包围的空间里。我们的目标就是通过给这三组线圈通电产生一个旋转的磁场拖着转子磁铁一起转。六步换向就是这个产生旋转磁场的“步法”。为什么是“六步”因为三相绕组U, V, W在任意时刻只有其中两相通电另一相悬空。两相通电的组合有6种UV、UW、VW、VU、WU、WV。每一种通电组合产生一个固定的磁场方向这就像时钟的6个刻度点。电机转子内部通常装有三个霍尔传感器它们间隔120度电角度安装用来感知转子永磁体的磁场方向。转子每转过60度电角度三个霍尔传感器的输出组合就会变化一次正好对应上述6种通电状态中的一种。控制器的任务就是检测到霍尔信号变化意味着转子到达了新的60度扇区立即切换到下一个对应的两相通电组合从而让磁场始终“牵引”着转子向前跑。这里有个关键细节霍尔信号的跳变边沿并非发生在需要换向的精确时刻而是发生在反电动势过零点的位置。对于梯形波反电动势的BLDC电机反电动势过零点正好对应着转子直轴与定子相轴垂直的位置此时切换绕组电流转矩脉动最小。因此在六步控制中我们通常是在检测到霍尔信号变化时立即进行换向。这种控制方法简单直接但转矩存在6次脉动适用于对平稳性要求不极端但对成本和控制复杂度敏感的场景如风机、泵、电动工具等。2.2 LPC55S3x硬件平台选型与优势为什么选择LPC553x/LPC55S3x来做这件事这份应用笔记选择的是LPCXpresso55S36-EVK评估板其主控LPC55S36是该系列中的一员。这颗芯片的几项特性让它天生适合电机控制首先它拥有两个FlexPWM模块。这是实现电机驱动的核心。每个FlexPWM模块包含多个子模块可以生成多达6路带死区互补的PWM信号完美驱动一个三相全桥逆变电路。死区时间是防止上下桥臂直通的关键FlexPWM硬件自动插入死区大大减轻了软件负担并提高了可靠性。其次丰富的模拟外设。芯片内部集成了高速比较器HSCMP、12位DAC和运算放大器。在这个方案里DAC用于设定一个可编程的电流保护阈值高速比较器则实时比较电机相电流采样信号与这个阈值。一旦过流比较器输出会直接硬件连接到FlexPWM的故障输入在纳秒级时间内关闭PWM输出实现最快速的硬件保护。这种“模拟护城河”比软件检测要快得多也可靠得多。再者ADC与定时器的灵活配合。ADC用于采样母线电压实现软件层面的过压、欠压保护。CTIMER定时器则用于产生固定的1kHz中断作为速度控制环的节拍器。另一个CTIMER自由运行用于捕获两次霍尔换向之间的时间从而精确计算电机转速。最后GPIO中断PINT用于捕获霍尔信号的边沿。三个霍尔传感器信号连接到三个支持中断的GPIO引脚任何一路信号变化都会触发中断在中断服务程序中读取三路信号的状态确定当前扇区并更新PWM输出映射。这种基于硬件中断的换向处理响应及时确定性高。这套硬件组合拳使得主控芯片能够以极低的CPU开销演示中仅1.71%完成电机的闭环控制与多重保护把Cortex-M33内核的性能留给更上层的应用逻辑。3. 系统软硬件架构与设计思路3.1 硬件系统构成与信号流整个演示系统的硬件核心是两块板子LPCXpresso55S36-EVK主控板和FRDM-MC-LVBLDC低压电机驱动板。这种分体式设计很常见主控板负责算法和逻辑驱动板负责功率放大和电流采样。信号流是这样的控制输出MCU的FlexPWM模块产生6路PWM信号UH, UL, VH, VL, WH, WL经过驱动板的栅极驱动器控制6个MOSFET组成的全桥最终施加到电机的U、V、W三相。反馈输入位置反馈电机内的三个霍尔传感器HA, HB, HC输出信号直接连接到MCU的三个GPIOPIO0_13, PIO0_14, PIO1_11。这三个GPIO配置为边沿触发中断PINT。电流反馈驱动板上的电流采样电阻将母线电流转换为小电压信号一路送入MCU的ADC进行软件监控另一路送入高速比较器HSCMP的“”输入端。电压反馈母线电压经过分压后送入MCU的ADCPIO1_19/ADC0_1A进行采样。保护链路DAC输出一个可设定的电压值作为电流阈值送到高速比较器HSCMP的“-”输入端。比较器输出直接连接到FlexPWM的故障输入引脚。当采样的电流电压超过DAC设定的阈值比较器翻转PWM硬件立即进入安全状态通常所有输出置为无效电平实现“硬刹车”。3.2 软件架构与多任务协同软件设计采用了典型的中断驱动架构将不同实时性要求的任务分配到不同优先级的中断中执行确保系统的响应性和确定性。整个控制流程围绕三个核心中断展开构成了一个高效协同的系统。3.2.1 最高优先级换向中断PINT中断这是电机运行的“节奏器”由霍尔信号边沿触发。它的任务是立即换向读取三个霍尔GPIO的电平查表得到对应的6种PWM输出模式即哪两相通电哪一相悬空并立即更新FlexPWM的比较值寄存器改变导通相。这个过程必须在几微秒内完成否则会导致转矩损失甚至失步。记录时间戳读取自由运行的CTIMER1的计数值并计算与上一次中断的时间差。这个时间差就是电机转过60度电角度所花费的时间是计算转速的核心数据。注意在中断服务程序ISR中代码必须极其精简。只做最必要的操作查表、更新PWM、记录时间绝对不要进行复杂的数学运算或函数调用。读取GPIO和写寄存器是原子操作速度很快。3.2.2 中等优先级速度控制环中断CTIMER0触发ADC中断中处理这是一个定时中断由CTIMER0以1kHz频率触发ADC转换ADC转换完成后产生中断。1kHz对于大多数BLDC速度环来说是一个合理的频率。在此中断中速度计算利用最近几次换向中断记录的时间戳计算平均转速。公式为转速(RPM) (60 * 电角度/转) / (6 * 扇区时间(s))。其中电角度/转 极对数 * 360。例如对于2对极电机转过一圈需要6*212个扇区。PI调节将计算得到的实际转速与目标转速比较误差经过比例-积分PI控制器运算输出一个新的PWM占空比。这个占空比决定了施加在电机绕组上的平均电压从而控制转速。状态机更新检查启动、运行、故障等状态并执行状态转移。例如在启动阶段可能采用开环强拉对齐或预定位策略。软件保护读取ADC采样的母线电压值与设定的过压、欠压阈值比较若异常则触发软件故障处理。3.2.3 低优先级/后台主循环与通信主循环main loop或更低优先级的中断如GINT0用于按键检测处理非实时性任务通过UART或CAN接收新的速度指令。更新用户界面如LED。处理故障恢复逻辑如等待故障条件解除后重启。这种中断分级的设计确保了换向的及时性高优先级同时保证了速度环的稳定周期中优先级非关键任务不会干扰实时控制。4. 关键外设配置详解与实操要点4.1 FlexPWM配置电机驱动的引擎FlexPWM的配置是整个项目的重中之重。我们需要它生成6路带死区的互补PWM频率为20kHz死区时间1μs。高开关频率可以降低电机噪音但会增加开关损耗20kHz是听觉范围之外的一个常见折中选择。配置步骤与原理时钟源使用IPBus时钟150MHz作为FlexPWM的时钟源。PWM计数器由此时钟驱动。中心对齐与边沿对齐对于六步换向通常使用边沿对齐模式。计数器从0向上计数到周期值MOD然后复位。当计数值小于比较值CMP时输出一种电平大于时输出另一种电平。这样生成的是标准的PWM方波。互补输出与死区插入对于每一相如U相我们需要一对互补的信号UH和UL来控制上桥臂和下桥臂的MOSFET。FlexPWM可以自动生成这对互补信号。关键是要插入死区时间防止UH和UL同时为高即上下管同时导通导致电源短路。1μs的死区时间需要根据时钟频率计算得出。例如150MHz时钟每个时钟周期约6.67ns。要产生1μs死区需要设置死区时间寄存器约为1μs / 6.67ns ≈ 150个时钟周期。FlexPWM的死区逻辑会在主输出跳变前让互补输出提前关断或延迟开通。同步机制三个子模块Submodule 0, 1, 2分别控制U, V, W三相。必须确保它们的PWM周期完全同步。配置子模块0为主模块使其重新加载Reload和初始化Init信号输出给子模块1和2。这样当我们更新子模块0的周期或占空比时三个子模块会在同一个重载点同步更新避免三相波形出现相位错乱。输出极性根据驱动板的逻辑高电平有效还是低电平有效来设置输出极性。通常我们设置PWM输出高电平有效互补输出低电平有效。在故障状态下可以配置所有输出强制为无效电平如上管全低下管全高使所有MOSFET关断。4.2 霍尔信号捕获与换向逻辑实现三个霍尔传感器信号连接到GPIO并配置为通过PINT引脚中断模块产生中断。这里配置为双边沿触发因为无论上升沿还是下降沿都意味着转子进入了新的60度扇区。换向表是软件的核心。它是一个6行对应6个扇区x 2列对应正转和反转的数组每个元素定义了当前扇区下U、V、W三相桥臂应有的开关状态。状态通常用字母表示例如H: 上桥臂PWM调制下桥臂恒通或根据调制方式变化。L: 下桥臂PWM调制上桥臂恒断。X: 该相悬空上下桥臂均关断。对于双斩波PWM调制即上下桥臂都进行PWM调制在任意时刻一相为高侧PWM、低侧恒通或互补另一相为低侧PWM、高侧恒通或互补第三相悬空。具体的映射关系需要根据电机绕组的相序和霍尔传感器的安装相位来调整。在PINT中断服务程序中我们读取三个GPIO的电平例如0b101将其转换为扇区号0-5然后根据目标转向正/反转从换向表中取出对应的PWM输出模式立即更新FlexPWM各子模块的比较寄存器。实操心得确定换向表与相序这是调试中最容易出错的一步。如果换向表不正确电机可能抖动、反转甚至不转。一个可靠的方法是先不给电机通电用手缓慢转动电机通过调试器或串口打印出每个霍尔扇区对应的三个GPIO电平值确认其变化顺序是否符合预期的6种组合000和111是非法状态。然后在开环情况下固定一个很低的占空比依次手动写入6个扇区对应的PWM模式观察电机是否平滑地朝一个方向步进转动。如果反转则调整换向表的顺序如果抖动则检查霍尔安装相位与换向表的对应关系。4.3 硬件保护回路DAC与高速比较器HSCMP这是保障系统安全的“防火墙”。其配置链路如下DAC配置DAC0输出一个模拟电压作为电流保护的阈值。例如若采样电阻为0.01欧姆希望电流保护点为10A则采样电压为0.1V。如果DAC参考电压为3.3V那么需要设置的DAC数值为0.1V / 3.3V * 4096 ≈ 124。DAC的输出通过内部连接到HSCMP的负输入端。HSCMP配置高速比较器的正输入端连接到电流采样放大后的信号。配置为高速模式输出极性设置为当正输入大于负输入时输出有效高电平或低电平根据电路设计。故障连接HSCMP的输出信号通过芯片内部的交叉开关Input Mux连接到FlexPWM模块的故障输入引脚。在FlexPWM中需要使能该故障输入并配置故障行为例如立即将所有PWM输出设置为“安全状态”通常定义为所有高侧输出强制为0所有低侧输出强制为1使所有MOSFET关断并且锁定这种状态直到软件主动清除故障标志。这套硬件保护机制的响应时间在百纳秒级别远快于软件检测微秒级甚至毫秒级能有效防止MOSFET在过流时损坏。4.4 速度测量与PI控制器实现速度计算依赖于CTIMER1捕获的换向时间。CTIMER1配置为自由运行模式时钟源96MHz不分频。在每次PINT换向中断中读取CTIMER1的计数器值T_now并计算与上一次中断值T_last的差值delta_T。这个delta_T就是转过一个60度电角度扇区的时间。转速计算公式推导电机机械转一圈转子经过的电角度 极对数 (P) × 360°。一个电周期360°电角度包含 6 个扇区。因此电机机械转一圈需要经过的扇区数 P × 6。假设我们测量了连续6个扇区的总时间T_6_sectors即最近6次delta_T之和那么转过一圈所需的时间T_per_revT_6_sectors / P。转速RPM60 / T_per_rev(60 * P) / T_6_sectors。在实际代码中为了平滑转速值通常会采用滑动平均或一阶低通滤波来处理计算出的瞬时转速。PI控制器实现 速度环PI控制器在1kHz的ADC中断中执行。这是一个离散化的数字PI控制器。伪代码如下// 定义PI参数 float Kp 0.5; // 比例系数 float Ki 0.01; // 积分系数 float Ts 0.001; // 采样周期1kHz对应0.001s float error_integral 0; // 误差积分项 float output_max 0.95; // 输出限幅对应最大占空比 float output_min 0.0; // 在1kHz中断中调用 void Speed_PI_Update(float target_speed, float actual_speed) { float error target_speed - actual_speed; // 积分项累加并抗饱和 error_integral error * Ts; if (error_integral output_max) error_integral output_max; if (error_integral output_min) error_integral output_min; // PI计算 float output Kp * error Ki * error_integral; // 输出限幅 if (output output_max) output output_max; if (output output_min) output output_min; // 将输出值转换为PWM占空比并更新到FlexPWM寄存器 Update_PWM_DutyCycle(output); }Kp和Ki参数需要根据电机的电气时间常数和机械时间常数进行整定。通常先用一个较小的Kp让电机转起来然后逐步增加Kp和Ki直到速度响应快速且超调小。积分项Ki有助于消除稳态误差。5. 软件状态机与系统调试实录5.1 状态机设计与流程控制一个健壮的电机驱动软件必须有一个清晰的状态机。演示代码中的状态机通常在ADC中断1kHz中运行它定义了电机从停止到运行再到停止或故障的完整生命周期。典型的状态包括初始化状态 (INIT)上电或复位后进入。初始化所有外设PWM、ADC、定时器、中断但PWM输出处于禁用或安全状态。等待启动命令。对齐状态 (ALIGN)可选但推荐收到启动命令后进入对齐状态。向电机绕组通入一个固定的直流电流例如让U相上管、V相下管导通将转子拉到一个已知的绝对位置如0度电角度。这个过程持续几百毫秒确保电机从确定的位置开始启动避免启动失败或反转。对于带霍尔传感器的系统此状态可以验证霍尔信号读取是否正确。开环启动状态 (OPEN_LOOP_START)以固定的、较低的PWM占空比和预设的换向频率一个很低的转速强制按照换向表顺序切换PWM状态。这个阶段不依赖霍尔反馈目的是让电机克服静摩擦和惯性缓慢旋转起来。换向频率应逐渐增加软启动。闭环运行状态 (CLOSED_LOOP_RUN)当电机转速达到一定阈值例如足以产生稳定的霍尔信号切换到闭环运行状态。此时换向完全由霍尔信号中断触发速度由PI控制器调节。这是电机正常工作的主状态。停止状态 (STOP)收到停止命令或发生可恢复的软件故障如欠压时进入。关闭PWM输出复位PI控制器积分项等待新的启动命令。故障状态 (FAULT)发生硬件故障如HSCMP过流或严重软件故障如过压、堵转时进入。立即强制关闭PWM输出并可能锁定驱动需要断电或手动复位才能清除。在此状态可以通过LED闪烁或串口输出特定的故障代码便于诊断。状态机的实现通常是一个switch-case语句根据当前状态和事件如命令、故障标志来决定下一个状态。5.2 调试过程与常见问题排查在实际动手调试这个方案时你大概率会遇到以下几个问题。以下是我的排查思路和解决方法问题1电机上电后不转或轻微抖动后停止。排查步骤查电源首先用万用表确认电机驱动板的母线电压是否正常24VMCU供电是否正常3.3V。检查所有电源连接点。查PWM信号使用示波器测量MCU输出的6路PWM信号。确认频率是否为20kHz死区时间是否约为1μs互补信号是否正常不会同时为高。在停止状态下所有PWM输出应为安全状态通常全低。查霍尔信号手动缓慢旋转电机用示波器或逻辑分析仪观察三个霍尔传感器输出信号。信号应该是幅值为电源电压通常是5V或3.3V的方波且相位互差120度。同时在MCU的调试环境中设置断点或打印PINT中断的触发次数和读取的GPIO值确认软件能正确捕获到霍尔信号变化并且读到的值符合预期的6种组合001, 011, 010, 110, 100, 101。查换向逻辑在开环启动阶段屏蔽霍尔中断手动在代码中循环写入6个扇区的PWM模式占空比设得很低比如5%观察电机是否朝一个方向连续步进旋转。如果不转或反转说明换向表错误需要根据电机相序和霍尔相位重新编制换向表。查电流环如果硬件过流保护HSCMP阈值设置得过低可能电机一启动电流稍大就触发保护PWM被硬件拉停。可以暂时调高DAC设置的阈值或者在调试初期先屏蔽硬件保护用软件限流代替待运行稳定后再启用。问题2电机能转但转速不稳定抖动或噪音大。排查步骤查速度反馈在速度PI控制器中断中打印或通过DAC输出实际计算出的转速值。观察其是否平稳。如果转速计算值波动剧烈可能是换向时间测量不准中断响应延迟或者电机负载突变。可以尝试对计算出的转速进行低通滤波。查PI参数PI参数不合适是导致振荡的常见原因。比例系数Kp太大容易超调振荡积分系数Ki太大会导致系统响应迟钝或低频振荡。建议先将Ki设为0只使用P控制调整Kp使电机能稳定跟随速度指令且无明显超调然后逐渐加入较小的Ki以消除静差。查PWM死区死区时间不足会导致上下桥臂直通烧毁MOSFET死区时间过长则会降低输出电压利用率导致转矩脉动和噪音。用示波器双通道测量同一相的上、下桥臂驱动信号确保有清晰的不重叠区域死区。查硬件连接检查电机三相线是否接触良好霍尔传感器连接线是否受功率线干扰。尝试给霍尔传感器电源加磁珠和滤波电容信号线使用双绞线或屏蔽线。问题3高速运行时失步电机突然停转或飞车。排查步骤查中断优先级与处理时间确保PINT换向中断的优先级最高并且其服务程序执行时间极短最好在2-3微秒内。如果换向中断被其他长时间中断阻塞会导致换向延迟在高速时极易失步。检查是否有其他中断如UART接收中断执行了耗时操作如字符串处理。查供电电压高速运行时电机反电动势升高如果母线电压不足会导致无法有效建立电流从而失步。确保电源有足够的功率和电压余量。查软件保护误触发高速下电流波动可能更大检查软件过流保护的阈值和滤波时间常数是否合理避免因正常波动而误报故障。问题4启动困难特别是在带载情况下。排查步骤强化启动算法演示代码可能使用简单的开环启动。对于大惯性或重载启动可以增强启动阶段a) 延长对齐状态时间确保转子定位。b) 在开环启动阶段采用更缓慢的加速度斜坡Ramp-up并适当提高启动初始占空比以提供更大启动力矩。c) 在切换到闭环前持续监测霍尔信号是否连续且规律避免在转子未稳定旋转时就切到闭环。检查机械负载确认负载是否被卡住或者启动摩擦力矩是否过大。调试电机控制是一个系统性的工程需要耐心地“信号链”式排查从指令发出MCU到功率执行MOSFET再到反馈回收霍尔、电流每一个环节都可能成为瓶颈。善用示波器、逻辑分析仪和调试器的实时变量观察功能是解决问题的关键。6. 性能优化与扩展思路当基本功能跑通后你可以考虑从以下几个方面优化和扩展这个方案使其更适应你的具体产品需求。6.1 降低转矩脉动与噪音六步换向固有的转矩脉动是其主要缺点。除了优化机械结构和选择更高极对数的电机外在软件上可以尝试采用更先进的PWM调制方式演示中使用的是双斩波。可以尝试单斩波调制如H_PWM-L_ON上管PWM下管常通或ON-PWM。不同调制方式对母线电压利用率、电流纹波和开关损耗的影响不同可以通过实验选择最适合你电机和应用的模式。注入三次谐波正弦波驱动这是向FOC磁场定向控制过渡的中间步骤。通过叠加一个三次谐波到PWM调制波中可以使相电压波形更接近正弦波从而减小转矩脉动和噪音。这需要修改PWM生成算法从简单的方波输出变为基于正弦函数查表的SPWM或SVPWM输出。LPC55S3x的FlexPWM支持中心对齐模式非常适合生成对称的PWM波形且其高达150MHz的时钟可以支持更高的PWM分辨率使正弦波更平滑。6.2 提升控制性能与功能扩展电流环控制目前方案只有速度环。增加电流环通常是内环可以更精确地控制电机转矩实现更快的动态响应和更好的抗负载扰动能力。需要利用ADC同步采样两相电流第三相可通过计算得出并在一个比速度环更高的频率如10-20kHz下运行电流PI控制器。LPC55S3x的ADC支持硬件触发和同步采样可以配合PWM中心点触发ADC实现无抖动的电流采样。无感启动与运行去掉霍尔传感器可以降低成本和提高可靠性。这需要实现无传感器算法例如通过检测反电动势过零点BEMF或使用观测器如滑模观测器、龙贝格观测器来估算转子位置。启动阶段需要特殊的开环拖拽算法。这对MCU的运算能力Cortex-M33的DSP指令在此有用武之地和软件复杂度要求更高。功能安全与诊断利用LPC55S3x的TrustZone特性可以将关键的控制代码如PWM更新、故障处理放在安全区Secure World将应用层代码如通信、UI放在非安全区Non-secure World提升系统抗恶意代码干扰的能力。此外可以定期执行外设自检如读写PWM、ADC寄存器已知值进行回读校验增加系统的诊断覆盖率。6.3 资源评估与选型参考演示方案展示了LPC55S3x在极低资源占用下的能力。这为你评估项目资源提供了基准CPU负载1.71%的负载意味着单核性能绰绰有余。你可以轻松地在此基础上增加CAN-FD、Ethernet等复杂通信协议栈或者运行更高级的观测器算法。内存占用20KB代码和8KB数据的内存占用也非常小。LPC55S3x系列提供从256KB到640KB的Flash和96KB到320KB的RAM为未来功能扩展留出了巨大空间。外设考量如果你需要驱动多个电机LPC55S3x有两个独立的FlexPWM模块理论上可以独立控制两个三相BLDC电机。其丰富的串行通信接口USART, SPI, I2C, I2S也便于连接各种传感器编码器、旋变或上位机。这个基于LPC553x/LPC55S3x的BLDC六步控制方案就像一套精心设计的乐高积木提供了所有基础模块。它验证了芯片的能力给出了一个稳定工作的框架。你的任务就是在这个框架之上根据自己产品的具体需求——可能是更平稳的转矩、更快的响应、更低的成本或是更高的集成度——进行修改、优化和重构。从读懂每一行配置代码开始到理解每一个中断背后的物理意义最终你将能驾驭这颗强大的芯片让它驱动你的创意精准旋转。