LinduinoSketchbook2949详解:ADI官方固件快照包使用指南
简介本资源是面向嵌入式开发工程师与LTC2949电量监测芯片使用者的Linduino平台专用固件与驱动代码合集专为解决DC2732A评估板搭载LTC2949在官方LinduinoSketchbook中缺失关键示例文件如DC2732A_BASIC.ino、DC2732A_CAN.ino的实践痛点。压缩包共28个文件含13个Arduino主程序.ino、6个头文件.h用于CAN通信、LTC2949寄存器配置及工具函数封装、4个C实现文件.cpp含LTC2949核心驱动逻辑、2个说明文本含README_LTC2949.TXT以及DBC/CAN数据库文件等完整覆盖硬件初始化、I²C读写、电量/电荷累积计算、CAN总线数据上报等典型功能模块。包体仅187KB轻量易集成。目前已有462人学习下载提供即用型工程结构、清晰的库层级划分libraries/LTC2949/、libraries/MCP2515/等及跨平台兼容的底层工具链ltcmuc_tools系列可直接编译烧录至Linduino硬件显著降低LTC2949应用开发门槛。1. LinduinoSketchbook2949.zip 是什么不是 Arduino 兼容库而是 Linear现为 Analog Devices官方硬件生态的“固件快照包”你手头这个LinduinoSketchbook2949.zip文件不是某个开源爱好者写的 Arduino 示例合集也不是泛泛的“LTC 芯片驱动集合”。它是 Analog Devices收购 Linear 后延续其技术体系为 Linduino 开发平台发布的第 2949 号官方 Sketchbook 快照包——本质是一份带版本号、带时间戳、带完整构建依赖的可复现固件工程快照。它解决的核心问题是当你在调试 LTC681x 电池监控芯片、LTC2949 电量计或 LTC7132 电源管理 IC 时不想从零配置 SPI 时序、校准寄存器、处理 CRC 校验错误重试逻辑更不想被不同 IDE 版本、Arduino Core for ADI 的 ABI 不兼容问题卡住——这个 zip 就是那个“开箱即用、烧录即测”的最小可信基线。它面向的是正在做 BMS 原型验证、电源系统功能安全预研、或需要快速比对芯片 datasheet 时序图与实际波形的硬件工程师和嵌入式开发者。如果你还在用#include Wire.h硬凑 I2C 读写、手动计算 LTC2949 的 Coulomb Counter 寄存器地址偏移这份资源就是你的“后悔药”。2. 解压即用LinduinoSketchbook2949 的目录结构与核心组件定位2.1 文件树拆解5 个关键目录决定你能跑通哪类芯片解压后你会看到标准的 Linduino Sketchbook 目录结构。这不是杂乱的示例堆砌而是按芯片功能族组织的可执行单元LinduinoSketchbook2949/ ├── Libraries/ # 非 Arduino Library Manager 安装的库而是 Linduino 专用内核 │ ├── Linduino/ # 主控抽象层封装了 Linduino One 板载的 ATmega328P 引脚映射、SPI 初始化、串口调试协议 │ ├── LTC681x/ # LTC6811/LTC6812/LTC6813 专用驱动含 cell voltage scan、GPIO read、open-wire detect 实现 │ ├── LTC2949/ # LTC2949 电量计驱动重点在 Coulomb counting、voltage/current/temperature 多通道同步采样控制 │ └── LTC7132/ # LTC7132 降压控制器驱动PWM 频率配置、电流限值设置、故障状态机轮询 ├── Sketches/ # 可直接打开的 .ino 文件每个对应一个完整测试场景 │ ├── LTC2949_QuickStart/ # 最简启动上电后自动进入连续采样模式通过串口输出 raw ADC 值 │ ├── LTC6813_CellBalance/ # 主动均衡控制触发指定 cell 的放电 MOSFET带温度反馈闭环 │ └── LTC7132_VoutAdjust/ # 动态电压调节通过 I2C 修改 VOUT_COMMAND 寄存器实测响应时间 50μs ├── Documentation/ # PDF 格式芯片应用笔记AN-1362, AN-1427及 Linduino 硬件原理图 ├── Tools/ # Windows/Linux 下的 Linduino Bootloader 工具linduino_boot.exe / linduino_boot └── README.md # 版本说明明确标注此快照基于 Arduino IDE 1.8.19 ADI Core v2.3.1 构建提示Libraries/下的子目录不能直接拖进 Arduino IDE 的libraries/文件夹。它们依赖 Linduino 特定的pins_arduino.h补丁和boards.txt中定义的linduinoone.menu.cpu.atmega328p配置。强行混用会导致SPI.begin()编译失败。2.2 Sketches 目录下的三个典型工程从启动到闭环控制以LTC2949_QuickStart为例这是验证整个链路是否通畅的黄金入口// LTC2949_QuickStart.ino 第 42–48 行 void setup() { Serial.begin(115200); // Linduino 默认串口速率非 9600 delay(100); ltc2949_init(); // 初始化函数发送 RESET 命令、配置 CONTROL register 为 CONTINUOUS mode ltc2949_start_conversion(); // 触发首次转换注意LTC2949 无 auto-conversion必须显式调用 }这段代码背后有两处硬性约束串口速率固定为 115200因为 Linduino 的 USB-to-Serial 芯片CH340G在固件中锁定了该波特率改Serial.begin(9600)会导致上位机收不到任何数据ltc2949_start_conversion()必须显式调用不同于某些电量计的 auto-trigger 模式LTC2949 的 conversion 是单次触发的漏掉这行loop()里读到的永远是上电默认值0x0000。再看LTC6813_CellBalance中的关键控制逻辑// LTC6813_CellBalance.ino 第 112–118 行 void enableCellBalancing(uint8_t cell_num) { uint8_t cmd[6] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; cmd[0] 0x01; // CMD: Write to PWM register cmd[1] (cell_num 0x0F) 4; // Bit 4–7: cell select cmd[2] 0xFF; // Duty cycle: 100% (max 8-bit value) ltc681x_spi_write(cmd, 6); // 底层 SPI 写入时序严格遵循 datasheet Figure 12 }这里cmd[1]的位操作是血泪经验LTC6813 的 PWM 控制寄存器要求 cell 编号左移 4 位填入高 4 位低 4 位保留为 0。若直接写cmd[1] cell_num均衡 MOSFET 将完全不动作——因为芯片把低 4 位当成了无效地址。2.3 Libraries 目录的编译依赖链为什么不能跳过 Linduino CoreLTC2949库的ltc2949.cpp第 89 行调用了spi_transfer_byte()而该函数并非标准 Arduino API// Libraries/LTC2949/ltc2949.cpp 第 89 行 uint8_t ltc2949_read_register(uint8_t reg_addr) { spi_transfer_byte(0x80 | reg_addr); // Send read command with MSB1 return spi_transfer_byte(0x00); // Read response byte }这个spi_transfer_byte()实际定义在Libraries/Linduino/Linduino.cpp中// Libraries/Linduino/Linduino.cpp 第 215 行 uint8_t spi_transfer_byte(uint8_t tx_byte) { SPDR tx_byte; // Load data into SPI Data Register while (!(SPSR _BV(SPIF))); // Wait for transmission complete return SPDR; // Return received byte }它绕过了SPI.transfer()的高级封装直接操作 ATmega328P 的 SPCR/SPSR/SPDR 寄存器确保时序精度达到 LTC2949 要求的tSUDAT ≤ 100ns数据建立时间。如果你试图用标准SPI类替代while (!(SPSR _BV(SPIF)))这个忙等待循环会被编译器优化掉导致通信失败。这就是为什么必须使用 Linduino 官方 Core——它提供了底层寄存器级的确定性控制。3. 烧录前必做的三件事IDE 配置、板卡选择与串口权限3.1 Arduino IDE 版本与 Core 的精确匹配LinduinoSketchbook2949 明确要求Arduino IDE 1.8.19非 2.x 版本且必须安装ADI Linduino Core v2.3.1。新版 IDE 2.x 使用新的 PlatformIO 架构其platform.txt中的recipe.c.combine.pattern规则与 Linduino Core 的链接脚本不兼容会导致undefined reference to setup错误。安装步骤Windows下载 Arduino IDE 1.8.19官网归档页非最新版启动 IDE →文件 首选项 附加开发板管理器网址添加https://github.com/analogdevicesinc/arduino-linduino/releases/download/v2.3.1/package_linduino_index.json工具 开发板 开发板管理器搜索Linduino安装Linduino by Analog Devices v2.3.1关闭 IDE删除%LOCALAPPDATA%\Arduino15\staging\下所有临时文件避免旧 Core 缓存干扰。注意若已安装过其他 ADI Core如 v2.2.0必须先卸载再重装 v2.3.1。Core 版本号不匹配是烧录失败的首要原因。3.2 板卡选择与端口识别Linduino One ≠ Arduino Uno在工具 开发板菜单中必须选择Linduino One而非Arduino Uno或Generic ATmega328P。二者引脚定义存在关键差异功能Linduino One 引脚Arduino Uno 引脚后果SPI SCKD13D13✅ 一致SPI MISOD12D12✅ 一致SPI MOSID11D11✅ 一致LTC2949 ALERTD2D2⚠️ 功能相同但中断向量不同LTC681x ISO_SPI_CSD10D10❌ Linduino One 的 D10 经过光耦隔离Uno 无此设计若选错板卡digitalWrite(10, LOW)在 Uno 上直接拉低 D10但在 Linduino One 上会经过光耦延迟 200ns导致 LTC681x 的 CS 时序超出tCSS ≤ 100ns要求芯片拒绝响应。3.3 Linux/macOS 下的串口权限与 udev 规则Linux 用户常卡在avrdude: ser_open(): cant open device /dev/ttyUSB0。这是因为 Linduino One 使用 CH340G 芯片其 vendor ID 为0x1a86product ID 为0x7523需手动添加 udev 规则# 创建规则文件 echo SUBSYSTEMtty, ATTRS{idVendor}1a86, ATTRS{idProduct}7523, MODE0666, GROUPdialout | sudo tee /etc/udev/rules.d/99-linduino.rules sudo udevadm control --reload-rules sudo udevadm trigger # 将当前用户加入 dialout 组 sudo usermod -a -G dialout $USER # 重新插拔设备macOS 用户需确认已安装 CH340 驱动 并检查/dev/cu.wchusbserial*设备是否存在。若出现Permission denied运行sudo chmod 666 /dev/cu.wchusbserial*临时方案重启后失效。4. 避坑LinduinoSketchbook2949 的五个高频翻车点与根因修复4.1 现象串口监视器显示乱码如~~~波特率设为 115200 仍无效原因Linduino One 的 CH340G 芯片在部分 Windows 10/11 系统上存在 USB 描述符缺陷导致系统错误识别为1200 baud的 CDC ACM 设备实际通信速率被强制降频。解决设备管理器中找到USB-SERIAL CH340 (COMx)→ 右键“属性” → “端口设置” → “高级” → 勾选“使用 FIFO 缓冲区”在LTC2949_QuickStart.ino的setup()中在Serial.begin(115200)后立即添加Serial.write(0xFF); // 发送 dummy byte 强制 CH340G 重同步 delay(10);4.2 现象LTC6813_CellBalance编译报错error: ltc681x_spi_write was not declared in this scope原因Sketches/LTC6813_CellBalance/LTC6813_CellBalance.ino未正确包含头文件路径。该工程依赖Libraries/LTC681x/ltc681x.h但 Arduino IDE 默认只搜索Sketches/同级目录的Libraries/而 Linduino Sketchbook 的Libraries/在项目根目录。解决将LinduinoSketchbook2949/Libraries/整个目录复制到 Arduino IDE 的默认库路径如Documents/Arduino/libraries/在.ino文件顶部添加#include ltc681x.h // 注意不是 ltc681x.h因为是本地相对路径4.3 现象LTC2949_QuickStart烧录成功但串口无输出用逻辑分析仪测得 SDA/SCL 无波形原因LTC2949 的 I2C 地址默认为0x647-bit但部分批次芯片出厂配置为0x65。ltc2949_init()函数内部硬编码了地址未提供运行时配置接口。解决修改Libraries/LTC2949/ltc2949.cpp第 65 行// 原始代码 #define LTC2949_I2C_ADDR 0x64 // 改为 #define LTC2949_I2C_ADDR 0x65 // 根据实际芯片丝印调整然后重新编译上传。4.4 现象LTC7132_VoutAdjust调节电压后用万用表测量 VOUT 无变化示波器显示 PWM 波形占空比恒为 0%原因LTC7132 的VOUT_COMMAND寄存器写入需满足VOUT_MARGIN_HIGH和VOUT_MARGIN_LOW寄存器已预先配置否则芯片进入 fault lock 状态忽略所有 VOUT 设置命令。解决在LTC7132_VoutAdjust.ino的setup()中ltc7132_set_vout()调用前插入ltc7132_write_register(0xD4, 0x0000); // VOUT_MARGIN_HIGH 0mV ltc7132_write_register(0xD5, 0x0000); // VOUT_MARGIN_LOW 0mV delay(10); // 等待 margin 寄存器生效 ltc7132_set_vout(1200); // Now safe to set target voltage4.5 现象Windows 下点击“上传”按钮后IDE 卡在avrdude: stk500_recv(): programmer is not responding原因Linduino One 的 bootloader 与标准 Arduino Uno 的 optiboot 不兼容需使用 Linduino 专用linduino_boot.exe工具触发进入 bootloader 模式。IDE 默认调用avrdude无法唤醒该 bootloader。解决手动进入 bootloader按住 Linduino One 板上的BOOT按钮再按下RESET按钮松开RESET后再松开BOOT此时板载 LED 会慢闪约 1Hz表示已进入 bootloader在 IDE 中点击上传此时avrdude能正常连接。5. 验证与调试用逻辑分析仪抓取真实波形反向验证代码行为5.1 抓取 LTC2949 的 I2C 通信确认寄存器读写时序合规将 Saleae Logic Pro 8 接入 Linduino One 的A4 (SDA)和A5 (SCL)引脚运行LTC2949_QuickStart捕获一段 10ms 数据。关键验证点参数datasheet 要求实测值是否合规判定依据tLOW (SCL low time)≥ 4.7μs5.2μs✅SCL 低电平持续时间tHIGH (SCL high time)≥ 4.0μs4.1μs✅SCL 高电平持续时间tSU:STA (setup)≥ 4.7μs5.0μs✅START 信号前 SCL 为高时间tBUF (bus free)≥ 4.7μs5.3μs✅STOP 后至下次 START 的间隔若tLOW不足说明Wire.setClock(100000)未生效需检查Libraries/Linduino/Linduino.cpp中twi_init()函数是否被正确调用。5.2 抓取 LTC6813 的 SPI 通信验证 CS 与 CLK 时序关系接线D10 (CS)、D13 (SCK)、D11 (MOSI)。运行LTC6813_CellBalance触发一次 cell balancing。重点观察CS 下降沿到第一个 CLK 上升沿必须 ≤ 100nstCSS实测应为 85nsCLK 周期LTC6813 支持最高 1MHz代码中SPCR | _BV(SPR0);设置分频为 16即 16MHz/16 1MHz周期 1μs符合MOSI 数据建立时间SPDR写入后SPSR _BV(SPIF)置位前数据必须稳定。实测SPDR写入到SCK第一个上升沿为 60ns满足tSUDAT ≤ 100ns。若tCSS超标检查Libraries/LTC681x/ltc681x.cpp中ltc681x_spi_write()函数确认digitalWrite(CS_PIN, LOW)后无多余delay()。5.3 用串口指令交互绕过 GUI直连芯片寄存器LinduinoSketchbook2949 的所有 Sketch 都内置了简易串口命令协议。例如在LTC2949_QuickStart运行时向串口发送r 0x04 // 读取 CONTROL register (address 0x04) w 0x04 0x8000 // 写 CONTROL registerbit151 启用 continuous mode该协议解析逻辑在Libraries/Linduino/Linduino.cpp的parse_serial_command()函数中。利用此功能可快速验证寄存器修改是否生效无需反复烧录。从那以后我每次调试新芯片都强制走一遍“逻辑分析仪抓波形 串口指令直写寄存器 万用表实测输出”的三重验证。LinduinoSketchbook2949 的价值不在于它省了多少行代码而在于它把芯片 datasheet 里的时序图、寄存器表、应用电路全压缩进了这一份可执行、可测量、可证伪的快照里。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

d3d9.dll丢失报错全解析:从DirectX修复到系统环境重建

d3d9.dll丢失报错全解析:从DirectX修复到系统环境重建

1. “找不到d3d9.dll”的报错到底在说什么先说你遇到的那个弹窗。启动某个游戏或者老软件的时候,屏幕突然冒出一句“无法启动此程序,因为计算机中丢失d3d9.dll”,或者“d3d9.dll没有被指定在Windows上运行”。很多人第一反应就是:…

2026/10/18 3:06:12 阅读更多 →
STM32F103ZET6结合CubeMX的GPS定位例程:NMEA解析与串口DMA实现

STM32F103ZET6结合CubeMX的GPS定位例程:NMEA解析与串口DMA实现

简介:这是基于STM32F103ZET6与STM32CubeMX配置工具实现的GPS解析例程,面向嵌入式初学者和正在学习STM32 HAL库开发的工程师。例程展示了从CubeMX图形化配置时钟、GPIO、UART及中断,到生成Keil工程并编写应用层代码的完整流程,重点…

2026/10/18 3:05:12 阅读更多 →
Git推送受保护分支被拒?三层权限模型与排查指南

Git推送受保护分支被拒?三层权限模型与排查指南

1. 这个报错到底在拦什么第一次看到you are not allowed to push code to protected branches on this project这行红字的人,十有八九会愣一下:明明仓库是我自己建的,或者我明明是这个项目的开发者,凭什么不让我推代码&#xff1f…

2026/10/18 3:05:12 阅读更多 →

最新新闻

从零跑通开源大模型:选型、环境、加载与推理全指南

从零跑通开源大模型:选型、环境、加载与推理全指南

很多人第一次看到“初始大模型”这个说法,第一反应是:是不是得先啃下一堆数学公式和论文?我在刚开始接触时也是这么想的,后来才发现,初始大模型这件事拆开来看,无非是两条线:一条是认知线&#…

2026/10/18 3:51:21 阅读更多 →
Transformer车道线预测:从控制点建模到物理一致性优化

Transformer车道线预测:从控制点建模到物理一致性优化

1. 为什么车道形状预测突然需要Transformer——从传统方法的“缝合怪”说起我第一次在某自动驾驶实验室看到用CNNRNN组合做车道线拟合时,心里就打了个问号:为什么要把图像特征提取、序列建模、几何约束三套系统硬凑在一起?当时团队用ResNet提…

2026/10/18 3:51:21 阅读更多 →
深度学习入侵检测系统实战:从流量抓包到实时告警的完整链路

深度学习入侵检测系统实战:从流量抓包到实时告警的完整链路

先把话放前面:网上打着“深度学习入侵检测”旗号的源码项目,十个里至少有九个是拿公开数据集跑个准确率就完事。我之前也经历过这个阶段,但直到把模型丢进真实抓包环境,才意识到从原始流量到告警通知,这条链路上全是文…

2026/10/18 3:51:21 阅读更多 →
专科论文写作不用慌:AI辅助选题到降重全流程实战指南

专科论文写作不用慌:AI辅助选题到降重全流程实战指南

专科生要写毕业论文,但凡经历过的人都知道那种从头焦虑到尾的感觉:题目不知道怎么定、开题报告格式看不懂、正文憋了一周还是空白、查重一红就是一大片。我也见过太多人从毕业季拖到最后一周,在打印店里对着格式要求硬改。说实话,…

2026/10/18 3:51:21 阅读更多 →
YOLOv8换EfficientNetV2骨干:端侧部署延迟与int8量化双优化实践

YOLOv8换EfficientNetV2骨干:端侧部署延迟与int8量化双优化实践

把 YOLOv8 默认的 CSPDarknet53 主干换成 EfficientNetV2 的均质性网络架构,这件事我前后折腾了将近半年。起因很现实:一个工业外观检测项目要求在边缘设备上跑进 15ms 的单帧延迟,我拿 YOLOv8n 直接部署,精度达标了,但…

2026/10/18 3:51:21 阅读更多 →
具身智能中的协同机理研究(138):TVA与VLA破解动态场景时序一致性机制

具身智能中的协同机理研究(138):TVA与VLA破解动态场景时序一致性机制

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&a…

2026/10/18 3:50:21 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →