PXD10 SMC模块PWM模式详解:H桥配置与电机控制实战指南 1. 项目概述与核心价值如果你正在用PXD10这颗微控制器做电机驱动尤其是步进电机或者直流有刷电机的控制那么你大概率绕不开它的SMCSystem Motor Controller模块。这个模块的PWM功能特别是其H桥配置可以说是这颗芯片在电机控制领域的“灵魂”。我最初接触这个模块时也被官方参考手册里那几十页的寄存器描述和时序图搞得有点头大感觉信息很散逻辑链条不清晰。经过几个实际项目的“洗礼”踩过不少坑之后我才算把它的脉络真正理清。今天我就把自己对PXD10 SMC模块PWM模式特别是H桥配置和电机控制逻辑的理解结合实际的代码配置和调试经验系统地分享出来。这篇文章的目标是让你看完后不仅能看懂手册更能直接上手配置避开那些我当初遇到的“暗礁”。简单来说SMC模块的PWM核心就是通过一个可编程的定时器Motor Controller Timer Counter配合一系列功能寄存器产生精确的脉宽调制信号。它的强大之处在于硬件上直接集成了对H桥驱动电路的支持这意味着你不需要再用一堆GPIO和外部逻辑电路去拼凑一个H桥控制逻辑芯片内部已经帮你把死区时间、电流续流路径、甚至短路保护都考虑进去了。你只需要关心“想让电机怎么转”剩下的“怎么安全可靠地输出控制信号”交给SMC就行。这对于提高系统可靠性、简化PCB布局、减少软件开销来说意义重大。无论是驱动一个精密的仪表指针空心杯电机还是控制一个步进电机做精确定位PXD10的SMC模块都提供了一个非常扎实的硬件基础。2. SMC PWM模式深度解析与设计思路要玩转SMC的PWM不能一上来就对着寄存器位猛写必须先理解它的整体设计框架。手册里提到了三种输出模式双全H桥Dual Full H-Bridge、全H桥Full H-Bridge和半H桥Half H-Bridge。这三种模式的选择直接决定了你能驱动什么类型的负载以及需要占用多少硬件资源。2.1 三种PWM输出模式的本质区别很多人容易混淆“全H桥”和“双全H桥”其实从硬件通道上看它们的基础单元是一样的一个PWM通道对PWM Channel Pair包含两个PWM通道x 和 x1每个通道控制一对输出引脚例如 MnC0P/MnC0M 和 MnC1P/MnC1M。这里的n是通道对编号0-5x是通道编号x 2 * n。理解这个对应关系是看懂所有配置表格的关键。半H桥模式MCCCx[MCOM] 0x0 或 0x1这是最基础的模式。在这个模式下每个PWM通道x 或 x1都是完全独立工作的。每个通道的两根引脚中一根被配置为PWM输出另一根则被“释放”Released——即不受SMC模块控制其状态由其他关联模块比如普通的GPIO模块决定。这就像你只用了H桥的半个桥臂。它适合驱动那些只需要单方向PWM调速的负载比如一个散热风扇或者一个亮度可调的LED如果驱动电路合适。手册里提到的90度空心仪表通常就是指这种只需要单线圈摆动一定角度的机构。全H桥模式MCCCx[MCOM] 0x2这是直流有刷电机控制的经典模式。在这个模式下一个PWM通道对x 和 x1仍然独立工作但每个通道内部的两根引脚如MnC0P和MnC0M被组合起来形成一个完整的H桥。通过设置符号位MCDCx[SIGN]和占空比你可以控制电流流过电机的方向正转/反转和大小速度/力矩。此时不输出PWM的那根引脚会根据续流位MCCTL1[RECIRC]的设置固定输出高电平或低电平为电机线圈的感应电流提供续流通路。这是实现四象限运行正转、反转、正转制动、反转制动的基础。双全H桥模式MCCCx[MCOM] 0x3这是为两相步进电机或需要两个独立线圈的负载如360度旋转的空心杯电机量身定做的模式。在此模式下一个PWM通道对x 和 x1不再独立而是被“捆绑”起来协同工作共同驱动一个电机的两个线圈Coil 0和Coil 1。图35-17清晰地展示了这一点PWM通道x驱动线圈0MnC0P/MnC0M通道x1驱动线圈1MnC1P/MnC1M。要进入此模式有个严格前提通道x和x1必须同时使能MCCCx[MCAM]不为0且两者的MCOM位都必须设为0x3。如果只有一个通道设为0x3它会被“降级”到全H桥模式运行。这个模式硬件上同步了两个通道的更新时机对于步进电机平稳运行至关重要。注意模式选择寄存器MCCCx[MCOM]是每个PWM通道独立配置的。这意味着理论上你可以让通道0和1工作在双全H桥模式驱动一个步进电机同时让通道2和3工作在全H桥模式驱动一个直流电机通道4工作在半H桥模式驱动一个风扇。这种灵活性是SMC模块的一大优势。2.2 核心寄存器地图与引脚映射配置前必须把寄存器、通道、引脚这三者的关系刻在脑子里。手册中的表35-19是核心我把它重新整理并补充了更直观的描述PWM通道对 (n)PWM通道 (x)控制寄存器占空比寄存器对应引脚 (Coil 0)PWM通道 (x1)控制寄存器占空比寄存器对应引脚 (Coil 1)0通道 0MCCC0MCDC0M0C0M, M0C0P通道 1MCCC1MCDC1M0C1M, M0C1P1通道 2MCCC2MCDC2M1C0M, M1C0P通道 3MCCC3MCDC3M1C1M, M1C1P2通道 4MCCC4MCDC4M2C0M, M2C0P通道 5MCCC5MCDC5M2C1M, M2C1P3通道 6MCCC6MCDC6M3C0M, M3C0P通道 7MCCC7MCDC7M3C1M, M3C1P4通道 8MCCC8MCDC8M4C0M, M4C0P通道 9MCCC9MCDC9M4C1M, M4C1P5通道 10MCCC10MCDC10M5C0M, M5C0P通道 11MCCC11MCDC11M5C1M, M5C1P命名规律M{n}C{y}{M/P}。n是通道对号0-5y是线圈号0或1M代表负端Motor NegativeP代表正端Motor Positive。在电路设计画原理图时务必根据这个表正确连接电机线圈到对应的MCU引脚。3. H桥配置的实操要点与寄存器详解理解了模式接下来就是动手配置。这里面的门道很多一个参数设错电机可能不转、抖动甚至烧管子。我会结合代码片段以C语言为例和配置逻辑图来讲解。3.1 关键功能位解析与配置流程配置一个H桥通道通常遵循以下流程时钟与周期设置 - 对齐模式与使能 - 工作模式选择 - 占空比与方向控制。我们重点看几个最关键的寄存器位。1. 对齐模式 (MCCCx[MCAM])决定了PWM脉冲在周期内的位置直接影响电流纹波和电机噪音。0x1: 左对齐 (Left Aligned)PWM脉冲从周期开始处出现。这是最常用的模式软件计算简单。假设RECIRC0PWM有效电平为低周期开始输出低电平有效在计数值达到占空比值时跳变为高电平无效直到周期结束。0x2: 右对齐 (Right Aligned)PWM脉冲在周期结束时结束。脉冲开始点 周期值 - 占空比值。在某些特定滤波电路或同步整流场景下有用。0x3: 中心对齐 (Center Aligned)PWM脉冲位于周期中心。这是驱动电机特别是无刷直流和步进的推荐模式因为它能显著减少电流纹波和电磁干扰EMI。硬件会自动在偶周期用左对齐奇周期用右对齐来实现中心效果。配置心得对于电机控制无脑选中心对齐0x3就对了。它能让你电机的“哼唱”声小很多对电源的干扰也小。2. 续流模式 (MCCTL1[RECIRC])这是H桥控制的安全阀和效率关键但手册描述比较学术。我用人话解释一下 当PWM输出关断比如从低变高的瞬间电机线圈这个“大电感”里的电流不能突变会产生一个反向电动势。如果没有通路这个电压会尖峰可能击穿MOSFET。续流就是给这个电流提供一条释放路径。RECIRC 0高边续流。PWM有效期间低边MOSFET打开PWM无效时高边MOSFET保持打开电流通过高边MOSFET的体二极管或同步整流电路续流。此时不输出PWM的那个引脚会保持静态高电平。RECIRC 1低边续流。PWM有效期间高边MOSFET打开PWM无效时低边MOSFET保持打开电流通过低边续流。此时不输出PWM的那个引脚会保持静态低电平。如何选择这取决于你使用的驱动芯片或分立MOSFET的架构。很多集成的H桥驱动芯片内部已经集成了优化的续流逻辑。一个重要的实践经验是RECIRC位影响SIGN位的逻辑当RECIRC1时SIGN位的效果是反的见表35-20。这意味着如果你在RECIRC0时写好了一套控制正反转的逻辑切换到RECIRC1后电机转向可能会相反需要你调整SIGN位的设置。安全警告修改RECIRC位必须在没有任何PWM通道运行于双全H桥模式时进行3. 符号位 (MCDCx[SIGN])在双全H桥模式下这个位决定PWM信号从哪根引脚输出从而决定电流方向。SIGN 0(RECIRC0时)PWM信号从MnCyM引脚输出MnCyP引脚输出静态高电平。SIGN 1(RECIRC0时)PWM信号从MnCyP引脚输出MnCyM引脚输出静态高电平。 结合占空比DUTY值你就实现了对电机电压大小和方向的控制。在半H桥模式下此位无效。4. 占空比更新手册35.4.1.1.1节特别强调了一个顺序在双全H桥模式下更新电机线圈的电流大小和方向时应该先写占空比寄存器x再写x1。这样能在下一个定时器溢出时两个通道的占空比被同步更新避免电机在换相时产生力矩抖动。务必使用16位写操作即一次性写入整个寄存器8位写入可能导致不可预测的占空比。3.2 频率与占空比计算这是PWM应用的数学基础必须搞清楚。1. 定时器时钟f_TC这是PWM时基的来源。f_TC f_BUS / Prescaler其中f_BUS是外设总线时钟Prescaler由MCCTL0[MCPRE]位选择1, 2, 4, 8分频。2. PWM通道频率f_PWM无抖动模式 (MCCTL0[DITH]0)f_PWM f_TC / (M * MCPER[PER])有抖动模式 (MCCTL0[DITH]1)f_PWM f_TC / (M * MCPER[PER] * 2)其中M是对齐模式系数左对齐或右对齐时M1中心对齐时M2。举个例子假设f_BUS 8MHz预分频取4中心对齐模式目标PWM频率为20kHz且不使用抖动模式。f_TC 8MHz / 4 2MHz中心对齐M2公式为f_PWM f_TC / (2 * PER)。所以PER f_TC / (2 * f_PWM) 2,000,000 / (2 * 20,000) 50。 将500x32写入MCPER[PER]寄存器即可。3. 占空比计算实际占空比 (MCDCx[DUTY] / MCPER[PER]) * 100%前提是DUTY PER且PER ! 0。如果DUTY PER输出将保持恒定低电平RECIRC0或高电平RECIRC1。抖动模式 (Dither)这是一个高级功能用于在PWM分辨率即PER值较高导致单个计数周期时间极短时避免因输出引脚压摆率Slew Rate限制而产生的脉冲失真。启用后DITH1硬件会在两个PWM周期内交替使用DUTY和DUTY1作为比较值从而将最短输出脉冲长度加倍但代价是PWM频率减半。使用时需要将预分频设置为原来的两倍以维持相同的输出帧频率。注意PER的最低有效位LSB在抖动模式下会被强制为0即PER必须是偶数。4. 从零开始一个完整的直流电机H桥控制实现理论说再多不如一行代码。我们以驱动一个直流有刷电机为例使用通道对0即PWM通道0和1对应引脚M0C0P/M0C0M和M0C1P/M0C1M实现正反转和调速。假设我们使用全H桥模式中心对齐高边续流RECIRC0总线时钟8MHz目标PWM频率20kHz。4.1 硬件连接与初始化步骤首先确保硬件连接正确。将电机的两个端子分别连接到M0C0P和M0C0M引脚这是一个完整的H桥。如果你的驱动芯片需要使能信号或故障反馈也要连接好。步骤1配置引脚复用功能在PXD10中SMC功能引脚通常是复用的。你需要通过SIU系统集成单元模块的Pad Configuration Register将对应的引脚功能设置为SMC输出。// 假设 M0C0P, M0C0M, M0C1P, M0C1M 对应芯片的 PA0, PA1, PA2, PA3 // 需要查阅具体芯片的数据手册确定引脚号和ALT功能码 SIU.PCR[0].R 0x0200; // PA0: ALT1 SMC_M0C0P, 输出推挽 SIU.PCR[1].R 0x0200; // PA1: ALT1 SMC_M0C0M SIU.PCR[2].R 0x0200; // PA2: ALT1 SMC_M0C1P SIU.PCR[3].R 0x0200; // PA3: ALT1 SMC_M0C1M步骤2配置SMC全局时钟和周期// 停止所有SMC通道安全配置 SMC.MCCTL0.R 0x0000; // 确保模块禁用清空配置 SMC.MCCTL1.R 0x0000; // 默认RECIRC0 (高边续流) // 设置预分频和周期 // MCCTL0[MCPRE]: 预分频 4 (0b01) // MCCTL0[DITH]: 禁用抖动 (0) // 计算出的PER50 (0x32) SMC.MCCTL0.B.MCPRE 0x1; // 预分频4 SMC.MCCTL0.B.DITH 0; SMC.MCPER.B.PER 50; // 设置PWM周期步骤3配置PWM通道0和1为全H桥模式// 配置通道0 (MCCC0) SMC.MCCC0.B.MCAM 0x3; // 中心对齐模式同时使能通道 SMC.MCCC0.B.MCOM 0x2; // 全H桥模式 SMC.MCCC0.B.CD 0x0; // 开关延迟设为0个时钟周期可根据需要调整死区 // 配置通道1 (MCCC1) - 独立控制另一个H桥这里我们先配置但不一定使能同一个电机 SMC.MCCC1.B.MCAM 0x3; SMC.MCCC1.B.MCOM 0x2; SMC.MCCC1.B.CD 0x0; // 初始占空比设为0电机不转 SMC.MCDC0.B.DUTY 0; SMC.MCDC0.B.SIGN 0; // 初始方向 SMC.MCDC1.B.DUTY 0; // 通道1也初始化 SMC.MCDC1.B.SIGN 0;步骤4启动PWM输出// 全局使能SMC模块如果需要的话具体看MCCTL0的全局使能位有些设计是通道使能即启动 // 对于PXD10配置好MCCCx[MCAM]为非0值即启动了该通道的PWM生成。 // 此时通道0的H桥已经开始输出但占空比为0电机两端电压为0。4.2 电机控制函数实现现在我们可以编写控制函数了。/** * brief 设置直流电机速度与方向 * param duty 占空比值范围 0 ~ MCPER.PER (此处为50) * param dir 方向0-正向(SIGN0), 1-反向(SIGN1) * note 此函数控制通道0对应的H桥M0C0P/M0C0M */ void DC_Motor_Set(uint16_t duty, uint8_t dir) { if(duty SMC.MCPER.B.PER) { duty SMC.MCPER.B.PER; // 限制占空比不超过周期 } SMC.MCDC0.B.DUTY duty; SMC.MCDC0.B.SIGN (dir 0x01); // 设置方向 // 如果需要刹车快速停止可以将占空比设为0并同时将两根线都置为低或高取决于RECIRC // 但更常见的刹车模式是设置成“短接刹车”即让电机两端短接。这需要同时控制H桥的上下管。 // 在PXD10的SMC中可以通过设置特定的占空比和SIGN组合并利用RECIRC来实现。 // 例如在RECIRC0时设置SIGN0且DUTYPER则M0C0M输出PWM恒低M0C0P恒高形成高边续流路径电机自由停止。 // 设置SIGN1且DUTYPER则M0C0P输出PWM恒低M0C0M恒高效果类似。 // 真正的短接刹车低边或高边同时导通需要更精细的晶体管状态控制可能超出了SMC自动管理的范围需要禁用PWM并直接控制GPIO。 } // 示例电机以50%速度正转 DC_Motor_Set(25, 0); // 示例电机以30%速度反转 DC_Motor_Set(15, 1); // 示例电机停止占空比0 DC_Motor_Set(0, 0);4.3 双全H桥模式驱动步进电机驱动一个两相步进电机如常见的4线28BYJ-48或42步进电机我们需要使用双全H桥模式。假设使用通道对0即通道0和1分别驱动电机的A相和B相线圈。配置关键点模式设置必须将通道0和通道1的MCOM位都设置为0x3。使能设置通道0和通道1的MCAM位也必须同时设置为非零值如0x3中心对齐以启用通道。同步更新改变A、B两相电流即占空比和方向时务必遵循先写通道0再写通道1的顺序确保同步更新。// 配置步进电机驱动双全H桥模式 void Stepper_Motor_Init(void) { // 引脚复用配置同上略... // 全局和周期配置同上略... SMC.MCPER.B.PER 100; // 假设周期设为100 // 配置通道0和1为双全H桥模式 SMC.MCCC0.B.MCAM 0x3; // 中心对齐使能 SMC.MCCC0.B.MCOM 0x3; // 双全H桥模式 SMC.MCCC0.B.CD 0x0; SMC.MCCC1.B.MCAM 0x3; // 中心对齐使能 SMC.MCCC1.B.MCOM 0x3; // 双全H桥模式 SMC.MCCC1.B.CD 0x0; // 初始化两相占空比为0 SMC.MCDC0.B.DUTY 0; SMC.MCDC0.B.SIGN 0; SMC.MCDC1.B.DUTY 0; SMC.MCDC1.B.SIGN 0; } /** * brief 设置步进电机单步以一个常见的全步进为例 * param step 步数索引 (0-3) */ void Stepper_Set_Step(uint8_t step) { // 全步进1-2相励磁电流表 const struct { uint16_t duty_A; uint8_t sign_A; uint16_t duty_B; uint8_t sign_B; } stepTable[4] { {50, 0, 0, 0}, // 步骤0: A {0, 0, 50, 0}, // 步骤1: B {50, 1, 0, 0}, // 步骤2: A- (通过改变SIGN实现电流反向) {0, 0, 50, 1}, // 步骤3: B- }; if(step 3) step 0; // **关键顺序**先写A相通道0再写B相通道1 SMC.MCDC0.B.DUTY stepTable[step].duty_A; SMC.MCDC0.B.SIGN stepTable[step].sign_A; SMC.MCDC1.B.DUTY stepTable[step].duty_B; SMC.MCDC1.B.SIGN stepTable[step].sign_B; // 此时两个通道的占空比会在下一个定时器溢出时同步更新电机平稳步进。 }通过调用Stepper_Set_Step()并循环递增step即可驱动步进电机旋转。对于微步进控制则需要根据正弦/余弦表精细地调整A、B两相的占空比值。5. 高级功能与故障排查实战5.1 短路保护功能配置SMC模块集成了硬件短路检测这是工业应用的福音。每个PWM引脚都有一个独立的检测器共24个。其原理是持续比较PWM输出指令内部信号和引脚的实际反馈FB电平。如果两者不一致例如输出高但引脚被拉低可能对地短路输出低但引脚被拉高可能对电源短路的时间超过设定的超时值MCSDTO[TOUT]就会触发中断标志。配置步骤使能引脚输入缓冲在SIU模块中配置对应引脚如M0C0P的Pad Configuration Register使能输入缓冲。这是反馈信号进入芯片的必经之路。设置短路检测超时时间MCSDTO[TOUT]决定了多久的异常状态会被判定为短路。这个值需要根据你的PWM频率和系统响应要求来设定。手册强调此值必须大于2因为同步器有2个时钟周期的延迟。TOUT的单位是检测器时钟周期检测器时钟通常与总线时钟相关。使能短路检测器在MCSDE0,MCSDE1,MCSDE2寄存器中找到对应引脚索引sd见表35-23的SDEN位置1。可选使能短路中断在MCSDIEN0,MCSDIEN1,MCSDIEN2寄存器中将对应SDIE位置1。并在NVIC中使能SMC中断。中断服务程序在中断中读取MCSDI0,MCSDI1,MCSDI2寄存器检查SDIF位确定哪个引脚发生短路。处理完后必须向对应的SDIF位写1清除标志并且通常需要立即禁用该通道的短路检测器SDEN置0否则在短路持续存在的情况下标志位会立即再次被置起导致中断风暴。应在故障排除后重新使能。// 示例使能 M0C0P 引脚的短路检测sd索引为6见手册表35-23 // 假设检测器时钟为 f_BUS超时时间设为约5usf_BUS8MHz则周期125ns。 // TOUT 5us / 125ns 40 (0x28) SMC.MCSDTO.B.TOUT 40; // 使能索引为6的短路检测器 (MCSDE0[SDEN[6]]) SMC.MCSDE0.B.SDEN | (1 6); // 使能对应中断 SMC.MCSDIEN0.B.SDIE | (1 6); // 还需要配置NVIC此处略... // 在中断服务例程中 void SMC_IRQHandler(void) { if(SMC.MCSDI0.B.SDIF (1 6)) { // M0C0P 引脚短路 // 1. 紧急处理立即关闭对应的PWM输出可通过禁用通道或设占空比为0 SMC.MCDC0.B.DUTY 0; // 或 SMC.MCCC0.B.MCAM 0; // 禁用通道 // 2. 清除中断标志 SMC.MCSDI0.B.SDIF (1 6); // 写1清除 // 3. 禁用该短路检测器防止中断风暴 SMC.MCSDE0.B.SDEN ~(1 6); // 4. 设置故障标志供主循环处理如报警、停机等 g_fault_flag FAULT_SHORT_CIRCUIT; } // ... 检查其他SDIF位 }5.2 输出切换延迟死区时间控制MCCCx[CD]位可以设置0到3个定时器时钟周期的延迟用于错开H桥同侧上下管的状态切换即插入死区时间Dead Time防止上下管直通短路。这个延迟仅作用于从高电平到低电平的转换。注意这个延迟是SMC模块内部的数字延迟对于需要严格、可调或较长死区时间的应用通常还需要在外部驱动芯片或MOSFET栅极驱动电路上配置硬件死区。SMC的这个功能可以作为一个补充。5.3 常见问题与排查技巧电机不转但引脚有波形检查RECIRC和SIGN用逻辑分析仪或示波器同时测量H桥的两个输出引脚。确认在PWM有效期间一个引脚是PWM波另一个是固定的高或低电平由RECIRC决定。如果两个引脚波形相同或都固定说明SIGN位或RECIRC位配置有误。检查占空比确保MCDCx[DUTY]的值大于0且小于MCPER[PER]。如果DUTY为0输出恒高RECIRC0如果DUTY PER输出恒低RECIRC0。这两种情况电机都可能不转或堵转。检查使能确认MCCCx[MCAM]不为0。为0则通道被禁用。电机抖动、噪音大或发热严重首选中心对齐模式确保MCAM0x3。左对齐模式下的电流纹波通常更大。PWM频率是否合适频率太低如几百Hz电机会有可闻噪音频率太高超过电机电感允许的范围会导致开关损耗大、效率低、驱动芯片发热。对于小型直流有刷电机10kHz-20kHz是常见选择步进电机可以更高一些如20kHz-50kHz但需注意驱动芯片的开关能力。检查电源和地线电机驱动是大电流场合确保电源去耦电容足够如大电解电容多个陶瓷电容电机电源回路与MCU数字地单点连接避免噪声串扰。双全H桥模式步进电机丢步或力矩不足严格遵循更新顺序改变A、B相参数时必须先写A相通道x再写B相通道x1。检查电流是否足够SMC只产生控制信号电机线圈的实际电流由外部的驱动电路如H桥芯片的电流采样、衰减模式设置决定。确保驱动芯片的电流设置正确。微步进配置在全步进模式下力矩波动大。尝试使用微步进并确保A、B两相的占空比按照正弦/余弦关系平滑变化。短路保护误触发或无效检查反馈路径短路检测依赖于引脚的实际电平FB。确保该引脚没有被其他外围电路强制拉高或拉低并且SIU中已使能输入缓冲。调整TOUT值如果TOUT设置过小正常的开关瞬态由于寄生参数引起的微小毛刺可能会被误判为短路。适当增大TOUT。如果设置过大则短路响应慢。需要通过示波器观察PWM引脚在开关瞬间的振铃情况来合理设定。中断服务程序未及时清除标志或禁用检测器这会导致中断持续触发系统卡死。进入低功耗模式后PWM异常在SMC停止模式Stop Mode下模块时钟停止引脚会进入由RECIRC位定义的非活动状态。唤醒后SMC会从进入停止模式前的状态恢复。如果你希望唤醒后从一个确定的状态开始最安全的方法是在进入停止模式前禁用所有SMC通道MCAM0唤醒后再重新初始化配置。通过以上从理论到实践从配置到调试的完整梳理相信你已经对PXD10的SMC模块有了一个立体而深入的理解。这个模块功能强大但细节繁多。最好的学习方式就是动手搭一个简单的电机驱动板用代码去验证每一个功能点用示波器去观察每一个波形变化。当你看到电机按照你的指令平稳转动时这些寄存器位和时序图就真正变成了你手中的工具。