news 2026/7/19 16:26:55

TMS320F28003x CMPSS数字滤波器:硬件去抖与实时信号调理实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TMS320F28003x CMPSS数字滤波器:硬件去抖与实时信号调理实战

1. 项目概述与数字滤波器在实时控制中的核心价值

在电机驱动、数字电源或者任何需要高精度实时控制的嵌入式系统里,我们工程师最头疼的问题之一,就是如何从充满噪声的模拟信号中,提取出真正有用的“状态”信息。比如,你想通过一个比较器来判断电流是否过流,但实际的硬件采样信号上总是叠加着开关噪声、传导干扰,导致比较器的输出像得了“帕金森”一样疯狂抖动。如果直接用这个抖动的信号去触发保护,系统会频繁误动作,根本无法稳定工作。这时候,一个简单、高效且硬件集成的数字滤波器,就成了救命稻草。

TMS320F28003x这款TI的明星级实时微控制器,其内置的比较器子系统(CMPSS)就提供了这样一个强大的数字滤波器模块。它不像软件滤波器那样消耗宝贵的CPU周期去做复杂的数学运算,而是在硬件层面,用一套巧妙的“多数表决”机制,实时地对比较器的原始输出进行整形和去抖。你可以把它想象成一个微型“议会”:它持续观察最近一段时间内(采样窗口)的信号投票结果,只有当支持“翻转”的票数(比如从0变1)达到一个你设定的“通过门槛”(阈值)时,它才会正式宣布改变输出状态。这个机制能有效滤除短暂的干扰脉冲,确保输出信号的稳定和可靠。

我经手过不少变频器和伺服驱动项目,早期用分立元件搭建RC滤波加施密特触发器,不仅占板面积,参数还受温漂影响。后来转到软件滤波,又在中断响应和计算延迟上纠结。直到用上像F28003x这样内置硬件数字滤波器的MCU,才真正把信号调理这件事做得既可靠又省心。本文将深入拆解CMPSS中这个数字滤波器的原理、配置细节,并结合实际工程经验,分享如何让它发挥最大效能,帮你避开那些我踩过的坑。

2. CMPSS数字滤波器工作原理深度解析

2.1 核心机制:基于FIFO窗口的多数表决

CMPSS的数字滤波器,其核心是一个基于FIFO(先进先出)采样窗口的多数表决器。它的工作流程非常直观,我们可以用“投票决策”来类比理解。

首先,滤波器以固定的节奏对比较器的原始输出(0或1)进行采样。这个节奏由CLKPRESCALE参数控制,实际采样周期是(CLKPRESCALE + 1)个系统时钟周期。每次采样,新的数据被压入一个长度为SAMPWIN + 1的FIFO队列,同时最旧的一个数据被丢弃。这样,滤波器始终维护着一个最新的、固定长度的“数据快照窗口”。

滤波器的输出并非实时跟随输入,而是对这个窗口内的数据做“民意调查”。它统计窗口内与当前输出状态相反的信号个数。这里就是关键逻辑:

  • 如果当前滤波器输出是0:它会统计窗口内有多少个‘1’。只有当‘1’的数量达到或超过你设定的阈值THRESH + 1时,它才判定“民意”足够强大,将输出翻转为1。
  • 如果当前滤波器输出是1:反之,它会统计窗口内‘0’的数量。同样,只有当‘0’的数量达到THRESH + 1时,输出才会翻转为0。

这个阈值THRESH的设定有严格限制:它必须大于SAMPWIN / 2且小于等于SAMPWIN。为什么?这确保了“多数”是真正意义上的多数。如果阈值设得太低(比如小于一半),窗口内仅需少量噪声脉冲就能触发翻转,滤波效果差;如果等于窗口大小,则要求所有采样点都反转,过于迟钝,可能滤掉真实的快速边沿。通常,我们会将阈值设置为略高于窗口大小的一半,以在响应速度和抗噪能力之间取得平衡。

注意:手册和寄存器描述中反复强调SAMPWIN,THRESH,CLKPRESCALE这三个参数,内部使用的值都是你配置的值加1。例如,你向SAMPWIN位域写入9,意味着实际的采样窗口大小是10。这一点在计算滤波延时和配置时至关重要,千万不能忽略这个“+1”。

2.2 行为模型与等效C代码

为了更直观地理解,我们来看一个手册中的例子。假设SAMPWIN = 9(实际窗口大小10),THRESH = 5(实际阈值6)。

手册中的图示展示了三种情况:

  1. 窗口内有8个‘1’:当前输出为0,统计到8个‘1’ >= 阈值6,因此输出翻转为1。
  2. 窗口内有6个‘1’:当前输出为0,统计到6个‘1’ == 阈值6,输出翻转为1。
  3. 窗口内有5个‘1’:当前输出为0,统计到5个‘1’ < 阈值6,输出保持为0不变

这个过程用C语言来描述就非常清晰了,正如手册给出的伪代码:

// 假设 Num_1s_in_SAMPWIN 是窗口内‘1’的计数, Num_0s_in_SAMPWIN 是‘0’的计数 if (FILTER_OUTPUT == 0) { if (Num_1s_in_SAMPWIN >= THRESH) { // 注意:此处的THRESH指内部值,即THRESH+1 FILTER_OUTPUT = 1; } } else { if (Num_0s_in_SAMPWIN >= THRESH) { FILTER_OUTPUT = 0; } }

这段代码完美诠释了其“滞回”特性:输出状态改变需要克服一个“惯性”,这个惯性的大小就是阈值。这本质上就是一个数字化的施密特触发器,提供了抗噪声的迟滞功能。

2.3 滤波器带来的信号延迟分析

天下没有免费的午餐,滤波在提升稳定性的同时,必然会引入延迟。CMPSS数字滤波器的延迟由三部分组成:

  1. 采样建立延迟:这是最核心的延迟。在最坏情况下,假设当前输出为0,输入信号从0跳变到1。滤波器需要等待足够多的‘1’样本进入窗口并达到阈值,输出才会翻转。这个时间至少是(THRESH) * (CLKPRESCALE + 1) * T_sysclk。这里THRESH是寄存器配置值(内部THRESH+1中的那个THRESH)。为什么是THRESH而不是THRESH+1?因为在新信号跳变后,窗口内可能还残留着一些旧状态的样本。在最坏情况下,需要THRESH个新状态的样本才能覆盖掉旧状态的影响并达到阈值。
  2. 同步器延迟:比较器的输出是异步的,需要先经过一个同步器同步到系统时钟域,这会引入1-2个系统时钟周期(sysclk)的固定延迟。
  3. 滤波器与锁存器路径延迟:如果信号经过数字滤波器,滤波器本身有约2个sysclk的处理延迟(如果旁路滤波器,则无此延迟)。如果使用锁存输出,还会额外增加1个sysclk的锁存延迟。

实操心得:在计算系统响应时间,特别是用于过流保护等关键保护回路时,必须把滤波器的延迟考虑进去。例如,系统时钟为100MHz (T_sysclk=10ns),设置CLKPRESCALE=9(采样周期100ns),THRESH=5。那么仅采样建立最坏延迟就是5 * 100ns = 500ns。加上同步和路径延迟,总延迟可能接近600ns。这对于高速开关(如几十kHz的PWM)的系统保护来说,是需要精细权衡的:延迟太长保护太慢,太短又容易误触发。

3. 数字滤波器的配置与初始化实战

理解了原理,我们来看如何动手配置。CMPSS的配置需要遵循一个明确的顺序,乱序可能导致滤波器工作异常或输出不确定。

3.1 完整的初始化序列

手册18.5.1节给出了推荐的初始化步骤,我结合工程实践,将其细化为以下可操作的流程:

  1. 配置并使能比较器:这是源头。通过COMPCTL寄存器配置比较器的输入源(内部DAC或外部引脚)、输出是否反相(COMPxINV),最后置位COMPDACE使能比较器和DAC模块。
  2. 配置数字滤波器参数:这是核心配置步骤。针对需要滤波的比较器输出(高边CTRIPH或低边CTRIPL),配置对应的滤波器控制寄存器:
    • CTRIPxFILCTL.SAMPWIN:设置采样窗口大小。例如,想观察最近10个样本,则写入9。
    • CTRIPxFILCTL.THRESH:设置表决阈值。必须满足SAMPWIN/2 < THRESH <= SAMPWIN。例如SAMPWIN=9时,THRESH可设为5,6,7,8,9。通常设为6或7能在抗噪和响应间取得较好平衡。
    • CTRIPxFILCLKCTL.CLKPRESCALE:设置采样时钟预分频。这决定了滤波器的“反应速度”。设为0表示每个系统时钟采样一次,最快但也可能把高频噪声采进来。需要根据噪声的主要频率来设定。例如,系统时钟100MHz,开关噪声主要分布在1MHz左右,可以将CLKPRESCALE设为49,使得采样周期为500ns(2kHz采样率),能有效滤除1MHz的噪声。
  3. 初始化滤波器FIFO:这是一个非常关键但容易被忽略的步骤!上电或使能后,滤波器FIFO的内容是未知的。必须向CTRIPxFILCTL.FILINIT位写1。这个操作会将当前滤波器的输入值(即同步器后的比较器输出)一次性填充到整个FIFO窗口中。这确保了滤波器从一个确定的、与当前输入一致的状态开始工作,避免了启动时的误触发。
  4. 清除状态锁存:如果你计划使用锁存输出路径(CTRIPxSELCTRIPOUTxSEL配置为3),需要通过COMPSTSCLR寄存器中的xLATCHCLR位(写1)来清除可能存在的旧锁存状态。
  5. 配置输出路径:通过COMPCTL寄存器的CTRIPxSELCTRIPOUTxSEL位域,选择你需要的信号路径。是直接用异步的原始比较器输出(路径0),还是用同步后的(路径1),或者滤波后的(路径2),亦或是滤波并锁存的(路径3)?这决定了最终送到ePWM或GPIO等目标模块的信号特性。
  6. 配置目标模块:最后,通过X-BAR(交叉开关)将CMPSS产生的CTRIPCTRIPOUT信号路由到目标外设,例如连接到ePWM的Trip-Zone输入以触发关断,或者连接到GPIO用于监控。

3.2 关键寄存器详解与配置示例

我们以配置高边比较器(COMPH)的数字滤波器为例,看看具体的代码如何编写。假设我们希望窗口大小为8个样本,阈值为5个样本,采样周期为系统时钟的16分频(即CLKPRESCALE = 15)。

// 步骤1:使能比较器,配置负端输入为内部DAC,输出不反相 Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0; // 负端输入来自内部DAC Cmpss1Regs.COMPCTL.bit.COMPHINV = 0; // 输出不反相 Cmpss1Regs.COMPCTL.bit.COMPDACE = 1; // 使能比较器和DAC // 步骤2:配置高边数字滤波器参数 Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN = 7; // 窗口大小 = 7 + 1 = 8 Cmpss1Regs.CTRIPHFILCTL.bit.THRESH = 4; // 阈值 = 4 + 1 = 5 (需满足 8/2=4 < 5 <= 8) Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 15; // 采样周期 = (15+1)=16个sysclk // 步骤3:初始化滤波器FIFO Cmpss1Regs.CTRIPHFILCTL.bit.FILINIT = 1; // 写1初始化FIFO为当前输入值 // 步骤4:清除高边锁存状态(如果使用锁存路径) Cmpss1Regs.COMPSTSCLR.bit.HLATCHCLR = 1; // 步骤5:配置高边输出使用滤波后的信号(非锁存) Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 2; // CTRIPH 来源 = 数字滤波器输出 Cmpss1Regs.COMPCTL.bit.CTRIPOUTHSEL = 2; // CTRIPOUTH 来源 = 数字滤波器输出 // 步骤6:通过X-BAR将CTRIPH连接到ePWM1的Trip-Zone输入 // 假设使用CTRIPH1连接到TZ1(具体寄存器请参考器件TRM的X-BAR章节) InputXbarRegs.INPUT7SELECT = 60; // 将CTRIPH1 (INPUTXBAR输入60) 连接到内部INPUT7 EPwm1Regs.TZCTL.bit.TZA = 2; // 配置TZ1事件触发时,将EPWM1A输出置高

注意事项FILINIT位是“写1生效”类型。写1后,硬件会自动将其清零。因此,你不需要手动清零该位。在每次希望强制重置滤波器FIFO状态时(比如比较器参考电压DAC值发生剧烈变化后),都可以再次执行此操作。

4. 与ePWM联动的进阶应用与校准

4.1 同步与消隐信号:LATCHCLR, EPWMSYNCPER, EPWMBLANK

在电机控制和数字电源中,CMPSS常常需要和ePWM模块紧密配合,实现周期同步的保护或控制。这里涉及到三个关键信号:

  • LATCHCLR:这是一个复位信号,可以清零数字滤波器的输出锁存器。它可以通过软件(xLATCHCLR位)产生,也可以由EPWMSYNCPER信号在使能(xSYNCCLREN=1)时自动产生。
  • EPWMSYNCPER:ePWM的周期同步信号。它通常在每个PWM周期开始时产生。将其连接到CMPSS并启用SYNCCLREN,可以实现每个PWM周期开始时自动清零滤波器的锁存状态,这对于周期性的峰值电流保护等场景非常有用,确保每个周期独立判断。
  • EPWMBLANK:ePWM的消隐信号。它通常在一个PWM周期开始后的一段时间内有效(例如,为了避免开关管开通过程中的噪声误触发保护)。通过设置COMPDACCTL.BLANKEN=1并选择正确的BLANKSOURCE,可以用EPWMBLANK来“拉长”LATCHCLR信号。在消隐期内,即使发生过流,锁存器也不会被置位,从而实现了硬件级的“盲区”时间设置。

配置心得:当使用内部DAC的斜坡发生器功能,并且通过COMPDACCTL.SWLOADSEL=1选择在EPWMSYNCPER时更新DAC值时,务必先配置好ePWM模块的时基。因为如果ePWM的TBCTRTBPRD都为0,EPWMSYNCPER会一直保持高电平,导致DAC值被立即加载,可能打乱你预设的斜坡更新时序。

4.2 CMPSS的校准:消除偏移误差

手册18.6.3节详细介绍了校准流程,这是实现高精度比较的关键。CMPSS存在两种偏移误差:

  1. 比较器输入参考偏移:当比较器两端都接外部引脚时,主要考虑这个误差。
  2. 内部DAC静态偏移误差:当比较器反相端接内部DAC时,这个误差包含了比较器本身的偏移。通常我们使用内部DAC作为参考,所以主要校准此项。

校准的本质是:寻找使比较器状态发生翻转的那个精确的DAC码值。手册提供了一个“向下扫描”的校准流程,我将其整理为更易于实现的步骤,并加入一些实操注释:

  1. 准备工作

    • 在比较器同相端(CMPINxP)施加一个稳定、干净的直流电压V_target(即你希望触发比较的电压)。
    • 建议暂时关闭迟滞功能(COMPHYSCTL.COMPHYS=0),校准完成后再开启。
    • 如果信号有噪声,务必启用数字滤波器并设置合理的参数,使用锁存输出(COMPSTS.COMPxLATCH)来观察状态。
  2. 执行校准扫描

    • 步骤A:将内部DAC值设置为最大值(0xFFF)。或者,如果你知道V_target的大致值、DAC的静态误差(V_offset)并想留点余量(V_margin),可以估算一个起始码值:DAC_start = (V_target + V_offset + V_margin) / V_LSB
    • 步骤B:将DAC值递减1。
    • 步骤C:等待足够时间让DAC输出稳定(通常几个微秒即可,具体见数据手册DAC建立时间)。
    • 步骤D:清除锁存状态(写HLATCHCLR=1)。
    • 步骤E:等待一小段时间(例如1-2个采样滤波周期),让信号可能触发锁存。
    • 步骤F:读取COMPSTS.COMPHLATCH
      • 如果为1,说明比较器已翻转,当前DAC值(或前一个值)就是翻转点DAC_trip强烈建议进行验证:将DAC值加1,清除锁存后再读,应发现锁存为0,这确认了翻转阈值的存在。
      • 如果为0,回到步骤B继续递减扫描。
  3. 应用校准结果:得到DAC_trip后,你在软件中设置保护阈值时,就应该使用这个校准后的值,而不是单纯根据电压计算出的理论码值。例如,你希望过流点在2.5V触发,理论DAC码值是2048,但校准发现实际在码值2060时才翻转,那���你的保护阈值就应设为2060。

避坑技巧:校准过程最好在系统上电初始化、温度相对稳定时进行。对于温度变化大的环境,可以考虑在不同温度点下进行校准并存储补偿曲线。如果V_target是变化的(如交流采样),上述静态校准法不适用,需要考虑其他动态补偿或使用更复杂的校准策略。

5. 常见问题排查与调试经验实录

即使理解了原理和配置,在实际调试中还是会遇到各种问题。下面是我总结的几个典型场景和排查思路。

5.1 滤波器输出无反应或始终不变

  • 症状:输入信号明显变化,但读取COMPSTS.COMPxSTSCOMPxLATCH始终为0或1。
  • 排查步骤
    1. 检查比较器前端:用示波器直接测量比较器同相和反相输入端的实际电压,确保比较器本身有正确的输出跳变。可以暂时旁路滤波器(将CTRIPxSEL设为0或1),看异步或同步输出是否正常。
    2. 确认滤波器使能与参数:检查是否配置了正确的滤波器寄存器(高边CTRIPHFILCTL还是低边CTRIPLFILCTL)。确认SAMPWINTHRESH值符合SAMPWIN/2 < THRESH <= SAMPWIN的关系。一个常见的错误是THRESH设置等于或小于SAMPWIN的一半,导致滤波器过于敏感或逻辑错误。
    3. 检查FILINIT初始化:确认在配置完滤波器参数后,对FILINIT位进行了写1操作。没有初始化,FIFO内容是随机的,可能导致输出卡死。
    4. 检查时钟与预分频:确认CLKPRESCALE设置是否过大。如果设置成65535,采样间隔极长,信号变化后需要等待很久才能在滤波器输出上看到反应。
    5. 检查输出路径选择:确认COMPCTL.CTRIPxSELCTRIPOUTxSEL选择的是你想要的路径(例如路径2是滤波器直接输出)。如果你监控的是锁存器(COMPxLATCH),还需要检查LATCHCLR信号是否将其意外清除了。

5.2 滤波器响应延迟与系统保护时间的矛盾

  • 症状:过流保护动作太慢,导致器件损坏;或者为了快速保护而减小滤波,又导致误触发。
  • 分析与解决
    • 量化计算延迟:如第2.3节所述,精确计算滤波器最坏情况延迟。公式:T_delay_filter ≈ (THRESH * (CLKPRESCALE+1) + 2 + 1) * T_sysclk(假设使用锁存输出)。其中THRESHCLKPRESCALE是寄存器写入值。
    • 分级保护策略:这是工业界的常见做法。设置两重比较:
      1. 硬件快速保护:使用未经滤波或轻度滤波(小窗口、小阈值)的CTRIP信号,直接连接到ePWM的Trip-Zone,配置为“一次性”或“周期性地”强制拉高/拉低PWM输出。这种保护延迟极短(几十纳秒),用于应对直通等致命故障。
      2. 软件滤波保护:使用经过充分滤波的数字滤波器输出,连接到GPIO或中断。在中断服务程序中,进行更复杂的判断和系统级保护(如软关断、报错)。这种保护用于处理过载、一般性过流等。
    • 利用ePWM消隐:对于每个PWM周期开始时的开关噪声,使用EPWMBLANK信号屏蔽掉那段时期的比较器输出,而不是完全依赖数字滤波器来滤除,这样可以设置更短的滤波器窗口,减少有用信号的延迟。

5.3 校准后阈值仍存在漂移或不准

  • 症状:按照流程校准后,在实际运行中触发点还是会偏移,尤其在温度变化或长时间运行后。
  • 可能原因与对策
    1. 参考电压不稳:检查给CMPSS内部DAC供电的VDDAVDAC电源质量。纹波过大或温漂会导致DAC输出基准变化。确保电源电路有足够的去耦电容(如10uF钽电容并联0.1uF陶瓷电容)。
    2. 输入信号噪声:校准时的直流信号很干净,但实际运行中是带有噪声的交流或脉动信号。噪声会导致比较器在阈值点附近频繁抖动,即使经过滤波,其统计意义上的翻转点也可能与纯直流校准点有偏差。确保信号调理电路(如运放、RC滤波)的带宽和噪声抑制满足要求。
    3. 温度漂移:比较器和DAC的偏移参数本身具有温度系数。如果产品工作温度范围宽,需要在高温和低温下分别校准,并在软件中存储温度补偿系数。可以使用片内温度传感器进行辅助。
    4. DAC建立时间不足:在斜坡发生器模式下,如果DAC值更新速率过快(EPWMSYNCPER频率高),而DAC的建立时间不够,会导致实际输出电压未达到目标值就进行比较,引入误差。确保DAC的更新周期大于其数据手册中规定的建立时间。

5.4 寄存器配置看似正确但功能异常

  • 症状:代码检查多遍,寄存器值也都写对了,但CMPSS就是不工作。
  • 终极排查清单
    1. 外设时钟使能:检查CPUSYS0模块中的CLKCFG寄存器,确保CMPSS模块的时钟已经使能。这是新手最容易掉进去的坑。
    2. EALLOW保护:许多CMPSS的关键寄存器(如COMPCTL,COMPHYSCTL,CTRIPxFILCTL等)受EALLOW保护。在写入这些寄存器前,必须执行EALLOW;指令,写完后执行EDIS;
    3. 寄存器位域理解错误:再次确认你对“+1”规则的理解。你写入SAMPWIN=7,意味着窗口是8个样本,计算延迟和阈值时要使用8,而不是7。
    4. 信号路径连接:确认X-BAR的配置是否正确将CMPSS的输出信号连接到了目标外设(如ePWM、GPIO)。使用CCS的寄存器查看器和内核寄存器查看工具,实时检查相关寄存器的值以及GPIO复用配置。
    5. 仿真器干扰:在极端敏感的模拟比较电路中,仿真器的接地噪声有时会干扰比较结果。尝试在断开仿真器,让芯片独立运行的情况下测试,或者优化PCB的接地和布局。

调试CMPSS这类混合信号模块,一定要“软硬结合”。逻辑分析仪或示波器(最好是多通道的)是必不可少的工具,用它同时抓取比较器输入电压、原始比较器输出(异步)、滤波后输出以及最终的PWM信号,可以清晰地看到信号在每一个环节的形态和延迟,是定位问题最快的方法。

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

065、AF自动对焦:CDAF、PDAF与激光/ToF融合方案

065、AF自动对焦:CDAF、PDAF与激光/ToF融合方案 去年夏天,我在产线盯一个旗舰机的对焦调试,遇到一个让人抓狂的bug:室内灯光下对焦飞快,一到户外强光下,镜头就开始“呼吸”——来回抽动,死活锁不住焦。产线老大站在旁边,手里拿着温度计,一脸“你再搞不定我就把你扔进烤…

作者头像 李华
网站建设 2026/7/19 16:23:26

Function Calling 编排引擎设计:DAG + 条件分支的工作流定义

Function Calling 编排引擎设计&#xff1a;DAG 条件分支的工作流定义 一、LLM 的自由调用是一把双刃剑 让 LLM 自由决定调用哪些工具、以什么顺序调用&#xff0c;在简单场景下工作得很好。但当任务变得复杂时&#xff0c;问题就暴露了&#xff1a; 三个工具应该按 A→B→C 的…

作者头像 李华
网站建设 2026/7/19 16:22:47

3步让经典DirectX游戏在Windows 11上完美运行:DDrawCompat终极指南

3步让经典DirectX游戏在Windows 11上完美运行&#xff1a;DDrawCompat终极指南 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/7/19 16:21:26

ID-based RAG FastAPI故障排除:常见问题与解决方案大全

ID-based RAG FastAPI故障排除&#xff1a;常见问题与解决方案大全 【免费下载链接】rag_api ID-based RAG FastAPI: Integration with Langchain and PostgreSQL/pgvector 项目地址: https://gitcode.com/gh_mirrors/ra/rag_api ID-based RAG FastAPI是一个集成Langcha…

作者头像 李华
网站建设 2026/7/19 16:20:29

028-如何在费曼过程中做有价值的笔记

费曼学习法系列 第028篇 如何在费曼过程中做有价值的笔记 一、学习笔记 vs 费曼笔记 大多数人的"学习笔记",本质上是摘抄——把书上的重点句子抄下来,或者把老师的板书复制一遍。这种笔记对记忆有一点帮助,但对"理解"的促进微乎其微。你只是在从源文…

作者头像 李华