这个页面的 最新开发版本 可能比这个发布的 2.0.0rc2 版本新。

Pinmux

SOC 通过 IO 引脚进行外设控制和数据交互,W80X 系列的 SOC 包含有不同封装,引出不同数量的 IO, 举例下图为 W800 的引脚图:

w800_io

考虑到芯片封装面积及成本关系,芯片的引脚数量会做尽可能的做限制,而为了多支持一些功能,一些引脚会被复用成多种功能,也即 当前章节所介绍的 pinmux 引脚复用。

IO pinmux 定义是项目开发非常重要,但很容易混乱的地方。拿到新的平台或启动新的设备功能,往往要先依据项目功能需求,结合 硬件工程师的原理图,在SDK中配置好 pinmux 参数,这是相关设备驱动能正常运行的前提。 为了避免混乱,可以注意如下一些地方:

备注

1.注意 所参考的 芯片规格书 务必与项目所选型的 SOC 一致。

2.注意 设备表 中所配置的 IO 是否超出 了所选择 SOC 的支持的范围。

3.注意 设备表 中所配置的 IO 是否在多个 device 中被重复定义。

4.注意 设备表 中对 IO 的属性配置是否正确 (如 pullup/pulldown, input/output方向 等)。

5.注意 项目新增加的应用软件中 是否存在上述 2,3,4 的问题。

未来我们会完善并提供一些途径协助用户 预先检测出这些错误。

如下几个表格是 依据 W80X 系列 SOC 的芯片规格书 整理出的 更加直观的 Pinmux Table.

W800 芯片的 pinmux 功能复用关系

w800_pinmux

W801S 芯片的 pinmux 功能复用关系

w801s_pinmux

W802 芯片的 pinmux 功能复用关系

w802_pinmux

W803 芯片的 pinmux 功能复用关系

w803_pinmux

W806 芯片的 pinmux 功能复用关系

w806_pinmux

IO function 对 pin 的属性设定要求

IO 通过 pinmux 配置 选择成 不同的function, 部分 function 对 pin 的属性设定会有要求, 如下表格 汇总了 W80X SOC 各个 IO functioin 的具体 IO 属性要求:

IO Function

子功能需求

Pullmode

Direction

LCD_SEG

FLOAT

INPUT

LCD_COM

FLOAT

INPUT

ADC

FLOAT

INPUT

Touch

FLOAT

INPUT

I2C_SDA

PULLUP

无关

I2C_SCL

PULLUP

无关

PWM_BREAK

高电平触发

PULLDOWN

无关

PWM_BREAK

低电平触发

PULLUP

无关

UART RX

PULLUP

无关

GPIO

Input

PULLUP/DOWN/FLOAT

INPUT

GPIO

Output

无关

OUTPUT

I2S_LRCLK

顺序 L->R

PULLUP

无关

I2S_LRCLK

顺序 R->L

PULLDOWN

无关

I2S BCLK/DI/DO

无关

无关

SDIO

无关

无关

HSPI

无关

无关

SIM

无关

无关

PWM

无关

无关

MMC

无关

无关

Uart TX/RTS/CTS

无关

无关

JTAG

无关

无关

比如:WM_GPIO_NUM_1 被配置成 OPT6, 即 ADC 功能,也需要配合将 IO 属性配置成 FLOAT, 将 GPIO Direction 配置成 INPUT。

备注

1.W80X 系列 SOC 上电后,所有 IO 默认为 Floating, Input 状态。

2.IO 配置成 OPT6, OTP7 时,是将此 IO 设定成模拟功能。这种条件下 该 IO 的 Pullmode 不要设定 pullup , 否则可能在一些环境中造成芯片损坏。

3.PWM 应用层需要注意 IO 配置,1个 channel 仅1个 pin func 配置,保持仅一路输出,若多个 pin 设定成同1个 PWM Channel (如:GPIO2, GPIO10 都设定成 PWM0), 这些 pin 都会有PWM0波形的输出。