当前位置: 首页 > news >正文

基于ATA6870与ATmega32HVB的12串BMS评估板设计与实战解析

1. 项目概述:为什么选择这套方案来评估BMS?

如果你正在设计或评估一个12串锂电池的管理系统,市面上琳琅满目的BMS芯片和方案可能会让你眼花缭乱。是选择TI、ADI的明星产品,还是国产的集成方案?几年前,当我第一次接触一个需要高精度、高可靠性的储能项目时,也面临同样的选择。最终,我决定基于Atmel(现已被Microchip收购)的ATA6870和ATmega32HVB搭建一套评估板。这个组合在今天看来可能不是最“新潮”的,但它提供了一个教科书级别的、模块化清晰的BMS硬件设计范例,非常适合用来理解BMS,特别是AFE(模拟前端)和MCU(微控制器)协同工作的核心原理。

这套评估板的核心价值在于“拆解”与“学习”。ATA6870是一款经典的12通道电池监控器,负责最核心的电压、温度采集和被动均衡;而ATmega32HVB则是一个集成了高压侧NFET驱动的MCU,负责逻辑控制、通信和保护。通过亲手搭建和调试这套系统,你能透彻理解从单体电压采样、温度监控、均衡控制,到系统级保护、通信上报的完整链路。这对于无论是想入门BMS硬件设计,还是想深入理解现有BMS产品内部工作机制的工程师来说,都是一块极佳的“敲门砖”。它不追求极致的集成度或最低成本,而是追求设计的透明度和可学习性。

2. 核心芯片选型与架构解析

2.1 ATA6870:12通道AFE的经典之作

ATA6870是这套评估板的“感官系统”。它的核心任务是对12节串联的锂电池进行高精度的电压和温度监测。为什么是12串?因为这是许多中小型储能系统、电动工具、轻型电动车最常用的配置,平衡了电压等级和系统复杂度。

关键特性与设计考量:

  • 差分测量与高精度:每个电池通道都采用差分输入,直接测量相邻两节电池之间的电压,避免了累积误差。其内部ADC精度典型值在±2mV以内,这对于准确计算SOC(荷电状态)和判断电池一致性至关重要。在设计PCB时,采样走线必须等长、对称,并尽量远离功率回路,以减少噪声干扰。
  • 集成被动均衡:每个通道都集成了最大约100mA的被动均衡(Bleeding)MOSFET和电流设定电阻。被动均衡虽然效率不高,但电路简单、可靠,成本低,是评估和中小批量应用中的首选。评估板的设计会将这些均衡电阻的焊盘留出,方便你根据电池容量(通常按容量的1/20~1/10设定均衡电流)更换不同阻值的电阻。
  • 菊花链通信:这是ATA6870最精妙的设计之一,也是“bms里的afe是怎么串起来的”这个问题的经典答案。多个ATA6870可以通过专门的DCLK(数据时钟)和DIO(数据输入输出)线串联起来,形成一个菊花链。链头上的芯片(最靠近MCU的)负责与MCU通信,链上的数据像流水一样依次传递。这种方式的优点是大大减少了MCU的GPIO需求和隔离器数量,只需一对隔离通道(如数字隔离器或光耦)就能管理数十甚至上百节电池。评估板通常会预留菊花链接口,方便扩展。
  • 温度监测:芯片支持多个外部热敏电阻(NTC)输入,用于监测电池温度和环境温度。在布局时,热敏电阻的放置位置很有讲究,应紧贴电池极柱或壳体,并使用高温硅胶固定,以确保测温准确性。

注意:ATA6870的供电来自被监测的电池组本身(通过内部LDO从电池串取电)。这意味着,在设计时必须确保即使在最低工作电压(如所有电池均放空)下,芯片的输入电压也在其工作范围内。通常需要在总正(VP)和总负(VN)之间加入一个预充电电路或宽电压输入的LDO,保证系统上电时的可靠性。

2.2 ATmega32HVB:集成高压驱动的智能“大脑”

ATmega32HVB的角色是“大脑”兼“保镖”。它不仅仅是一个普通的8位AVR单片机。

核心功能剖析:

  • 集成高侧NFET驱动:这是其最大亮点。它可以直接驱动连接在电池组总正极(PACK+)和负载/充电器之间的N沟道MOSFET(即高侧开关)。省去了外部分立驱动芯片(如专用栅极驱动IC或电荷泵电路),简化了设计,提高了可靠性。评估板上你会看到一颗大电流的NFET,其栅极直接由MCU的一个专用引脚(通常标为HDG)控制。
  • 保护逻辑执行者:MCU通过SPI接口从ATA6870读取所有电池的电压、温度数据。内置的程序会判断是否发生过压(OV)、欠压(UV)、过温(OT)、欠温(UT)等故障。一旦检测到故障,MCU会立即关闭集成的NFET驱动器,切断主回路,实现硬件级的保护。这个反应速度是软件保护无法比拟的。
  • 通信枢纽:ATmega32HVB通常通过UART转TTL或CAN收发器与外部世界通信。评估板会引出UART引脚,你可以连接一个USB转TTL模块,在电脑上通过串口助手查看实时数据。更专业的应用则会搭载CAN收发器(如MCP2551或TJA1050),实现与整车控制器或上位机的BMS标准通信(如发送BMS状态、电池参数,接收BEM报文等)。
  • 数据存储:关于“bms上的flash和eeprom”,ATmega32HVB内部自带了EEPROM。这部分存储空间通常用来保存电池组的序列号、循环次数、校准参数、历史故障码等关键信息,这些信息需要在断电后保持。Flash则用于存储程序代码。评估板的固件会演示如何安全地读写EEPROM。

2.3 评估板整体架构与信号流

理解了两个核心芯片,整个评估板的架构就清晰了:

  1. 采集层:12节锂电池串联。ATA6870的12个差分输入通道(VC0-VC11)分别连接到每两节电池之间。
  2. AFE层:ATA6870持续进行电压和温度采样,并将数据存储在内部寄存器中。它通过菊花链接口(如果多片)或直接SPI接口等待MCU读取。
  3. 控制与保护层:ATmega32HVB定期(例如每秒10次)通过SPI读取ATA6870的数据。运行保护算法,控制均衡MOSFET的通断,并通过其集成驱动器控制主回路NFET的状态。
  4. 通信与接口层:MCU将处理后的数据(如总电压、电流、SOC、SOH、单体状态、故障码)通过UART或CAN发送出去。评估板还会引出编程接口(如ISP)、调试接口以及一些状态LED。
  5. 电源与辅助电路:包括为MCU和外围电路供电的LDO、电压基准源、电流采样电路(通常采用霍尔传感器或采样电阻+运放)、预充电电路、看门狗等。

这种清晰的层次化设计,就像一份“stm32f407官方评估板电路图”一样,将复杂系统模块化,让学习者可以分块理解、分块调试。

3. 评估板核心电路设计与实操要点

拿到或准备自制这样一块评估板,有几个核心电路部分需要特别关注,它们直接决定了系统的精度和可靠性。

3.1 电压采样网络与PCB布局

电压采样精度是BMS的命脉。ATA6870的输入阻抗很高,但采样路径上的任何寄生参数都会引入误差。

设计要点:

  • RC滤波网络:在每个采样点(VCx)到电池连接点之间,必须串联一个电阻(如100Ω)并并联一个电容(如100nF)到地,形成一个低通滤波器,滤除开关噪声和电磁干扰。电阻不宜过大,以免影响采样速度;电容要选择高稳定性、低泄漏的陶瓷电容(如C0G/NP0材质)。
  • 对称走线:连接电池采样点(BAT+)到滤波网络的走线,应尽量成对、等长、平行布置,减少环路面积。最好使用PCB的差分对布线规则来约束。
  • 星型接地:所有采样滤波电容的“地”,应单独通过一条较粗的走线连接到ATA6870的模拟地(AGND)引脚,形成一个“星型”接地结构,避免功率地噪声串入。
  • 远离干扰源:采样走线必须远离MOSFET、电感、电流采样电阻等大电流、高dv/dt、高di/dt的器件和走线。

实操心得:在焊接完成后,可以用高精度万用表(6位半)测量已知电压源(如基准电压芯片输出),对比ATA6870读取的值,来校准系统误差。ATA6870内部有增益和偏移校准寄存器,可以通过MCU进行软件校准。

3.2 集成高侧NFET驱动电路实战

ATmega32HVB的集成驱动简化了设计,但使用上仍有技巧。

电路连接

  1. 电池组总正(PACK+)连接到高压NFET的漏极(D)。
  2. NFET的源极(S)连接到负载/充电器正端,同时也是电流采样点。
  3. NFET的栅极(G)通过一个约10Ω的栅极电阻(用于抑制振荡)连接到MCU的HDG引脚。
  4. 在栅极和源极之间,必须连接一个稳压管(如12V~15V)和一个电阻(如10kΩ)并联。稳压管用于钳位栅源电压(Vgs),防止击穿(NFET的Vgs_max通常为±20V);电阻提供放电回路。
  5. MCU的VBAT引脚连接到电池组总正,为其内部高压电路供电。

操作逻辑

  • 使能:MCU需要先配置相关寄存器,使能高压驱动模块。
  • 开启:将HDG引脚输出高电平(内部电荷泵工作),将NFET的Vgs提升到足够电压(通常>10V),NFET导通。
  • 关闭:将HDG引脚输出低电平,NFET栅极电荷通过内部和外部电阻快速释放,NFET关断。在发生过流、短路时,MCU的硬件保护电路会强制拉低HDG,实现微秒级关断。

注意:选择NFET时,耐压(Vds)需高于电池组最高电压(12串三元锂满电约50.4V,需选60V或以上),导通电阻(Rds(on))要根据最大持续电流和散热条件选择。评估板上通常会选用TO-220封装的器件,并预留散热片安装孔。

3.3 菊花链通信的配置与隔离

当电池串数超过12串,就需要多片ATA6870。菊花链配置是关键。

硬件连接:假设有两片ATA6870(IC1管理第1-12串,IC2管理第13-24串)。

  1. MCU的SPI接口(MOSI, MISO, SCK)连接至IC1的对应引脚。
  2. IC1的DCLK_OUT连接至IC2的DCLK_IN
  3. IC1的DOUT连接至IC2的DIN
  4. IC2的DOUTDCLK_OUT可以悬空或接下拉电阻。
  5. 关键点:隔离。由于IC2的参考地是第13节电池的负极(即第12节电池的正极),这与MCU的地(通常是总负或隔离电源地)存在很高的共模电压。因此,必须在IC1与MCU之间,以及IC1与IC2之间的通信线上加入数字隔离器(如ADI的ADuM系列或Silicon Labs的Si86xx系列)。评估板设计时,会在菊花链信号线上预留隔离器的焊盘或接口。

软件流程:MCU发送数据时,数据包会依次通过IC1传递到IC2。读取数据时,MCU先发送读取IC2寄存器的命令,该命令经过IC1传到IC2,IC2的数据再通过IC1传回MCU。这需要精确的时序控制,ATA6870的数据手册会提供详细的菊花链读写波形图。

3.4 电源与辅助电路设计

MCU供电:ATmega32HVB需要一个干净的3.3V或5V电源。这个电源通常由一个低压差线性稳压器(LDO)从电池组总压或中间抽头降压得到。评估板上常用LM1117-3.3。输入电容和输出电容的选型对稳定性很重要,建议使用钽电容或低ESR的陶瓷电容。

电流采样:评估板通常采用两种方式之一:

  1. 采样电阻+差分运放:在负载回路中串联一个毫欧级精密采样电阻(如1mΩ/1W)。用一颗高共模抑制比(CMRR)的运放(如INA240)放大电阻两端的压差,输出给MCU的ADC。这种方式成本低,但存在功耗和隔离问题。
  2. 霍尔电流传感器:如ACS712/ACS723。它通过磁感应原理测量电流,电气上是隔离的,使用简单,但精度和温漂可能不如方案1。评估板为求灵活,常会同时预留两种方案的焊盘。

预充电与泄放电路:当BMS连接到一个有大容量电容的负载(如电机控制器)时,需要预充电功能。评估板会设计一个由小功率电阻和小MOSFET组成的预充电回路,与主NFET并联。上电时,先导通预充电MOSFET,通过电阻限流给负载电容充电,当负载端电压接近电池电压时,再导通主NFET。泄放电路则是在断开负载后,通过电阻放掉采样电容等处的残余电荷,确保安全。

4. 固件开发与关键功能实现

硬件是骨架,固件是灵魂。基于ATmega32HVB的固件需要实现几个核心状态机。

4.1 系统初始化与芯片配置

上电后,MCU首先进行初始化:

  1. 时钟与IO配置:设置系统时钟,配置SPI、UART、ADC、定时器等外设引脚。
  2. ATA6870初始化
    • 通过SPI发送复位命令,使AFE进入已知状态。
    • 配置工作模式(如正常采集模式、休眠模式)。
    • 配置均衡控制寄存器(设置允许均衡的电压阈值、温度阈值)。
    • 配置报警中断阈值(OV/UV/OT/UT)。
    • 如果需要,写入校准系数。
  3. ATmega32HVB高压驱动初始化:配置相关寄存器,使能高压驱动模块,但先保持NFET为关闭状态。
  4. 外设初始化:初始化ADC用于读取电流、供电电压;初始化看门狗定时器;初始化EEPROM,读取保存的参数。

4.2 主循环任务调度

一个简单而有效的调度方式是采用基于定时器中断的轮询架构。

// 伪代码示例 void main(void) { System_Init(); // 系统初始化 BMS_Init(); // BMS相关外设初始化 while(1) { if (flag_10ms) { // 10ms定时器中断置位标志 flag_10ms = 0; Task_10ms(); // 执行10ms任务 } if (flag_100ms) { // 100ms定时器中断置位标志 flag_100ms = 0; Task_100ms(); // 执行100ms任务 } if (flag_1s) { // 1s定时器中断置位标志 flag_1s = 0; Task_1s(); // 执行1s任务 } // ... 处理通信等其他事件 } } void Task_10ms(void) { // 高速任务:读取电流ADC值,进行过流保护判断 // 如果检测到过流,立即执行硬件保护关断 Read_Current_ADC(); Check_OverCurrent_Protection(); } void Task_100ms(void) { // 中速任务:通过SPI读取ATA6870的所有电压、温度数据 // 更新电池数据数组,执行电压/温度保护判断 SPI_Read_All_Cell_Data(); Update_Battery_Data(); Check_Voltage_Temperature_Protection(); // 执行被动均衡逻辑 Passive_Balancing_Control(); } void Task_1s(void) { // 低速任务:计算SOC、SOH,更新总电压、平均温度 // 组织BMS状态数据帧,通过UART/CAN发送 Calculate_SOC_SOH(); Update_System_Info(); Send_BMS_Status_Frame(); // 必要时,将关键数据写入EEPROM(注意写寿命) if (need_save) { Save_Data_To_EEPROM(); } }

4.3 保护算法与状态机实现

BMS的核心是一个多级保护状态机。通常包括:正常状态、充电禁止、放电禁止、完全关断(故障)状态。

实现逻辑

  1. 数据采集与滤波:对读取的电压、电流、温度进行软件滤波(如滑动平均滤波),避免噪声误触发保护。
  2. 阈值比较:将滤波后的值与预设的各级阈值比较。例如:
    • 一级保护(可恢复):单体电压>4.15V(预警),发出警告但不切断回路;若>4.20V(保护),则进入“充电禁止”状态,关闭充电MOSFET(或发送指令给充电器)。
    • 二级保护(硬件保护):单体电压>4.25V(严重故障),触发MCU的硬件保护功能,强制关闭所有NFET驱动,并锁存故障。通常需要外部复位或特定指令才能恢复。
  3. 延时与恢复:保护触发通常加入延时(如电压超限持续100ms),防止毛刺误动。故障恢复也需要条件,比如电压回落到安全区间并持续一段时间。
  4. 状态切换:用一个状态变量(system_state)记录当前状态,所有操作和输出都基于此状态。

4.4 通信协议与数据上报

评估板通常实现简单的串口协议或标准的CAN协议。

串口协议(自定义,简单):可以定义固定的数据帧结构,如:帧头(0xAA 0x55) + 数据长度 + 命令字 + 数据域 + 校验和数据域包含所有单体电压、温度、总压、总流、SOC、状态位等。

CAN协议(标准,推荐学习):可以遵循一些行业标准或自定义标准。例如,使用29位扩展标识符(CAN ID),定义不同的PGN(参数组编号)来区分数据。

  • ID0x18FFXX01:发送电池总电压、总电流、SOC。
  • ID0x18FFXX02:发送第1-4节单体电压。
  • ID0x18FFXX03:发送第5-8节单体电压。
  • ... 以此类推。
  • 还可以定义用于接收充电机指令或发送故障码的CAN帧。

通过CAN分析仪(如PCAN-USB)可以很方便地监控和解析这些报文,理解“bms bem报文”的组成。

5. 调试、测试与常见问题排查

评估板焊接完成后,不要急于接上电池。遵循以下步骤可以避免“烟花”。

5.1 上电前检查与静态测试

  1. 目视与连通性检查:检查有无短路、虚焊、连锡。用万用表蜂鸣档检查电源对地(GND)是否短路,这是最重要的第一步。
  2. 供电测试(不接MCU和AFE):使用可调电源,输入一个较低的电压(如5V)到板子的电源输入端,测量LDO输出是否为3.3V/5V,纹波是否正常。
  3. 芯片供电测试:插入MCU和ATA6870(如果可插拔)。上电,用手触摸芯片是否异常发烫。测量各芯片的VDD引脚电压是否正常。
  4. SPI通信测试:编写一个简单的测试程序,让MCU尝试读取ATA6870的器件ID寄存器(这是一个只读寄存器,值固定)。如果能正确读出,说明SPI硬件连接和基本时序正确。
  5. IO测试:控制LED闪烁,测试按键输入,确保MCU基本功能正常。

5.2 带载(接模拟电池)测试

使用可调电源模拟电池组!这是最安全有效的调试方法。

  1. 用4-6台可调电源(或一台多通道电源),将其输出串联,模拟3-6串电池。将电压设置在单节3.0V-4.2V之间的某个值。
  2. 将模拟的“电池组”连接到评估板的电池接口。务必确认极性正确!
  3. 上电,通过MCU读取ATA6870的电压值。与可调电源显示值或万用表测量值对比,计算误差。调整软件校准参数,使误差最小化。
  4. 测试被动均衡:通过软件强制开启某一通道的均衡MOSFET,用万用表测量该通道对应的均衡电阻两端电压,计算电流是否与设计值(如100mA)相符。
  5. 测试NFET驱动:在负载端接一个功率电阻(如10Ω/50W)作为假负载。通过软件控制NFET开启,测量负载两端电压是否等于电池组电压(减去MOSFET和导线压降)。测试关闭功能。
  6. 测试保护功能:调节某一路模拟电池的电压,使其超过过压保护阈值,观察MCU是否能正确进入保护状态,并切断NFET。

5.3 常见问题与排查技巧

以下是我在调试这类评估板时踩过的坑和总结的技巧:

问题现象可能原因排查步骤与解决方案
SPI读取ATA6870数据全为0xFF或0x001. SPI线序接错(MOSI/MISO)。
2. 片选(CS)信号异常。
3. ATA6870未正确供电或损坏。
4. SPI时钟极性/相位(CPOL/CPHA)设置错误。
1. 用逻辑分析仪抓取SPI波形,检查CS、CLK、MOSI信号。确保MCU发送的数据与ATA6870时序要求一致。
2. 检查ATA6870的VDD引脚电压。
3. 查阅数据手册,确认SPI模式(通常模式0或3)。
电压采样值跳动大、不准1. PCB采样走线受干扰。
2. 滤波RC参数不当或电容损坏。
3. 参考电压(VREF)不稳。
4. 软件滤波算法太弱。
1. 用示波器探头(带宽限制到20MHz)观察采样点波形,看是否有高频噪声。
2. 检查滤波电容是否为C0G/NP0材质。
3. 测量ATA6870的VREF引脚电压(通常为2.5V或3.0V)是否稳定。
4. 加强软件滤波(如增加采样次数、使用中值滤波+均值滤波组合)。
被动均衡不起作用或电流异常1. 均衡控制寄存器配置错误。
2. 均衡MOSFET或限流电阻损坏。
3. 电池电压未达到均衡开启阈值。
4. 散热不足导致MOSFET热关断。
1. 通过SPI读取均衡控制寄存器,确认配置值已写入。
2. 用万用表二极管档测量均衡MOSFET的体二极管是否正常。
3. 确认软件中设置的均衡开启电压阈值(如4.15V)是否正确,且电池电压已超过此值。
4. 均衡时触摸均衡电阻和MOSFET是否异常发烫,评估板是否设计了足够的散热铜皮。
高侧NFET无法完全开启(压降大)1. ATmega32HVB的驱动能力不足或配置错误。
2. 栅极电阻过大。
3. NFET本身栅极电容大,开启速度慢。
4. 负载电流过大,导致Vds上升。
1. 用示波器测量NFET的Vgs波形,看其峰值是否达到10V以上(具体看NFET规格书)。
2. 尝试减小栅极电阻(如从10Ω减到4.7Ω),观察波形变化。
3. 确认选用的NFET的Vgs(th)(开启阈值)是否较低,Qg(栅极总电荷)是否较小。
4. 测量负载电流是否在NFET的SOA(安全工作区)内。
CAN通信无法收发1. CAN收发器供电或使能错误。
2. CANH/CANL终端电阻(120Ω)未接或接错。
3. 波特率设置不匹配。
4. CAN控制器(MCU内部)初始化错误。
1. 测量CAN收发器VCC和STB(或EN)引脚电平。
2. 检查评估板上的终端电阻跳线是否已连接。
3. 用CAN分析仪发送标准帧,看评估板能否收到并产生中断。同时监听总线波形。
4. 仔细核对MCU的CAN初始化代码,特别是波特率分频寄存器的计算。
系统偶尔死机或复位1. 电源纹波过大。
2. 看门狗未正确喂狗或超时时间太短。
3. 堆栈溢出。
4. 中断冲突或优先级设置不当。
1. 用示波器AC耦合档,观察MCU的VCC引脚,看是否有大幅度的毛刺或跌落。
2. 检查看门狗初始化代码和喂狗位置。确保在主循环或关键任务中定期喂狗。
3. 检查局部变量是否过大,避免在中断或递归函数中定义大数组。
4. 简化程序,暂时关闭不必要的中断,排查问题。

最后的建议:这块评估板是一个绝佳的学习平台。不要只满足于让它跑通。尝试去修改它的参数,比如调整保护阈值,修改均衡策略,增加新的通信协议。甚至可以用它来采集真实电池的充放电数据,尝试用电脑软件进行简单的“直流充电bms数据分析”,看看电压曲线是如何变化的。只有通过动手实验和不断追问“为什么”,那些书本上的概念和芯片数据手册里的参数,才会真正变成你设计下一个真正产品时的经验和底气。

http://www.gsyq.cn/news/1581880.html

相关文章:

  • AVR微控制器端口复用详解:从原理到实战配置指南
  • 芯片级原子钟SA.45s:原理、低功耗设计与嵌入式应用指南
  • ATmega328P定时器与SPI实战:从寄存器配置到多任务调度
  • 嵌入式物联网开发:BitCloud框架下事件管理与内存优化的核心实践
  • ARM7TDMI编程模型与Thumb指令集:嵌入式开发的底层基石
  • 基于Microchip BM71 BLE模块的智能传感器开发实战指南
  • Windows COM端口注册表清理与重置终极指南
  • 服务网格运维
  • ATmega328P USART寄存器配置与中断编程实战指南
  • 佛山代加工贴牌推荐榜单
  • AFE Control Board-SAM4C:工业级嵌入式开发板硬件设计与软件实战
  • VMware迁移上云的10个生死关:从规划到落地的实战避坑指南
  • AMBA BFM:SoC验证中总线协议模拟的核心技术与实践指南
  • 南京翻译机构 德语视频口译难点
  • BM78蓝牙模块EEPROM升级协议详解与HCI实战指南
  • ARM架构核心解析:从处理器、总线到调试系统的实战指南
  • 每日 Agent 核心知识 · 第 07 期 Prompt 工程深度拆解
  • 深入解析Microchip CoreTSE以太网IP核:寄存器配置与MDIO管理实战指南
  • 【JAVA毕设源码分享】基于springboot企业人事管理系统(程序+文档+代码讲解+一条龙定制)
  • Tauri:10万Star的Rust桌面框架,Electron终于有对手了
  • C++ 循环结构详解:for、while、do-while 循环练习
  • Rust 所有权模型的设计理念
  • 4.1.1 SQL执⾏顺序
  • 配置文件管理:多种环境配置分离
  • 谷歌浏览器 下载Google Chrome 安装教程
  • Go语言的sync.RWMutex读写锁与goroutine调度在锁获取公平性上的表现
  • DOM基础
  • 微信多账号消息如何避免路由混乱?wechatapi帮你管理多微信
  • 阿里发布视频生成模型HappyHorse 1.1:五大维度全面升级,手把手教你上手
  • RRF 混合检索 + BGE 重排序