news 2026/5/28 19:18:11

MIPI CSI-2 概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MIPI CSI-2 概述

摄像头串行接口 2 (CSI-2) 规范定义了外围设备(摄像头)与主处理器(基带、应用引擎)之间的接口。是摄像头与主处理器之间的接口制定的一个标准规范。CSI-2 为移动行业提供了一个标准、稳健、可扩展、低功耗、高速且高成本效益的接口,支持移动设备上广泛的各种成像解决方案。


一 概述

CSI-2 规范定义了移动设备中摄像头与主机处理器之间的标准接口,解决了传统并行接口带宽受限、功耗高、互连复杂的问题,以及各厂商专有接口不兼容导致的系统成本和可靠性问题。该规范为移动行业提供了一个标准、健壮、可扩展、低功耗、高速、高性价比的接口方案,支持广泛的移动成像应用。

CSI-2 介绍

定义

-Lane(通道):差分信号对,用于数据传输。对于 CSI-2,数据通道是单向的
-Packet(数据包):按特定方式组织的两个或更多字节组成的组,用于在接口间传输数据。所有数据包都有最小指定的一组组件。字节是构成数据包的基本数据单元
-Payload(有效载荷):仅包含应用数据 —— 移除了所有同步、头部、ECC、校验和及其他协议相关信息。这是应用处理器和外设之间传输的"核心"
-Sleep Mode(休眠模式):休眠模式(SLM)是一种仅泄漏级功耗的模式
-Transmission(传输):高速串行数据在总线上有效传输的时间段。传输由一个或多个数据包组成,分别由 SoT(传输开始)和 EoT(传输结束)在开始和结束处界定
-Virtual Channel(虚拟通道):该规范支持多达四个外设的多个独立数据流。每个外设的数据流是一个虚拟通道,这些数据流可以交错并发送为顺序包,每个包专用于特定的外设或通道。数据包协议包含将每个数据包链接到其预定外设的信息

CSI-2 Transmitter and Receiver Interface

CSI-2 规范定义了发送器与接收器之间的标准数据传输和控制接口。该接口采用 MIPI D-PHY 物理层,是单向差分串行接口,典型应用为摄像头模块与手机引擎接收器之间的连接。

CSI-2 Layer Definitions

PHY 层:

指定传输介质(电导体)、输入/输出电路以及从串行比特流中捕获"1"和"0"的时钟机制。该部分记录传输介质特性、信号电气参数以及时钟与数据通道之间的时序关系。

指定了传输开始(SoT)和传输结束(EoT)的信令机制,以及发送和接收 PHY 之间可传输的其他"带外"信息。比特级和字节级同步机制作为 PHY 层的一部分。

协议层:

由多个子层组成,各司其职。CSI-2 协议支持在主机处理器单一接口上复用多个数据流,通过标签和交错机制实现各数据流的正确重建。

像素/字节打包/解包层:

支持每像素 6~24 位的多种像素格式。发送端将应用层像素打包为字节,接收端将底层字节解包为像素,每像素 8 位数据透传。

底层协议(LLP):

负责 SoT 至 EoT 期间的比特级与字节级同步及数据传递,最小粒度为单字节,并定义字节序(Endianness)。

通道管理:

支持 1~4 个数据通道的灵活配置以满足带宽需求。发送端通过分配器分发数据流至各通道,接收端通过合并器重组数据流并恢复原始时序。

应用层:

定义数据流的高级编码与解释规范,包括像素值到字节的映射关系。 协议层数据以数据包形式组织,发送端附加包头及校验信息,接收端解析包头并验证数据完整性。

三. 摄像头控制接口(CCI)

CCI介绍

用于控制发送器的双线、双向、半双工串行接口,兼容 I2C 快速模式(400kHz、7 位从机寻址)
- 主从关系:CSI-2 接收器为主机,发送器为从机;支持多从机,不支持多主机
- 控制消息:本规范不定义控制消息内容,由 CSI-2 实现者自行定义消息格式、帧时序和延迟要

消息类型

基本 CCI 消息由起始条件、带读/写位的从机地址、从机应答、指向从机设备内部寄存器的子地址(索引)、从机应答信号组成。写操作时主机发送数据字节,从机返回应答/非应答;读操作时从机发送数据字节,主机返回应答/非应答,最后以停止条件结束

- 从机地址:7 位
- 索引-数据格式:支持 8 位索引 + 8 位数据,或 16 位索引 + 8 位数据
- 消息类型选择:由具体从机设备定义使用何种消息类型

8 位索引 + 8 位数据(7 位地址)

16 位索引 + 8 位数据(7 位地址)

Single Read from Random Location

1. 主机向目标索引执行伪写操作(设置要读的地址)
2. 主机发出重复起始条件
3. 主机以读操作再次寻址从机
4. 从机确认从机地址后,输出一个字节的数据
5. 主机发送非应答信号和停止条件(结束)

Single Read from the Current Location

1. 主机以读操作直接寻址从机
2. 从机将上次使用的索引的数据输出到 SDA 线
3. 主机发送非应答信号和停止条件终止读操作

Sequential Read Starting from a Random Location


1. 主机向目标索引执行伪写操作(设置起始地址)
2. 从机应答后,主机发出重复起始条件
3. 主机以读操作再次寻址从机
4. 主机每接收一个字节后发送应答,通知从机继续从下一索引读取
5. 主机读取最后一个字节后,发送非应答和停止条件终止读操作

Sequential Read Starting from the Current Location


1. 主机以读操作直接寻址从机(无需伪写)
2. 主机每接收一个字节后发送应答,通知从机继续从下一索引读取
3. 主机读取最后一个字节后,发送非应答和停止条件终止读操作

Single Write to a Random Location

1. 主机向从机发出写操作
2. 从机确认写操作后,主机发送索引地址和数据
3. 主机发送停止条件终止写操作

Sequential Write

1. 主机向从机发出写操作
2. 从机确认写操作后,主机发送起始索引地址
3. 主机依次发送多个数据字节
4. 从机每接收一个数据字节后自动递增索引地址
5. 主机发送停止条件终止顺序写入操作

Reading Multi-byte Registers



- 读取:读取首字节时冻结整个寄存器值到缓冲区,:读取多字节寄存器时,如果寄存器在读取过程中被更新,会导致读到的字节来自不同时刻,数据不一致

Writing Multi-byte Registers

从时序图可以看出,在数据字节1和数据字节2之间,没有任何寄存器更新的时刻。只有当最后一个字节(LS字节)接收完成并应答后,内部寄存器才一次性更新,确保外部看到的
要么是旧值,要么是新值,不会出现损坏的中间状态

四. Physical Layer

物理层概述


- HS-TX/HS-RX:高速发送/接收(用于高速数据传输)
- LP-TX/LP-RX:低功耗发送/接收(用于控制和低速数据)
- CIL-MFEN/MCNN/SFEN/SCNN:CIL(时钟接口层)相关的使能和连接功能

连续时钟行为:
- 时钟通道始终处于高速模式
- 数据包传输之间仍输出有效时钟信号
- 适合需要高速、低延迟的应用

非连续时钟行为:
- 数据包之间时钟通道进入 LP-11 状态
- LP-11 = 低功耗状态,两条数据线都为高电平
- 可以降低功耗

多通道分发与合并机制

CSI-2 支持可扩展的数据通道配置,可根据带宽需求选择 1~4 个数据通道。

每个通道是独立的物理层单元:
- 独立的串行器
- 独立的传输电路
- 并行工作

单一数据流分发到多个通道

多个通道收集字节重组

- 通道合并器的抽象模型
- 多通道字节收集规则
- 同步和时序关系
- 如何确保重组的数据包完整性

1. 并行收集:接收端 N 个 PHY 同时从各通道收集字节
2. 时序协调:尽管通道结束时间不同,合并层能正确重组字节序列
3. 恢复原始顺序:利用轮询的逆过程还原原始字节流
4. 数据包分割:重组后的连续字节流由数据包解码层识别并分割为独立的数据包

Two Lane Multi-Lane Example

Multi-Lane Interoperability

1. 向下兼容,高通道数设备可以连接低通道数设备
2. 性能匹配,以较小通道数为准

3. 通过 CCI 接口配置通道数

M ≤ N
(发送通道 ≤ 接收通道)
无性能损失接收器有足够通道匹配发送器,充分利用发送端带宽。
M > N
(发送通道 > 接收通道)
性能下降
(如帧率降低)
接收器通道数不足,无法接收全部数据。

五 协议层

Low Level Protocol

- 数据包格式:短数据包(Short Packet)和长数据包(Long Packet)
- 虚拟通道:支持多路数据流复用
- 帧同步:提供帧和行的边界标识
- 错误检测:通过16位校验和确保数据完整性

Long Packet Structure

1. 数据标识符:定义数据的虚拟通道和应用层数据的数据类型
2. 字计数字段:定义数据有效载荷中 8 位数据字的数量,不包含包头和包尾
3. ECC 纠错码:可纠正 1 位错误、检测 2 位错误,覆盖数据标识符和字计数值
4. 数据有效载荷:接收器读取指定数量的数据字,期间不查找同步码,数据字值无限制
5. 字节传输顺序:
- 单字节:LSB 优先
- 有效载荷:任意字节顺序(受格式限制)
- 多字节字段:LSB 字节优先
6. 数据包结束:EoT 序列后,接收器寻找下一个 SoT 序列

Short Packet Format

1. 识别标志:短数据包通过数据类型 0x00 ~ 0x0F 识别
2. 结构组成:仅包含数据包头,无数据包尾
3. 字段替换:数据包头中的字计数字段被短数据包数据字段替换
4. 帧同步数据类型:短数据包数据字段为帧号
5. 行同步数据类型:短数据包数据字段为行号
6. 通用短数据包类型:短数据包数据字段内容由用户定义
7. ECC 纠错码:可纠正 1 位错误、检测 2 位错误

Data Identifier (DI)

1. 组成:包含虚拟通道标识符(VC)和数据类型(DT)值
2. 虚拟通道标识符(VC):占据数据标识符字节的 2 个最高有效位
3. 数据类型(DT):占据数据标识符字节的 6 个最低有效位


Virtual Channel Identifier


1. 用途:为数据流中交错的不同数据流提供独立通道
2. 位置:位于数据标识符字节的 2 个最高有效位
3. 接收端处理:接收器监控虚拟通道标识符,将交错的视频流解复用到相应的通道
4. 支持数量:最多支持 4 个数据流,有效通道标识符为 0 ~ 3
5. 可编程性:外设中的虚拟通道标识符应可编程,允许主机处理器控制数据流的解复用方式

Interleaved Video Data Streams Examples

Data Type (DT)

1. 指定有效载荷数据的格式和内容
2. 最多支持 64 种数据类型
3. 共有 8 种不同的数据类型类别,每个类别最多有 8 种不同的数据类型定义
4. 短数据包类型:前两个类别表示短数据包数据类型(详见 9.8 节)
5. 长数据包类型:其余六个类别表示长数据包数据类型(详见第 11 节)

Packet Header Error Correction Code

1. 数据标识符和字计数值的正确解释对数据包结构至关重要
2.允许纠正数据标识符和字计数值中的单比特错误,检测双比特错误
3. 使用 24 位子集,ECC 字节的第 7 和 6 位应为零
4. 基于 ECC 解码的错误状态应在接收器的应用层可用
5. ECC 输入映射:
- 数据标识符字段 DI[7:0] → ECC 输入 D[7:0]
- 字计数字节 LSB(WC[7:0])→ ECC 输入 D[15:8]
- 字计数字节 MSB(WC[15:8])→ ECC 输入 D[23:16]

General Hamming Code Applied to Packet Header

1. 汉明规则:d + p + 1 ≤ 2p,d 为数据位数,p 为校验位数
2. 汉明码字:将校验位附加到数据位后得到,码字大小 c = d + p
3. 生成矩阵:G = [ I | A ],由单位矩阵 I 和校验生成矩阵 A 组成
4. 包头生成:PH = p * G,p 为包头(24 或 64 位),G 为对应生成矩阵
5. 校验矩阵:H = [ AT | I ],由 A 的转置和单位矩阵组成
6. 校验向量:s = H * PH
7. 错误判定:
- s 全为零 → 接收正确
- s 包含非零 → 存在错误
8. 单比特错误定位:
- s 是 H 的元素 → 指向错误位
- 错误位在校验位 → s 是 I 的元素
- 错误位在数据位 → 由 s 在 AT 中的位置确定

Hamming-modified Code

ECC Syndrome Association Matrix

d5d4d30b0000b0010b0100b0110b1000b1010b1100b111
0b0000x070x0B0x0D0x0E0x130x150x160x19
0b0010x1A0x1C0x230x250x260x290x2A0x2C
0b0100x310x320x340x380x1F0x2F0x370x3B
0b0110x430x450x460x490x4A0x4C0x510x52
0b1000x540x580x610x620x640x680x700x83
0b1010x850x860x890x8A0x3D0x3E0x4F0x57
0b1100x8C0x910x920x940x980xA10xA20xA4
0b1110xA80xB00xC10xC20xC40xC80xD00xE0

1. 矩阵单元:每个单元代表一个校验子,前 24 个单元(橙色行)使用前 3 或 5 位构建校验子
2. 校验子格式:每个校验子 MSB 左对齐,例如 0x07 = 0b0000_0111 = P7P6P5P4P3P2P1P0
3. 行和列定义:
- 顶行定义数据位置位的 3 个 LSB
- 左列定义数据位置位的 3 个 MSB
- 共有 64 个位位置
4. 位置编码示例:第 37 位位置编码为 0b100_101,校验子为 0x68
5. 24 位 P0 校验计算:橙色行中的 P0 定义对应位位置是否用于 P0 校验
- 示例:P0(24位) = D0^D1^D2^D4^D5^D7^D10^D11^D13^D16^D20^D21^D22^D23
6. 64 位 P0 校验计算:表 5 中的所有 P0 定义对应的位位置
7. 单比特错误纠正:校验子必须是表 4 中的校验子之一,以识别错误位位置
8. 校验子计算:S = PSEND ^ PRECEIVED
- PSEND:包头中的 8/6 位 ECC 字段
- PRECEIVED:接收到的包头计算出的校验值
9. 表 5 与表 4:表 5 与表 4 矩阵表示相同信息,组织方式更清晰展示校验位如何从数据位形成
10. ECC 保护范围:
- 橙色区域:用于保护 24 位包头
- 整个表格:用于保护 64 位包头

ECC Generation on TX Side

使用硬件电路同时计算多个校验位,而不是串行逐位计算,64 位数据包头的 ECC 校验可以一次性并行计算所有校验位

P3(24位) = D1^D2^D3^D7^D8^D9^D13^D14^D15^D19^D20^D21^D23

- P3(24位):24 位数据包头的第 3 个校验位
- D1, D2, D3...:数据位
- ^:异或(XOR)运算

Checksum Generation

使用 16 位 CRC(循环冗余校验)

16 位校验和序列作为数据包尾的一部分传输

Packet Spacing

数据包间距是指在 CSI-2 总线上,一个数据包传输结束后到下一个数据包传输开始之间的时间间隔。在连续时钟模式下,数据包间距可能最小化;在非连续时钟模式下,时钟可能进入 LP-11 状态。

Synchronization Short Packet Data Type Codes

Frame Synchronization Packets

1. 帧开始(FS):每个图像帧以帧开始数据包开始,包含帧开始代码
2. 数据包序列:FS 数据包后跟一个或多个长数据包(包含图像数据)和零个或多个短数据包(包含同步码)
3. 帧结束(FE):每个图像帧以帧结束数据包结束,包含帧结束代码
4. 同步码:见表 6 中同步码数据类型的描述
5. 帧号字段:FS 和 FE 同步数据包的短数据包数据字段包含 16 位帧号
6. 帧号一致性:对应给定帧的 FS 和 FE 同步数据包的帧号应相同
7. 帧号非零:使用的 16 位帧号应为非零,以区别于帧号无效且保持为零的情况
8. 16 位帧号行为:应为以下行为之一

1. 帧号始终为零:帧号无效
2. 帧号递增方式:对于具有相同虚拟通道的每个 FS 数据包,帧号递增 1,并周期性复位为 1
- 示例 1:1, 2, 1, 2, 1, 2, 1, 2
- 示例 2:1, 2, 3, 4, 1, 2, 3, 4

Line Synchronization Packets

1. 行同步数据包是可选的

2. 行开始(LS)和行结束(LE):短数据包数据字段包含 16 位行号
3.对应给定行的 LS 和 LE 数据包的行号应相同
4. 行号是逻辑行号,不一定等于物理行号
5. 使用的 16 位行号应为非零,以区别于行号无效且保持为零的情况

Generic Short Packet Data Type Codes

1. 在数据流中包含快门开/闭、闪光灯触发等时序信息的机制
2. 16 位用户定义数据字段将数据类型值和 16 位数据值从发送器传递到接收器的应用层
3. CSI-2 接收器应将数据类型值和关联的 16 位数据值传递给应用层

Packet Spacing Examples

Line Blanking Period:一个长包的 Footer 到下一个长包的 Header 之间的时间

Frame Blanking Period:第 N 帧的 Frame End 包到第 N+1 帧的 Frame Start 包之间的时间

Blanking 时间要求
- Line Blanking:不固定,长度可变,接收端需支持接近零的长度
- Frame Blanking:发送端定义最小时间,持续时间应可编程

示例多个数据包组成的数据帧




Single Packet Example

Frame Blanking Period 第 N 帧的 Frame End 包到第 N+1 帧的 Frame Start 包之间的时间

发送端定义 Frame Blanking Period 的最小时间

Packet Data Payload Size Rules

1. 所有数据类型的长数据包中数据的总大小应为 8 位的倍数
2. YUV、RGB 或 RAW 数据类型:一个长数据包应包含一行图像数据,同一虚拟通道内且同一帧内的相同数据类型长数据包应具有相等长度(YUV420 例外)
3. 长数据包可具有任意长度,数据包间距也可变化
4. 数据类型的传输格式可能对有效载荷大小施加额外约束
5. 为满足约束,可能需要在有效载荷末尾添加"填充"像素
- 示例:RAW10 数据类型,图像行长度不是 4 像素倍数时需填充
- 填充像素的值未指定

Frame Format Examples


Digital Interlaced Video Example

Field Start/End + Frame Start/End

奇数场: 包含奇数行数据 (行号: 1, 3, 5, 7...)

偶数场: 包含偶数行数据 (行号: 2, 4, 6, 8...)

Data Interleaving


CSI-2 支持在同一个视频数据流中交织传输不同的图像数据格式

Data Type
-通过数据类型区分不同的数据流
-像素数据、嵌入式数据、自定义数据混合传输

范围类型
0x00 - 0x07同步短包数据类型
0x08 - 0x0F通用短包数据类型
0x10 - 0x17通用长包数据类型
0x18 - 0x2F定义图像数据类型
0x30 - 0x37用户定义字节类型
0x38 - 0x3F定义图像数据类型

定义的图像数据类型 (0x18-0x3F 非保留码)
- 仅对应的 MIPI 定义的载荷数据格式被视为正确
- 其他格式不兼容

保留的图像数据类型 (0x18-0x3F 保留码)
- 不应使用保留代码
- 没有载荷数据格式被视为正确

通用长包数据类型 (0x10-0x17)
- 任何载荷数据格式都被视为正确
- 不应与 MIPI 图像数据格式定义的载荷一起使用

用户定义字节类型 (0x30-0x37)
- 任何载荷数据格式都被视为正确
- 不应与 MIPI 图像数据格式定义的载荷一起使用

同步短包数据类型 (0x00-0x07)
- 仅包含包头
- 不包含载荷数据字节

通用短包数据类型 (0x08-0x0F)
- 仅包含包头
- 不包含载荷数据字节

Virtual Channel Identifier
- 通过虚拟通道 ID 区分不同的数据流
- 多传感器、多数据源独立传输

示例图

Frame Level Interleaved Data Transmission

Virtual Channel Identifier Interleaving


Virtual Channel Identifier 允许在单个数据流中逻辑分离不同的数据类型


- 每个虚拟通道都有自己的 Frame Start 和 Frame End 包
- 各通道独立控制
- 不同虚拟通道可以有不同的帧率
- 数据率保持相同

六 Data Formats

Color Spaces



CSI-2 常用数据格式包括:
- RGB 格式
- YUV 格式
- RAW 格式
- 用户定义格式

Generic 8-bit Long Packet Data Types


Null and Blanking Data

null 和 blanking 数据类型,接收端必须忽略数据包载荷内容

Embedded Information

YUV Image Data

1. YUV420 数据类型的传输行数必须为偶数
2.分为 legacy(传统)和 non-legacy(非传统)两种

Legacy YUV420 8-bit
行号组件传输序列
奇数行 (1, 3, 5...)U分量UYY...
偶数行 (2, 4, 6...)V分量VYY...

YUV420 8-bit Data Transmission Sequence

YUV420 10-bit

1. 每个10-bit像素拆分为高8位和低2位
2. 通过位交叉组合形成5个完整字节
3. 常用于MIPI CSI-2、HDMI等视频传输协议

YUV422 8-bit

YUV422 8-bit 数据传输采用 UYVY 序列格式。该序列按照固定的字节顺序重复传输,每个完整单元由4个字节组成,依次为
U、Y、V、Y 分量。

二、字节顺序说明

1. 第一字节:U 分量(色度蓝色差)
2. 第二字节:Y 分量(亮度)
3. 第三字节:V 分量(色度红色差)
4. 第四字节:Y 分量(亮度)

三、传输序列示意

UYVY UYVY UYVY UYVY ...

YUV422 10-bit


YUV422 10-bit 数据传输采用 UYVY 序列格式。该序列按照固定的字节顺序重复传输,每个完整单元由 U、Y、V、Y 四个分量组成。

YUV422 10-bit 数据传输采用 UYVY 序列格式。该序列按照固定的字节顺序重复传输,每个完整单元由 U、Y、V、Y 四个分量组成。

二、分量排列方式

传输序列中,各分量按以下顺序排列:U 分量、Y 分量、V 分量、Y 分量。此序列持续重复形成完整的数据流。

三、序列示意

UYVY UYVY UYVY UYVY ...

该序列连续重复传输,与 8-bit 格式的排列顺序相同。

七 Data Reception

接收流程概述

YUV422 8-bit 数据接收是指接收端从 MIPI CSI-2 总线上获取 UYVY
序列数据并还原为图像像素的过程。接收端需按照发送端的传输格式解析数据流。

数据包解析

接收端首先接收完整的数据包,按照协议规范解析包头信息,确认数据类型为 YUV422
8-bit。随后提取有效载荷数据进行进一步处理。

UYVY 序列还原

接收端按字节顺序读取数据流:

1. 第一字节读取为 U 分量
2. 第二字节读取为 Y 分量
3. 第三字节读取为 V 分量
4. 第四字节读取为 Y 分量

YUV422 8-bit Data Reception

YUV422 10-bit Data Reception

YUV422 10-bit 数据格式的字节到 32-bit 内存字映射遵循 CSI-2 通用规则,与 8-bit 格式的特殊映射不同 YUV422 10-bit 数据格式的字节到 32-bit 内存字映射遵循 CSI-2 通用规则,与 8-bit 格式的特殊映射不同

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

智能手表PCBA生产难点拆解:从工艺到管控,这些坑如何避开?

摘要:智能手表PCBA的小型化、高密度化,使其生产难度大幅提升,本文结合深圳市天地通电子22年电子制造经验,以其海外爆款智能手表PCBA客户案例为核心,拆解4大核心生产难点,详解其工艺解决方案与品质管控逻辑&…

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

从零到精通:5步掌握猫抓浏览器扩展的完整资源捕获技巧

从零到精通:5步掌握猫抓浏览器扩展的完整资源捕获技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到这样的困境&#xf…

作者头像 李华
网站建设 2026/5/28 19:15:42

用Python给《三国演义》做一次“CT扫描”:手把手教你生成人物关系图与词云(附完整代码)

用Python透视《三国演义》:从文本挖掘到可视化叙事的技术实践翻开《三国演义》的纸质书页,我们看到的是一行行墨色文字;而打开它的数字文本,我们面对的则是可被算法解析的字符序列。这种视角转换正是现代文本分析的有趣之处——当…

作者头像 李华
网站建设 2026/5/28 19:11:07

如何摆脱AutoCAD束缚?开源DWG处理库LibreDWG实战指南

如何摆脱AutoCAD束缚?开源DWG处理库LibreDWG实战指南 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 你是不是经常遇到这样的困境:…

作者头像 李华
网站建设 2026/5/28 19:08:23

如何高效使用BG3ModManager:博德之门3模组管理终极教程

如何高效使用BG3ModManager:博德之门3模组管理终极教程 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 你是否在为《博德之门3》的模组管…

作者头像 李华