Pinmux
SOC 通过 IO 引脚进行外设控制和数据交互,W80X 系列的 SOC 包含有不同封装,引出不同数量的 IO, 举例下图为 W800 的引脚图:
考虑到芯片封装面积及成本关系,芯片的引脚数量会做尽可能的做限制,而为了多支持一些功能,一些引脚会被复用成多种功能,也即 当前章节所介绍的 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 功能复用关系
W801S 芯片的 pinmux 功能复用关系
W802 芯片的 pinmux 功能复用关系
W803 芯片的 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波形的输出。