创建引脚封装
本教程将引导您完成芯片引脚封装模板的创建。引脚封装是芯片模板开发的第一步,定义了芯片的物理引脚特性,为后续的外设配置和代码生成提供基础。
概述
引脚封装模板以系列为维度,定义该系列下的封装类型和引脚特性。每个封装模板包含:
- 封装类型:LQFP、QFN、BGA 等物理封装
- 引脚数量:该封装包含的引脚总数
- 引脚名称:PA0-PA15、PB0-PB15 等
- 引脚电气类型:Power、I/O、Analog、Reset 等
- 复用功能:每个引脚支持的复用功能(如 USART1_TX、TIM2_CH1)
- 颜色标识:不同功能类型的引脚在界面上的显示颜色
准备工作
开始配置引脚封装前,请准备以下资料:
- 芯片数据手册 (Datasheet) — 查找引脚定义表,通常包含封装图和引脚功能表
- 芯片参考手册 (Reference Manual) — 查找 GPIO 复用功能映射表
- SDK 头文件 — 查找引脚复用功能的宏定义
数据手册示例
以下是一个典型的引脚功能表(以 LQFP32 封装为例):
| 引脚编号 | 引脚名称 | 类型 | 主要功能 | 复用功能 |
|---|---|---|---|---|
| 1 | VBAT | Power | 备份电源 | - |
| 5 | PA0 | I/O | PA0 | USART1_TX, TIM2_CH1 |
| 6 | PA1 | I/O | PA1 | USART1_RX, TIM2_CH2 |
创建封装模板
步骤 1:新增系列
在 McuStudio 芯片包配置界面中:
- 点击
引脚封装模块→新增系列 - 输入系列名称(如
GD32F103) - 右键点击系列,选择
新增封装
步骤 2:配置封装属性
选择封装后,在右侧面板中配置以下属性:
// 封装配置示例
{
package: 'LQFP48', // 封装类型
pinCount: 48, // 引脚数量
description: 'LQFP 48-pin 7x7mm'
}
封装命名建议
封装名称建议使用有意义的标识,便于后续复用。例如:
LQFP48— 48 引脚 LQFP 封装QFN32— 32 引脚 QFN 封装LQFP64_10x10— 64 引脚 LQFP 封装,尺寸 10x10mm
步骤 3:配置引脚信息
选中某个引脚后,在右侧属性面板中配置:
引脚基本属性
{
name: 'PA0', // 引脚名称
port: 'GPIOA', // 所属端口
pin: 'GPIO_PIN_0', // 引脚宏
dir: 'left', // 方向(left/right/top/bottom)
num: 0, // 引脚编号
type: 'I/O' // 电气类型
}
引脚颜色配置
为不同类型的引脚设置颜色标识:
| 引脚类型 | 默认颜色 | 说明 |
|---|---|---|
| Power (VDD/VSS) | 红色 | 电源引脚 |
| I/O | 绿色 | 通用 I/O 引脚 |
| Analog | 蓝色 | 模拟功能引脚 |
| Reset | 橙色 | 复位引脚 |
| Boot | 灰色 | 启动配置引脚 |
配置复用功能
引脚复用功能是芯片模板的核心配置之一,决定了引脚可以承担哪些外设功能。
复用功能数据格式
每个引脚的复用功能以数组形式存储:
{
name: 'PA0',
af: [
{
name: 'Reset_State',
value: '-1'
},
{
name: 'GPIO_Input',
value: 'GPIO_Input'
},
{
name: 'USART1_TX',
value: 'GPIO_ALTERNATE_USART1_TX'
},
{
name: 'TIM2_CH1',
value: 'GPIO_REMAP_TIM2_CH1'
}
]
}
字段说明
| 字段 | 说明 | 示例 |
|---|---|---|
name | 显示在界面上的功能名称 | USART1_TX |
value | 对应的 SDK 宏定义 | GPIO_ALTERNATE_USART1_TX |
特殊功能
- Reset_State (值 =
-1):复位状态,表示引脚未被使用,选择此功能会从 GPIO 表中删除该引脚 - GPIO_Input:通用输入模式,用于普通数字输入
- GPIO_Output:通用输出模式,用于普通数字输出
- GPIO_Analog:模拟模式,用于 ADC/DAC 等模拟外设
引脚配置脚本
在引脚配置中,可以通过事件脚本实现自动化的引脚管理:
updatePinTable 事件
当用户选中/取消选中引脚时,系统会触发 peri:updatePinTable 事件:
// 监听事件配置
{
channel: 'peri:updatePinTable',
script: function(event) {
// event.pin — 被操作的引脚对象
// event.selected — 是否被选中
// event.alternate — 选择的复用功能
}
}
参考数据手册示例
以下是一个完整引脚配置的对照示例:
数据手册引脚图
LQFP48 封装:
PA0 ● 1 48 ○ PB15
PA1 ● 2 47 ○ PB14
PA2 ● 3 46 ○ PB13
... ... ...
VDD ○ 24 25 ○ GND
对应的配置代码
// info.cjs 中的封装定义
{
packages: [
{
name: 'LQFP48',
pins: 48,
description: 'LQFP 48-pin package'
}
]
}
