news 2026/8/31 18:59:11

DSP28335全桥LLC数字软启动:原理、策略与工程实现详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DSP28335全桥LLC数字软启动:原理、策略与工程实现详解

简介:本资源是一套面向电力电子工程师与嵌入式开发者、专为TMS320F28335 DSP平台设计的全桥LLC谐振变换器数字控制软启动程序,解决高频开关电源启动过程中的电流冲击、电压过冲及器件应力过大等关键问题,适用于电动车充电模块、通信电源、工业DC-DC变换器等高可靠性场景。压缩包共151个文件,含9个核心C源文件、32个头文件(.h)、18个工程配置文件(.prefs)、17个XML工程描述及6个静态库(.lib),涵盖ADC校准、EPWM驱动、PIE中断向量、系统时钟与CPU定时器等底层驱动模块,整体体积仅370KB,结构紧凑且可直接集成至CCS开发环境。已有1639人学习下载,提供完整可编译工程框架、频率斜坡控制逻辑、启动状态机实现及硬件外设初始化序列,便于读者快速理解LLC软启动的数字控制机制,并基于实际硬件开展参数调试与故障复现。

1. 项目概述:一个DSP28335驱动的全桥LLC数字软启动程序

最近在整理硬盘里的老项目,翻出来一个名为“LLC软启动程序18.1.16.zip”的压缩包。看到这个文件名,很多做电源开发,特别是搞数字控制电源的朋友,估计会心一笑。这玩意儿,说白了就是一个基于TI的DSP28335芯片,为全桥LLC谐振变换器编写的数字软启动程序。它要解决的核心问题,就是在LLC电源上电的瞬间,如何让输出电压平稳、无过冲地建立起来,同时避免谐振腔电流过大、防止磁芯饱和,最终保护开关管,提升整机可靠性。

如果你正在或打算用DSP28335、C2000系列甚至STM32等MCU来做数字控制的LLC电源,那么这个软启动过程的设计与实现,绝对是你绕不开的坎。LLC拓扑本身效率高、EMI好,但它的软启动比普通的PWM变换器要复杂得多,因为它涉及到谐振腔(电感Lr、电容Cr和变压器励磁电感Lm)的动态过程。粗暴地直接给一个固定频率或占空比,很容易导致启动失败甚至炸机。这个程序包,可以看作是一个经过实际工程验证的“启动剧本”,它详细记录了如何用数字芯片的“大脑”,去温柔地唤醒LLC这个“精密机械”。

2. 全桥LLC谐振变换器与软启动的核心挑战

2.1 LLC拓扑的独特之处与启动难点

要理解为什么需要专门的软启动程序,得先看看LLC是怎么工作的。LLC谐振变换器,顾名思义,核心是一个由谐振电感Lr、谐振电容Cr和变压器励磁电感Lm构成的谐振网络。它通过调节开关频率(fs)来改变谐振网络的阻抗,从而调节输出电压。其电压增益曲线是一个随频率变化的驼峰形状,在谐振频率点(fr)增益为1,低于谐振频率(fs<fr)时增益大于1,高于谐振频率(fs>fr)时增益小于1。

启动时的难点就藏在这条增益曲线和动态过程里:

  1. 初始状态问题:上电前,输出电容电压为零。如果一开始就让开关频率在额定工作点(通常高于谐振频率,增益<1),那么由于增益不足,根本无法建立起输出电压。如果贸然将频率降到增益很高的区域,又会导致巨大的谐振电流。
  2. 变压器偏磁与饱和风险:全桥拓扑中,任何微小的驱动信号不对称或器件参数差异,都会导致变压器伏秒积不平衡,产生直流偏磁。在启动阶段,这种不平衡会被放大,极易引起变压器磁芯饱和,饱和后的电感量骤降,会导致开关管承受巨大的尖峰电流而损坏。
  3. 输出电容充电冲击:启动过程本质上是给大容量的输出电容充电。 if not properly controlled, the inrush current can be enormous. 对于LLC,这个充电电流路径就是谐振电流。如果控制不当,谐振电流峰值会远超正常值。
  4. 闭环控制冲突:在输出电压未建立时,电压反馈环是失效的。如果此时就投入闭环PID调节,误差信号会极大,导致控制器输出(通常是频率指令)瞬间跑到极限值,引发异常。

因此,LLC的软启动不是一个简单的“斜坡”就能搞定,它需要一套精心设计的时序和控制逻辑,来平稳度过这个危险的“新生儿”阶段。

2.2 数字控制(DSP28335)带来的优势与任务

用DSP28335这类数字信号处理器 instead of 传统的模拟控制器来做LLC,优势很明显:灵活性极高。你可以编程实现任何复杂的控制算法、状态机和保护逻辑。对于软启动而言,数字控制的核心任务包括:

  • 频率扫频策略:制定频率从高到低(或特定轨迹)的变化规律。
  • 脉宽(或占空比)预调节:在全桥LLC中,有时还会配合移相控制来限制启动电流。
  • 状态监控与切换:实时监测输出电压、输入电流或谐振电流,根据预设的阈值,精准地在“启动模式”、“闭环模式”和“故障保护模式”之间切换。
  • 偏磁抑制算法:在启动阶段就加入变压器原边电流的直流分量检测与控制,防止饱和。

DSP28335凭借其高性能的32位CPU、高精度的PWM模块(支持死区独立设置、移相控制)和快速的ADC,非常适合完成这些任务。这个“LLC软启动程序”,就是把这些策略用C语言代码固化下来。

3. 软启动程序架构与核心策略解析

基于常见的工程实践,一个稳健的全桥LLC数字软启动程序,其架构通常包含以下几个阶段,我们可以以此来拆解这个“18.1.16”版本程序可能的设计思路。

3.1 阶段一:初始高频预充电与状态初始化

这是上电或使能信号到来后的第一步。程序不会立即开始输出有效的PWM驱动信号。

  1. DSP与外设初始化:配置系统时钟、GPIO、PWM模块(ePWM)、ADC模块、中断(如PWM周期中断、ADC采样中断)。特别注意PWM模块的配置,要将所有输出设置为高阻态或强制低电平,确保开关管处于关断状态。
  2. 高频启动:将PWM的开关频率设置在一个远高于谐振频率(例如2-3倍fr)的固定值。在这个频率下,LLC谐振腔的增益非常低,阻抗很高。然后,以很小的占空比(或移相角)释放PWM输出。此时,能量传递极少,主要目的是:
    • 为控制器自身和驱动电路供电:如果辅助电源来自母线或输出,这一步可为它们建立初始电压。
    • 试探性建立反馈:让ADC能够采样到微弱的输出电压信号,确认电路连接正常。
    • 避免直通:确保所有死区时间配置生效。

注意:此阶段持续时间很短(几十毫秒),且必须严格限制脉宽或移相角,防止任何可观的电流流过。

3.2 阶段二:受控频率扫频与电压建立

这是软启动的核心阶段。程序控制开关频率从初始高频,按照一定规律向目标工作频率(通常略高于fr)扫描。

  1. 扫频曲线选择:常见的策略有线性扫频和指数扫频。
    • 线性扫频:频率随时间线性下降。实现简单,但可能在增益变化快的区域(接近fr)导致电流变化率也大。
    • 指数扫频:频率随时间指数下降。初期下降快,后期下降慢。这更符合LLC增益曲线的特性——在低频高增益区快速通过以减少应力,在目标频率附近慢速逼近以稳定电压。程序很可能采用了指数或分段线性的扫频策略。
  2. 关键参数与实现
    • 扫频起始/终止频率:由程序中的宏定义或可调参数设定,例如F_START = 250kHz,F_TARGET = 105kHz(假设fr=100kHz)。
    • 扫频时间/步长:在PWM周期中断服务程序(ISR)中,每次中断对频率设定值进行一次递减。递减的步长delta_f决定了扫频速度。delta_f本身可以是固定的,也可以根据输出电压反馈进行动态调整(自适应扫频)。
    • 配合移相控制:在全桥拓扑中,单纯扫频可能还不够。程序可能会在扫频初期,同时施加一个较大的移相角(即非对称占空比),以进一步限制输入到谐振网络的电压幅值,从而限制电流。随着输出电压上升,移相角逐渐减小至零(对称驱动)。
// 示例代码片段(示意): // 在PWM周期中断中 interrupt void epwm1_isr(void) { if (soft_start_stage == STAGE_SWEEP) { // 计算下一步频率 current_freq = calc_next_freq(current_freq, target_freq, soft_start_time); // 更新PWM周期寄存器 EPwm1Regs.TBPRD = SYSTEM_FREQ / (current_freq * 2); // 假设采用上下计数模式 // 监测输出电压 if (Vout_adc > VOUT_THRESHOLD_1) { soft_start_stage = STAGE_TRANSITION; } // 可选:动态调整移相角 phase_shift_angle = calc_phase_shift(Vout_adc); update_phase_shift_registers(phase_shift_angle); } // ... 其他处理 }

3.3 阶段三:闭环切入与平稳过渡

当输出电压达到额定值的某个比例(例如80%-90%)时,软启动进入尾声。

  1. 切换判据:程序持续比较ADC采样到的输出电压与一个预设的切换阈值(VOUT_SOFT_START_END)。一旦超过,则准备切入闭环。
  2. 无扰切换:这是关键技巧。不能突然将控制权从开环扫频程序交给闭环PID,否则会引起扰动。
    • PID初始化:在切入前,根据当前的实际频率和输出电压,计算并初始化PID控制器的积分项(Iterm)和上一次误差,使得PID控制器的输出(频率指令)恰好等于当前的扫频频率。这被称为“无扰跟踪”或“bumpless transfer”。
    • 切换动作:将控制标志位从“软启动模式”切换到“闭环模式”。此后,PWM周期中断中的控制算法,将从更新扫频曲线变为执行PID计算。
  3. 闭环稳定:切入闭环后,PID控制器开始精细调节频率,将输出电压拉至精确的额定值,并进入稳态运行。

3.4 阶段四:故障监测与保护贯穿始终

在整个软启动过程中,保护电路必须全程有效。程序需要实时监测:

  • 输入过流/谐振电流过流:通过采样电阻和ADC监测。一旦超过安全阈值,立即封锁PWM输出。
  • 输出电压过冲:如果电压上升速度异常快,可能意味着负载极轻或控制异常,需要干预。
  • 软启动超时:设置一个最长的软启动时间(如100ms)。如果超过此时间输出电压仍未达到切换阈值,则判定启动失败,进入故障处理程序。

这些保护逻辑通常在一个更高优先级的故障保护中断(如GPIO外部中断或专门的比较器中断)中实现,确保响应速度。

4. DSP28335程序关键模块实现细节

打开“LLC软启动程序18.1.16.zip”,里面的代码结构通常会围绕DSP28335的外设模块组织。我们来深入几个核心模块的实现细节。

4.1 PWM模块(ePWM)配置:全桥移相驱动生成

全桥LLC需要四路PWM信号,控制两个桥臂的上下管,并且要支持移相控制。

  1. ePWM对配置:使用两个ePWM模块(例如ePWM1和ePWM2)来生成全桥驱动。ePWM1A和1B驱动原边一个桥臂的上下管,ePWM2A和2B驱动另一个桥臂。
  2. 死区设置(DB):每个ePWM模块的A和B输出之间必须插入死区时间,防止上下管直通。通过配置DBCTLDBRED/DBFED寄存器来设定死区上升沿和下降沿的延迟。死区时间的选择至关重要,必须大于开关管的开通关断时间之和并留有余量,通常通过实验确定。
  3. 移相实现:这是实现软启动中限流的关键。两个ePWM模块之间可以设置相位关系。通过配置TBPHS(时间基准相位)寄存器,让ePWM2的计数器相对于ePWM1的计数器有一个相位偏移。这个偏移量就对应了移相角。在软启动过程中,通过动态修改TBPHS的值,就能实现移相控制。
  4. 频率调节:通过修改TBPRD(时间基准周期)寄存器来改变开关频率。在扫频阶段,就是在中断中不断计算并更新这个值。
// 示例:配置ePWM1和ePWM2为移相模式(简化) // ePWM1 作为主时基 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 上下计数模式 EPwm1Regs.TBPRD = period_value; // 设置周期,决定频率 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 主模块不使用相位加载 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 主模块不同步输出 // ePWM2 作为从时基,相位可调 EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm2Regs.TBPRD = period_value; // 周期与ePWM1相同 EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // 使能相位加载 EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // 同步信号输入 EPwm2Regs.TBPHS.half.TBPHS = phase_shift_value; // 关键!设置移相值 // 同步信号需要配置EPwm1Regs.ETSEL和ETPS来产生同步脉冲

4.2 ADC模块配置:关键状态量的精准采样

软启动和闭环控制都依赖于精准的反馈。需要采样的信号通常包括:

  • 输出电压(Vout):用于判断启动阶段和闭环反馈。
  • 输出电流(Iout):用于过载保护。
  • 谐振电流或原边电流(I_Lr / I_pri):用于过流保护和可能的峰值电流控制。这是启动阶段最重要的保护信号
  • 输入电压(Vin):用于前馈补偿或保护。

DSP28335的ADC支持序列采样(Sequencer)。在程序中,通常会配置一个固定的采样序列,由PWM的某个事件(如计数器为零)触发,实现同步采样,减少计算延迟。采样时刻的讲究:对于谐振电流,为了准确捕捉峰值,采样时刻通常设置在开关周期的中间点或根据谐振波形特性确定。这可以通过配置ePWM的SOC(Start-Of-Conversion)触发信号来实现。

4.3 控制算法实现:从扫频到PID

  1. 扫频算法函数:会有一个专门的函数(如SoftStart_FrequencySweep())来计算下一次中断时的目标频率。这个函数可能实现指数规律:f_next = f_start * exp(-k * t) + f_target * (1 - exp(-k * t))在实际编程中,为了避免浮点运算,常用查表法或定点数运算。程序里可能有一个预计算的频率表(数组),扫频过程就是按索引读取这个表。
  2. PID控制器实现:切入闭环后,一个经典的数字增量式PID会被调用。其位置在PWM周期中断或ADC采样完成中断中。
    // 增量式PID示例 error = Vout_ref - Vout_measured; delta_u = Kp * (error - error_1) + Ki * error + Kd * (error - 2*error_1 + error_2); freq_command = freq_command_1 + delta_u; // 频率指令 // 限幅 if (freq_command > FREQ_MAX) freq_command = FREQ_MAX; if (freq_command < FREQ_MIN) freq_command = FREQ_MIN; // 更新历史误差 error_2 = error_1; error_1 = error; freq_command_1 = freq_command; // 更新PWM周期寄存器 update_pwm_period(freq_command);
    PID参数整定Kp, Ki, Kd的参数对动态响应至关重要。通常需要在硬件上通过“试凑法”或一些自整定方法来确定。程序注释或头文件中可能会给出一组参考值。

4.4 状态机与主程序流程

整个软启动过程最适合用状态机(State Machine)来描述。主循环或中断中会维护一个状态变量。

typedef enum { STATE_INIT = 0, STATE_STANDBY, STATE_SOFT_START_PRE_CHARGE, STATE_SOFT_START_SWEEP, STATE_CLOSED_LOOP, STATE_FAULT, STATE_SHUTDOWN } SystemState_t; SystemState_t gSystemState = STATE_INIT; void main_loop(void) { switch(gSystemState) { case STATE_SOFT_START_SWEEP: // 执行扫频逻辑,监测电压电流 if (check_fault()) { gSystemState = STATE_FAULT; } else if (Vout > VOUT_THRESHOLD_CL) { init_pid_for_bumpless_transfer(); // 无扰切换初始化 gSystemState = STATE_CLOSED_LOOP; } break; case STATE_CLOSED_LOOP: // 执行闭环控制 break; case STATE_FAULT: // 执行故障处理,如关闭PWM,点亮指示灯 disable_pwm(); break; // ... 其他状态 } }

5. 工程实践:调试、问题排查与参数整定

有了程序框架,把它下载到DSP28335开发板或目标板中,才是真正挑战的开始。下面分享一些从“LLC软启动程序18.1.16”这类项目中积累的实战经验。

5.1 调试工具与观测方法

  1. 数字示波器是眼睛:至少需要四通道示波器。
    • 通道1&2:观测全桥一个桥臂的上下管驱动波形(GS电压),首要确认死区是否足够且一致
    • 通道3:观测谐振电容两端电压(Cr电压)或变压器原边电压。这是观察谐振状态最直接的窗口。
    • 通道4:观测谐振电流(用电流探头)或输出电压。将电流探头和电压探头同时使用,是分析启动过程的金科玉律
  2. 触发设置:设置为单次触发,触发条件设为“使能信号”的上升沿。这样可以完整捕获整个上电启动的瞬态过程。
  3. DSP的调试接口:利用CCS(Code Composer Studio)的实时变量观察、图形显示功能和断点,可以同步观察程序内部的状态变量(如当前频率、PID输出、ADC采样值)与实际波形的对应关系。

5.2 软启动过程常见问题与排查

以下是一个基于实际调试经验的快速排查表:

问题现象可能原因排查思路与解决措施
上电瞬间炸管(MOSFET损坏)1. 死区时间不足或设置错误。
2. 驱动电路有问题(如开通太慢,关断太慢)。
3. 软启动初始频率过低或移相角过小,导致初始电流过大。
4. 变压器存在严重偏磁,在启动时瞬间饱和。
1.首先检查死区:用示波器测量上下管GS波形,确保没有重叠。增加死区时间寄存器值。
2. 检查驱动电阻、栅极电容。确保驱动能力足够。
3.提高软启动初始频率,增加初始移相角。确保第一阶段(预充电)有效执行。
4. 加入偏磁抑制算法。检查变压器绕组和PCB布局对称性。
启动失败,输出电压无法建立1. 扫频起始频率过高,全程增益不足。
2. 扫频速度过快,系统来不及响应。
3. 负载过重,启动能量不足。
4. 反馈采样电路故障,ADC读取值错误。
1.降低扫频起始频率,确保在起始点有足够增益。
2.大幅降低扫频步长delta_f),延长扫频总时间。
3. 空载或轻载启动测试。确认电源功率设计是否足够。
4. 用万用表测量采样点电压,与ADC读取的数值对比校准。
输出电压过冲严重1. 扫频结束频率过低(过于接近或低于fr),在切入闭环时增益过高。
2. 扫频到闭环的切换点设置得太晚(阈值VOUT_SOFT_START_END太高)。
3. 闭环PID的Kp参数太大。
1.提高目标频率F_TARGET),使其在额定负载下工作在增益曲线右侧(fs>fr)的平坦区。
2.降低切换阈值,例如从90%额定输出降到80%,让闭环控制器更早介入微调。
3. 切入闭环后,先使用较小的KpKi,待稳定后再优化。
启动过程中有异响(变压器啸叫)1. 开关频率进入音频范围(<20kHz)。
2. 控制不稳定,频率在某个点振荡。
3. 变压器或电感磁芯松动。
1. 确保整个扫频范围和稳态工作频率始终高于20kHz(如65kHz以上)。
2. 检查扫频算法是否有计算溢出或逻辑错误。观察频率指令是否平滑变化。
3. 机械固定问题,需加固。
轻载启动正常,重载启动失败1. 重载时,需要更大的启动电流来建立电压,但软启动的限流措施(移相、高频率)过强。
2. 扫频时间固定,重载时电压建立慢,未达到切换阈值就超时保护了。
1.根据负载动态调整软启动参数:检测输入电流,如果启动电流未超限,可以适当加快扫频速度或减小移相角。
2.采用自适应软启动:将“软启动超时时间”与输出电压建立速度关联,或者直接以“输出电压达到阈值”作为唯一结束条件,取消固定时间限制。

5.3 关键参数整定经验

这些参数没有标准答案,需要根据你的具体LLC board(变压器参数、谐振腔参数、负载特性)来调整。以下提供一个调试顺序建议:

  1. 先定死区和保护:在开环固定频率、极小占空比下,先确保驱动波形正确,死区足够,过流保护点设置合理(可先设一个很小的值做测试)。这是安全的前提
  2. 开环扫频测试(空载):注释掉闭环切换和故障保护(仅保留硬件的过流保护), 让程序只执行扫频。用示波器观察输出电压和谐振电流波形。
    • 调起始频率:看到输出电压能缓慢上升,且电流峰值在安全范围内。
    • 调扫频速度:让电压上升曲线光滑,无台阶或抖动。
    • 调移相角:观察加入移相后,对启动电流的抑制效果。
  3. 确定切换点:在开环扫频下,找到输出电压平稳上升到额定值80%-85%时对应的频率点,将此频率作为F_TARGET的参考,将此时的电压作为VOUT_SOFT_START_END的参考。
  4. 闭环PID整定(空载):在切换点切入闭环。先将Kp, Ki, Kd全部设为零或很小值。逐步增加Kp直到系统开始有轻微振荡,然后回调至80%。再加入Ki消除静差。Kd在LLC的频率控制中通常用得少,可最后微调。
  5. 带载测试与优化:从轻载到重载,重复测试启动过程。重点关注重载启动能力和动态负载响应。可能需要根据负载情况微调软启动参数或PID参数。

最后,这个“LLC软启动程序18.1.16.zip”不仅仅是一段代码,它更是一个设计思路的载体。在实际应用中,你很可能需要根据自己变压器的谐振参数、MOSFET的特性、输出电容的大小来调整里面的每一个常数、每一条曲线。数字控制的魅力就在于这种灵活性,而理解和掌握这套启动逻辑,是让一个LLC电源从“能工作”到“可靠工作”的关键一步。调试电源是个细致活,尤其是软启动阶段,多观察波形,多记录数据,耐心地迭代参数,那个平稳光滑的启动波形出现的时候,所有的折腾都值了。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 18:58:51

RAG工程化实战:从文档解析到评估指标的完整链路

去年在做一个RAG知识库项目时&#xff0c;我连续踩了一个星期的坑。最终定位到的核心问题不在大模型&#xff0c;也不在向量数据库&#xff0c;而在PDF解析——表格里的内容总被切碎&#xff0c;检索出来的上下文和问题完全对不上。把解析层重写之后&#xff0c;效果立刻好转。…

作者头像 李华
网站建设 2026/8/31 18:56:42

基于MATLAB/Simulink的双旋翼直升机控制仿真项目全解析

简介&#xff1a;本资源是一套面向控制工程与飞行器建模方向初学者及课程设计者的MATLAB/Simulink实践项目&#xff0c;聚焦双旋翼直升机动力学建模与控制器设计&#xff0c;解决典型多输入多输出&#xff08;MIMO&#xff09;非线性系统仿真中建模抽象、状态反馈实现难、闭环验…

作者头像 李华
网站建设 2026/8/31 18:54:59

前端八股文面试:三天速通高频考点与项目实战

8月一到&#xff0c;很多准备跳槽的前端同学又开始焦虑了。打开招聘软件&#xff0c;岗位看着不少&#xff0c;但投出去的简历常常没有回音&#xff1b;好不容易约到面试&#xff0c;一面聊框架、二面问源码、三面手写代码&#xff0c;中间还夹着十几道八股文&#xff0c;稍有不…

作者头像 李华
网站建设 2026/8/31 18:53:25

微信小程序+Java后端幼教学习系统:毕设项目拆解与部署指南

简介&#xff1a;这是一套面向计算机专业本科生的毕业设计级全栈项目资源&#xff0c;聚焦幼教知识服务场景&#xff0c;解决教育类小程序系统从需求分析到部署落地的完整开发实践问题。资源包含微信小程序前端&#xff08;VueJSWXML&#xff09;、Java后端&#xff08;Spring …

作者头像 李华
网站建设 2026/8/31 18:51:10

Hermes 本地部署 vs 云端 API:一年成本对比,到底哪种更省

给你一个能直接用的成本决策框架。先说结论 Hermes 本身是一个框架层工具&#xff0c;它不决定你用什么模型&#xff0c;只负责把模型接进来用。 所以「本地部署 vs 云端 API」这个问题&#xff0c;真正的问题是——在 Hermes 里&#xff0c;你是接本地模型还是接云端 API。 这…

作者头像 李华
网站建设 2026/8/31 18:48:45

字节跳动2018校招算法笔试:从KMP到XGBoost考点全解析

字节跳动2018校招算法方向&#xff08;第三批&#xff09;这场笔试&#xff0c;我印象还挺深的。当时算法岗的竞争已经非常激烈&#xff0c;第三批笔试的题量和难度都比前两批有所升级&#xff0c;题目覆盖了从基础数据结构到机器学习、深度学习的完整知识链。很多人只刷LeetCo…

作者头像 李华