简介锁频环FLL是通信、雷达及精密测量中的核心频率控制技术。这份MATLAB建模仿真案例面向电子工程、通信工程及信号处理领域的学习者以完整可运行的仿真项目直观演示构建鉴频器、低通滤波器与压控振荡器VCO的过程帮助理解频率锁定原理与参数调整方法。压缩包共2个文件包含1个mp4操作录屏和1个m源码脚本整体大小仅4.75MB轻量便携录屏逐步展示建模与仿真操作脚本可直接运行也可通过修改滤波器截止频率、VCO增益等参数观察系统响应。目前已有326人学习下载。通过学习该案例学习者能掌握FLL系统从建模到调试的完整流程学会设计鉴频器如相位差检测、优化低通滤波器以消除高频噪声并分析捕捉范围、锁定时间与跟踪精度等性能指标为后续通信系统设计与MATLAB建模仿真打下扎实基础。1. 锁频环是什么PLL在并网仿真里翻车后FLL怎么兜底做并网变流器仿真的人八成遇到过这种翻车锁相环PLL在电压跌落、频率突变时先摆一下再追重一点的工况直接丢锁Simulink里频率输出在45Hz到55Hz之间乱跳。锁频环(FLL)换了一条路——不追相位只追频率配合SOGI正交信号发生器几个工频周期就能把频率拉回额定值附近。这套MATLAB建模仿真案例“20 锁频环.zip”要解决的就是这件事从锁频环原理到单相/三相电网同步再到非理想工况下的参数整定用20个模型把不同场景拆开演示。适合做并网逆变器、储能变流器、电网同步算法验证的工程师和研究生。先看懂原理再照着模型改参数最后换成自己的信号验证。2. 从锁相环到锁频环SOGI-FLL的状态方程与第一个Simulink模型先解释为什么SOGI和FLL总是绑在一起出现。FLL单独存在没有意义它需要一个能产生正交信号的结构SOGISecond Order Generalized Integrator二阶广义积分器就是这个结构。SOGI输出两路信号x1跟随输入电压vx2比x1滞后90°。x1和x2之间天然满足积分关系而且SOGI的中心频率ω就是FLL需要锁定的那个频率。两者构成闭环SOGI用ω做中心频率产生正交信号FLL用x2和误差信号的乘积去修正ω。这个结构在文献里叫SOGI-FLL也是案例包里最基础、复现率最高的模型。2.1 PLL锁相位、FLL锁频率两者的本质差别和选型依据PLL锁相环的环路里有一个相位检测器加一个PI调节器PI输出角频率对角频率积分得到相位θ。它锁定的标志是输入信号与NCO输出之间的相位差为零。问题在于频率阶跃时相位差会产生一个持续增大的斜坡误差PI需要时间把它压回去压的过程中θ会摆动后续dq变换出来的电压电流分量跟着抖。频率偏差越大这个瞬态越难扛重一点就直接失锁。FLL把目标换成了频率它不关心θ是多少只关心ω是否等于输入角频率。SOGI-FLL的完整状态方程可以写成x1 -ω x2 k ω (v - x1) x2 ω x1 ω -γ x2 (v - x1) / (x1^2 x2^2)v是输入电压信号k是SOGI阻尼系数γ是FLL增益。注意ω由x2和误差的乘积决定输入频率高于当前ω时x2与误差的符号关系会让ω往高处走低于当前ω时往低处走。分母x1^2x2^2把增益做了归一化频率离额定值远的时候收敛步长自适应变大靠近时变小因此FLL对输入电压幅值变化不敏感。这一点在电压跌落工况里特别值钱。选型怎么定如果仿真对象是理想电网、只有小角度扰动PLL响应快且够用。如果要做并网逆变器低电压穿越、孤岛检测、微电网频率估计优先考虑FLL或SOGI-FLL因为它不需要相位锁定过程频率信息直接可读也不存在“相位误差积分到饱和”的问题。一个常见的工程做法是把FLL和PLL串联FLL输出频率给PLL做前馈PLL只负责把相位对准。这样频率突变时PLL不用从零开始拉PI压力小很多但代价是多了一个需要整定的环路增益调试面变大。如果只做频率测量或孤岛检测直接用FLL输出就好没必要再串一级PLL。2.2 用Simulink搭一个最简FLLSOGI正交信号发生器加频率估算常见做法是新建一个slx模型拖一个MATLAB Function块进去。双击块把下面的代码贴进编辑器。注意这个块默认没有采样时间要在块属性里把Sample time设成和后面定步长一致的Ts比如1e-4否则求解器会把它当连续块处理整个模型变成混合步长很容易跑出震荡。function [x1, x2, w] sogi_fll_step(v, x1_prev, x2_prev, w_prev, Ts, k, gamma) % SOGI-FLL 单步更新供 MATLAB Function 块使用 % 输入 % v 当前采样电压 % x1_prev 上一拍同相输出 % x2_prev 上一拍正交输出 % w_prev 上一拍角频率估算值 (rad/s) % Ts 采样周期 (s) % k SOGI 阻尼系数常取 sqrt(2) % gamma FLL 增益决定频率收敛速度 eps v - x1_prev; % 误差信号等于 v 与同相输出的差 x1 x1_prev Ts * (-w_prev * x2_prev k * w_prev * eps); x2 x2_prev Ts * (w_prev * x1_prev); w w_prev - Ts * gamma * x2_prev * eps / (x1_prev^2 x2_prev^2 1e-6); % 加 1e-6 防止初始化时除零限幅避免频率发散到物理范围外 if w 2*pi*45 w 2*pi*45; end if w 2*pi*55 w 2*pi*55; end end逻辑说明代码用的是前向欧拉离散把状态方程里的微分换成差分上一拍的状态作为下一拍的输入。核心是eps v - x1_prev它代表输入信号与SOGI同相输出之间的误差w的更新项里乘了x2_prev和eps的乘积这正是FLL判断频率偏高还是偏低的依据。分母里的1e-6不是参数是数值保护避免启动瞬间x1和x2都接近0时除零。参数说明k取sqrt(2)时SOGI的带宽对应阻尼比0.707对工频信号来说带宽在几Hz量级太低会让x2的相位误差变大太高会把谐波放进来。γ先给50频率收敛通常在100ms量级想更快可以到200但会开始出现稳态抖动。限幅的45Hz到55Hz是工频系统的通用范围做60Hz系统时记得改成54到66。2.3 SOGI-FLL的参数整定带宽、阻尼比与收敛速度怎么配参数影响对象典型值调节方向kSOGI带宽决定谐波抑制和x2响应速度sqrt(2)谐波重的场景降到1~1.2γ频率收敛速度与稳态抖动20~100频率突变快的取大要求稳态精度取小ω初始值FLL启动时的频率起点2pi50输入是60Hz信号时必须改Ts数字实现稳定性与精度1e-4~1e-5小于信号周期的1/100三个参数之间有耦合不能孤立调。k放大等于把SOGI带宽放开x2里包含更多输入信号的边带分量FLL频率环更敏感这时γ要相应调小反过来k调小、SOGI带宽变窄频率环反应钝γ可以给大一点。我通常先固定ksqrt(2)把γ从10到200扫一遍看收敛时间和稳态频率波动找到拐点再动k。这个做法可以套到案例包里任何一个模型上先用额定工况跑一遍再换目标工况。3. 把这20个案例按场景拆开单相、三相、非理想电网怎么选锁频环案例看起来多实际归类就三块单相SOGI-FLL、三相DSOGI-FLL、以及带谐波抑制或闭环并网控制的变体。打开压缩包之后先别急着点开模型乱跑先看目录结构再决定从哪一个入手。3.1 案例包里常见的目录结构与文件类型怎么快速定位能跑的模型这类案例包通常按主题分文件夹常见的分类是单相SOGI-FLL、三相DSOGI-FLL、带谐波抑制的扩展版本、和并网逆变器闭环结合的完整仿真。每个文件夹里至少有一个.slx或.mdl主模型配套一个初始化脚本。文件名里带_v2020a这类后缀的说明是用MATLAB 2020a保存的用新版本打开时Simulink会弹升级提示一般都能打开只有极少数.mdl里的老模块会被标记成deprecated。如果解压后只有.m脚本加一个README.txt说明这套案例不是纯Simulink模型而是用脚本做信号生成、调函数、画图逻辑上更接近算法验证适合先看代码再搭模型。打开主模型之前做两件事。第一运行配套的初始化脚本它通常定义fnom50、Vg311、Fs1e4这些工作区变量第二检查模型里有没有From Workspace模块如果有先把输入信号在工作区生成好。跳过初始化脚本直接按F5跑最常见的报错是undefined function or variable这不是模型坏了是工作区没喂变量。案例包越完整越容易犯这个错。3.2 单相锁频环 vs 三相锁频环结构差异和仿真步长设置单相FLL只有一路SOGI输入是单相电压输出x1、x2结构最简单。三相系统有两个选择一是把三相电压做Clarke变换得到αβ分量然后α轴和β轴各放一个SOGI用两个SOGI输出合成正序和负序这叫DSOGI-FLL二是只取其中一相做单相FLL省资源但拿不到负序信息三相不平衡时频率输出会有明显摆动。对比项单相FLL三相DSOGI-FLLSOGI数量12输入信号单相电压Clarke变换后的αβ分量频率纹波谐波下明显正负序分离后更干净模块复杂度低高适用场景单相电网、简单频率估计三相并网、不平衡工况仿真步长方面单相模型用Ts1e-4足够三相DSOGI因为计算矩阵多一点如果变步长求解器处理连续和离散混合逻辑容易在过零点附近多算几步最好统一用定步长步长取1e-4到5e-5。案例包里如果同时给了单相和三相版本先跑单相确认参数逻辑再切三相否则调试时分不清是FLL的问题还是正负序提取的问题。3.3 频率突变、谐波污染、电压跌落场景下FLL的响应差异案例包里常见的一组工况是频率从50Hz跳到52Hz、叠加5次谐波到30%、电压跌落到0.3pu。这三个工况分别考验FLL的不同指标观察输出波形时重点不一样。频率阶跃考验收敛时间和超调。理想响应是频率从50Hz开始经过一个单调或略超调的过渡100ms内进入52Hz±0.1Hz。超调超过1Hz说明γ偏大或k偏大把x2的边带分量放大了。谐波污染考验稳态精度5次谐波会让x2产生畸变ω输出上出现100Hz和300Hz的纹波。纹波幅值超过0.5Hz时把k从sqrt(2)降到1.2左右。电压跌落考验归一化效果x1^2x2^2作为归一化因子电压掉到0.3pu时分子分母同比例缩小理论上ω不变但数字实现里分母加了1e-6低电压幅值下这个偏移会被放大。先用额定工况跑一遍把频率响应曲线存下来再切目标工况对比这是最省事的调试路径。不要一上来就把三种扰动叠在一起否则波形乱了根本定位不到是哪个环节被击穿。4. 不依赖Simulink也能跑用MATLAB脚本复现SOGI-FLL离散化Simulink模型适合看波形但批量跑参数扫描很吃力每次改γ都要重新打开模型点运行。把算法移植到脚本里只要解决一个核心问题把连续状态方程变成差分方程再按固定步长循环更新。这样就能在一个.m文件里重复跑几十组参数直接画收敛时间曲线。4.1 连续域传递函数离散化Tustin变换与差分方程推导SOGI在连续域有两个输出对应两个传递函数H1(s) k ω s / (s^2 k ω s ω^2) 对应x1 H2(s) k ω^2 / (s^2 k ω s ω^2) 对应x2前向欧拉实现简单但条件稳定步长稍大就可能振荡。稳定的做法是Tustin变换也就是双线性变换把s替换成2(z-1)/(Ts(z1))。手推一遍系数比较繁琐MATLAB里可以直接用c2d函数做连续转离散然后转成差分方程系数。实际工程里我更喜欢直接按状态方程写差分化因为SOGI的状态方程只有两阶前向欧拉在Ts1e-4、工频50Hz时条件稳定余量足够代码也更短。真正需要Tustin的场景是谐波含量高、Ts放到1e-3的时候前向欧拉的相位误差会大到影响FLL判断。4.2 写一个可独立运行的FLL脚本输入信号、状态更新、输出频率下面这个脚本可以直接复制运行生成一个0.5s的电压信号中间0.25s从50Hz跳到52Hz然后用SOGI-FLL做频率估计。脚本用局部函数保持结构清晰MATLAB R2016b之后都支持局部函数新版MATLAB自然兼容。% sogi_fll_simulation.m 单相SOGI-FLL离散仿真脚本 clear; clc; close all; Ts 1/10000; % 采样周期 10 kHz t 0:Ts:0.5; % 仿真 0.5 秒 f0 50; Vm 311; % 额定频率 50Hz峰值电压 311V % 构造输入信号0.25s 之前 50Hz之后 52Hz带 30° 初始相位 v Vm * sin(2*pi*f0*t 0.3); idx t 0.25; v(idx) Vm * sin(2*pi*52*t(idx) 0.3); x1 0; x2 0; w 2*pi*f0; % 状态初值频率从 50Hz 开始追 k sqrt(2); gamma 50; % SOGI 阻尼系数与 FLL 增益 f_est zeros(size(t)); for n 1:length(t) [x1, x2, w] sogi_fll_step(v(n), x1, x2, w, Ts, k, gamma); f_est(n) w / (2*pi); % 角频率转 Hz end plot(t, f_est); grid on; yline(50, --); yline(52, --); xlabel(时间 (s)); ylabel(估计频率 (Hz)); function [x1, x2, w] sogi_fll_step(v, x1_prev, x2_prev, w_prev, Ts, k, gamma) eps v - x1_prev; x1 x1_prev Ts * (-w_prev * x2_prev k * w_prev * eps); x2 x2_prev Ts * (w_prev * x1_prev); w w_prev - Ts * gamma * x2_prev * eps / (x1_prev^2 x2_prev^2 1e-6); if w 2*pi*45 w 2*pi*45; end if w 2*pi*55 w 2*pi*55; end end逻辑说明主循环里每个采样点只调用一次sogi_fll_step状态通过输入输出传递不依赖持久变量这样同一套函数可以在Simulink的MATLAB Function块和脚本里共用。v(idx)那段是频率阶跃构造用时间索引把52Hz信号替换到后半段相位保持0.3弧度连续避免跳变瞬间出现冲击。参数说明Ts1/10000对应10kHz采样工频每个周期200个采样点SOGI离散化精度足够。gamma50时收敛时间约100ms想观察更快响应可以改成200但稳态频率曲线会出现轻微毛刺。yline画参考线直接看收敛终点和超调量。4.3 参数敏感性分析采样频率、增益γ、阻尼ζ对锁频精度的影响把脚本包一层循环就可以批量扫描参数。下面这段代码对gamma做扫描记录每个参数下的收敛时间和稳态标准差gamma_list [10, 30, 50, 100, 200]; settle_time zeros(size(gamma_list)); f_std zeros(size(gamma_list)); for gi 1:length(gamma_list) gamma gamma_list(gi); x1 0; x2 0; w 2*pi*f0; f_est zeros(size(t)); for n 1:length(t) [x1, x2, w] sogi_fll_step(v(n), x1, x2, w, Ts, k, gamma); f_est(n) w / (2*pi); end % 用 0.25s 频率阶跃之后的 0.1s 数据评估稳态波动 seg f_est(t 0.25 t 0.35); settle_time(gi) find(abs(f_est - 52) 0.05, 1) * Ts; f_std(gi) std(seg); end disp([gamma_list; settle_time; f_std]);逻辑说明settle_time用find找到频率第一次进入52±0.05Hz的样本点乘Ts得到秒数f_std取阶跃后0.1s窗口的波动量化稳态抖动。这个统计口径在案例包验证里可以统一用不同模型之间也能横向对比。参数说明gamma从10到200收敛时间会从几百毫秒压到几十毫秒但f_std先降后升典型的最优点在50到100之间。采样频率的影响在脚本里改Ts1/5000或1/20000重跑能看到前向欧拉在低采样率下收敛变慢这是离散化相位误差变大导致的不是算法本身的问题。5. 锁频环建模仿真的避坑清单频率发散、振荡、锁不住频的5个踩坑记录这部分是血泪经验。锁频环的坑大多不在原理而在离散化、初始化和工况组合上。每一条按现象、原因、解决三个维度写照着排查能省半天时间。5.1 现象频率输出一路冲到限幅值或者锁在错误频率上原因ω初始值给得太远或者启动瞬间x1^2x2^2接近0归一化分母失效导致ω更新步长异常。比如输入是52Hz信号ω初值还是2pi50启动阶段SOGI输出还没建立误差信号很大γ又偏大几步之内ω就被推到55Hz限幅值。解决ω初值直接设成信号频率不确定时就设额定值更稳妥的做法是前几个周期不启用FLL更新让SOGI先以固定中心频率建立正交信号再切入FLL模式。脚本里加一个mode切换变量就能实现。5.2 现象Simulink变步长求解器下一改步长就振荡报出连续信号过零错误原因MATLAB Function块默认采样时间是继承在变步长求解器里会变成变步长调用前向欧拉离散的稳定性条件被打破。特别是模型里同时有连续积分器和离散逻辑时过零点附近容易产生数值抖动。解决在MATLAB Function块的Block Properties里把Sample time显式设为Ts模型求解器统一改成Fixed-step discrete步长和Ts一致。这样SOGI、FLL、PWM调制器全部走同一时钟域振荡现象会直接消失。5.3 现象三相不平衡时频率来回摆单相FLL输出始终锁不稳原因三相不平衡电压里含负序分量负序经Clarke变换后在αβ轴上表现为2倍频波动单相SOGI把这种波动当成基波边带FLL频率输出自然带上100Hz纹波。解决换DSOGI-FLL结构α轴和β轴各放一个SOGI再用正负序计算矩阵把基波正序提出来做频率估计。负序分量可以从两个SOGI输出重构出来计算公式在案例包里通常直接以子系统的形式存在。如果只是做频率测量也可以在FLL输出后加一个截止频率10~20Hz的低通把100Hz纹波滤掉但会牺牲频率突变时的响应速度。5.4 现象γ调大收敛快但稳态频率波动也大调小又跟不上频率突变好像是一个矛盾原因γ同时作用于动态过程和噪声它决定了FLL对误差信号的积分速度大γ把x2里的谐波纹波和量化噪声一起放大小γ又让频率环对突变反应迟钝。这是归一化SOGI-FLL的固有特性不是参数没调好。解决工程上常见做法是变增益频率误差大时用大γ快速收敛误差进入±0.1Hz后再切小γ保稳态精度。实现起来不复杂脚本里根据abs(w-2pifnom)切换gamma值即可。另一个做法是保留固定γ在ω输出端加一阶低通截止频率取15Hz左右分辨力更高但动态会慢半拍。没有同时满足“快且稳”的固定参数只能做切换或折中。5.5 现象同样的参数脚本跑出来的频率曲线和Simulink对不上稳态值差几十毫赫兹原因Simulink模型里如果用连续积分器求解器是变步长ode45或ode23t和脚本里固定步长前向欧拉是两套离散逻辑另外MATLAB Function块的输出如果接到连续积分器再反馈回来会产生一个隐含的采样延迟差异。解决统一离散方式。Simulink模型里的积分器改成Discrete-Time Integrator采样时间设为TsMATLAB Function块的采样时间也设为Ts这样脚本和模型的计算时序完全一致。对比波形时都用过零点对齐不要直接用两个曲线起点比。版本差异也会导致这种情况案例包如果是旧版.mdl转来的升级后用相同参数跑一遍先确认模型没有被动过离散化设置。6. 把案例改造成自己的模块参数复用、批量仿真与验证习惯锁频环案例跑通之后最值得做的事是把FLL封装成一个可复用的子系统参数全部对外暴露。子系统输入接v、Ts、k、gamma、ω初值输出接x1、x2和f_est内部只放MATLAB Function块和一个离散积分器。这样后面做双向储能控制仿真模型、微电网频率估计、并网逆变器低电压穿越直接拖这个子系统进去不需要重新搭。批量验证时用sim函数跑Simulink模型比逐次点运行高效得多。% 批量跑不同gamma下同一个slx模型 model sogi_fll_demo; gamma_list [20 50 100]; for gi 1:length(gamma_list) assignin(base, gamma, gamma_list(gi)); simOut sim(model, StopTime, 0.5); f simOut.get(f_est); % 画曲线或算指标这里省略后处理 end这个做法的关键是先把gamma定义在工作区模型内部直接引用它sim每次运行前用assignin覆盖值。这样跑参数扫描不需要打开模型界面适合夜里挂机跑一组工况。参数改完之后验证顺序我习惯固定成三步额定工况看稳态精度频率阶跃看收敛时间谐波叠加看抗扰能力。三步都过了再往闭环控制里接直接省掉一半排查时间。锁频环本身不玄学真正翻车的地方全在离散化、初值和工况划分上把这三样管住案例算真正吃到自己手里了。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
AnythingLLM:本地RAG工作区与SQLite驱动的AI Agent基础设施 1. 项目概述:为什么 AnythingLLM 不是又一个“本地 ChatGPT”玩具?AnythingLLM 这个名字刚出来时,我第一反应是——又一个套壳界面?点开 GitHub 仓库看到 Star 数破万、Issue 区活跃度堪比主流框架、Docker 镜像周下载量超 20 万次… · 2026/11/3 17:36:00
treg:AI Agent统一工具接入层与代理式认证注入 1. 为什么“工具接入”成了AI Agent落地的第一道墙?我去年带团队做三个行业级Agent项目,从金融风控到工业设备预测性维护,最后都卡在同一个地方:不是模型不够强,也不是Prompt写得不好,而是调用一个内部审批… · 2026/11/3 17:36:00
智慧养老一键通系统设计与适老化改造实践 1. 项目背景与核心价值 去年参与社区智慧养老项目时,我发现很多老人面对智能设备存在"不敢用、不会用、用不好"的困境。当时调研了市面上17款老年服务产品,发现普遍存在功能单一、操作复杂的问题。直到接触到"为老服务一键通"这个解… · 2026/11/3 17:34:59
TabPFN-2.6案例研究:在真实世界表格数据上的10个成功应用 TabPFN-2.6案例研究:在真实世界表格数据上的10个成功应用 【免费下载链接】tabpfn_2_6 项目地址: https://ai.gitcode.com/hf_mirrors/Prior-Labs/tabpfn_2_6
TabPFN-2.6是一款革命性的表格预测基础模型,它通过上下文学习在单次前向传播中解决表… · 2026/11/3 18:18:59
【大数据运维】大数据常见shell命令 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:17:57
StreamTask数据流:StreamTask能力概述、Flink处理网络数据逻辑 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:17:57
LTX-LoRAs工作流配置详解:ComfyUI节点连接与参数优化指南 LTX-LoRAs工作流配置详解:ComfyUI节点连接与参数优化指南 【免费下载链接】LTX-LoRAs 项目地址: https://ai.gitcode.com/hf_mirrors/Alissonerdx/LTX-LoRAs
LTX-LoRAs 是一套专为LTX 2.3视频生成模型设计的LoRA微调模型集合,通过ComfyUI工作流配… · 2026/11/3 18:17:57
Qwen3-Omni-30B-A3B-Instruct智能健身房:会员音视频运动分析与指导 Qwen3-Omni-30B-A3B-Instruct智能健身房:会员音视频运动分析与指导 【免费下载链接】Qwen3-Omni-30B-A3B-Instruct Qwen3-Omni是多语言全模态模型,原生支持文本、图像、音视频输入,并实时生成语音。 项目地址: https://ai.gitcode.com/hf_m… · 2026/11/3 18:17:57
WorldMirror 2.0实战教程:从照片/视频到3D点云重建的完整流程 WorldMirror 2.0实战教程:从照片/视频到3D点云重建的完整流程
想要将普通照片或视频快速转换为高质量3D点云模型吗?WorldMirror 2.0作为腾讯混元团队的3D世界重建模型,提供了一套完整的端到端解决方案。本文将为你详细介绍这个强大的3D点云重… · 2026/11/3 18:17:57
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46