HPM6700系列芯片:GPIO应用指南

HPM6700系列芯片是上海先楫半导体推出的高性能国产MCU。本篇文章介绍HPM6700系列芯片GPIO的应用指南。

HPM6700系列芯片GPIO基本情况介绍

● 提供PAPZ8 组最多195 GPIO功能复用引脚,每组最多32IO
IO 支持 3V 1.8V 两种电压模式,分组供电
IO 支持开漏控制、内部上下拉、驱动能力调节,内置施密特触发器
2GPIO 控制器,供2个处理器独立操作
支持读取任意IO的输入或者控制IO的输出
支持IO 输入触发中断
2 个快速GPIO控制器FGPIO,作为处理器私有的IO快速访问接口
● 提供一个
GPIO管理器,管理各GPIO控制器的IO控制权限
● 电源管理域专属
IO PYxx 拥有专属GPIO 控制器和IO配置模块,支持低功耗模式下状态保持
● 电池备份域专属
IO PZxx 拥有专属GPIO 控制器和IO配置模块,支持低功耗模式下状态保持

GPIO寄存器配置(IO控制器、GPIO控制器、GPIO管理器GPIOM

IO控制器分类

1. 通用IO控制器IOC

控制通用IOPAPBPCPDPEPF)。

2. 电源管理域IO控制器PIOC

控制电源管理域IOPY)。它的功能和通用IOC 一致,可以配置电源管理域 IO 的基本属性以及外设功能。

3.电池备份域IO控制器BIOC

控制电池备份域IOPZ)。它的功能和通用IOC 一致,可以配置电池备份域 IO 的基本属性以及外设功能。

PIOC BIOC 可以把电源管理域IOPY)和电池备份域 IOPZ)中的一个或者多个IO映射到系统电源域。之后,这些 IO 就可以由 IOC 控制。

当电源管理域 IOPY)的外设复用功能由 PIOC 设置为 ALT3 时, IOC 针对该 IO 的配置生效,而 PIOC 的配置不再生效。

当电池备份域 IOPZ)的外设复用功能由 BIOC 设置为 ALT3 时, IOC 针对该 IO 的配置生效,而 BIOC 的配置不再生效。

IO控制器:外设复用功能选择寄存器FUNC_CTL

通过 IOC IOC_X_FUNC_CTL 寄存器配置 IO 的外设功能。

1. 输出回送功能:可在输入端读取到输出信号。

2. 模拟功能:用作模拟外设的引脚,如 ADCACMP 等。

3. 外设功能复选器:选择映射到这个 IO 上的外设功能。

位域

名称

描述

16

LOOP_BACK

输出回送开关
0: 关闭输出回送功能
1: 打开输出回送功能

8

ANALOG

引脚切换至模拟输入输出功能开关
0: 关闭引脚模拟输入输出功能
1: 将引脚切换至模拟输入输出

4-0

ALT_SELECT

外设复用功能映射选择
0: 选择 ALT0 上的外设功能
1: 选择 ALT1 上的外设功能
...
31:
选择 ALT31 上的外设功能

IO控制器:PAD 性能配置寄存器PAD_CTL

用户可以通过 IOC_X_PAD_CTL 寄存器,配置任意 IO 的基本属性。

1. 工作电压设置:指定 IO 的工作电压,本产品的 IO 支持 3.3V 1.8V 两种工作电压。

2. 开漏选择:用户可以把 IO 配置成开漏输出(open drain)。如果 IO 配置成开漏输出,那么输出低电平时,正常输出;输出高电平时, IO 不会驱动高电平,而是输出高阻,需要用户配置外部上拉电阻。

3. 施密特触发器:用户可以打开 IO 的输入施密特触发器,即打开输入滞回(hysteresis),增加抗干扰能力。

4. 内部的上下拉电阻:即可以配置成内部上拉,也可以配置成下拉。

5. 配置驱动强度

 

 

位域

名称

描述

14

MS

引脚供电电压选择, 此位只对高速引脚可用
0: 3.3 伏特
1: 1.8 伏特

13

OD

开漏输出开关
0: 关闭开漏输出功能
1: 打开开漏输出功能

12

SMT

输入施密特触发器使能, 此位只对高速引脚可用
0: 不使能输入施密特触发器
1: 使能输入施密特触发器

11

PS

内部上下拉电阻选择
0: 下拉电阻
1: 上拉电阻

4

PE

内部上下拉功能开关
0: 关闭上下拉功能
1: 打开上下拉功能

2-0

DS

驱动强度选择:
高速引脚 3.3 伏时驱动强度:
000: 85.61 Ohm
001: 61.2 Ohm
010: 42.88 Ohm
011: 35.76 Ohm
111: 30.67 Ohm

高速引脚 1.8 伏时驱动强度:
000: 84.07 Ohm
001: 60.14 Ohm
010: 42.15 Ohm
011: 35.19 Ohm
111: 30.2 Ohm

普通引脚驱动强度:
00: 4mA
01: 8mA
11: 12mA

GPIO控制器:分类

1. 2 GPIO 控制器(GPIO0GPIO1

控制通用 IOPAPBPCPDPEPF),支持配置 GPIO 中断

2. 2 个快速 GPIO 控制器(FGPIO0FGPIO1

控制通用 IOPAPBPCPDPEPF),不支持配置 GPIO 中断

3. 电源管理域 GPIO 控制器(PGPIO

控制电源管理域 IOPY),支持配置 GPIO 中断

4.电池备份域 GPIO 控制器(BGPIO)

控制电池备份域 IOPZ),支持配置 GPIO 中断

经过适当的 PIOC IOC 配置, 2 GPIO 控制器 GPIO0GPIO1 2 个快速 GPIO 控制器 FGPIO0FGPIO1可以控制电源管理域 IOPY)和电池备份域 IOPZ)。

GPIO控制器:控制相关寄存器

1. OE寄存器:配置IO输入。该位置 1 对应的IO 配置为 GPIO 输出,反之该 IO 即为 GPIO 输入

2. DO 寄存器配置 GPIO 的输出

3. 输出高寄存器SET:对应位置 1,会把对应 IO 输出置高;置 0 IO 输出不变

4. 输出低寄存器CLEAR 对应位置 1,会把对应 IO 输出置低;置 0 IO 输出不变

5. 翻转寄存器TOGGLE 对应位置 1,会把对应 IO 输出翻转;置 0 IO 输出不变

6. DI 寄存器:读取 IO 的电平状态

GPIO控制器:中断相关寄存器

1. IE 寄存器:中断使能,对应位置 1 就可以使能对应 IO 的中断。

2. TP 寄存器:中断类型,对应位置 1,表示中断由边沿触发,对应位置0,表示中断由电平触发。

3. PL 寄存器:中断极性,对应位置 1,表示中断由下降沿或者低电平触发,对应位置 0,表示中断由上升沿或高电平触发。

4. IF 寄存器:查询中断状态,对应标志位置 1,表示对应 IO 有中断待处理。对标志位写 1,可以清除这个标志位。

GPIO 管理器 GPIOM GPIOxASSIGNy寄存器

1. SELECT 位域

选择这个 IO 受到哪个 GPIO 控制器控制。

2. HIDE 位域

4 HIDE 位组成,每一位置 1,即表示这个 IO 的输入在对应的GPIO 控制器 DI 寄存器内不可见,即GPIO 控制器无法读取到这个 IO 的输入。

3. LOCK

锁定这个 IO 的对应寄存器。一旦置 1,这个寄存器的配置直到下次复位前都不能再更改

4. NON_SEC

按照系统安全状态进行访问权限控制。一旦置 1,寄存器只能在安全状态下访问。

位域

名称

描述

31

LOCK

锁定该寄存器的设置,锁定后无法解锁,锁定只能由复位清零
0: 寄存器字段可以修改
1: 寄存器字段不可修改

11-8

HIDE

引脚状态对 GPIO 可见
0 : 1, GPIO0 不可见; 0: GPIO0 可见
1 : 1, GPIO1 不可见; 0: GPIO1 可见
2 : 1, CPU0 快速 GPIO0 不可见; 0: CPU0 快速 GPIO0 可见
3 : 1, CPU1 快速 GPIO1 不可见; 0: CPU1 快速 GPIO1 可见

1-0

SELECT

选择引脚控制来源
0: GPIO0;
1: GPIO1;
2: CPU0
快速 GPIO
3: CPU1
快速 GPIO

基于SDK创建GPIO工程:基于HPM6750EVK2

 

GPIO例程功能:检测Button对应的GPIO中断,翻转Led

 

int main(void)
{
    board_init();
    board_init_gpio_pins();
    printf("gpio example\n");

#ifdef BOARD_LED_GPIO_CTRL
    test_gpio_toggle_output();
#endif
    test_gpio_input_interrupt();

    while (1);
    return 0;
}

LED配置为IO输出

#define IOC_PB12_FUNC_CTL_GPIO_B_12            IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0) 

功能复用为ALT0,对应GPIO功能。

配置为GPIO输出。

 

 

Button配置为IO输入和中断

 

PZ为控制电池备份域IOBIOC配置为ALT3。改为IOC控制。 

#define IOC_PZ02_FUNC_CTL_GPIO_Z_02            IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0)
#define IOC_PZ02_FUNC_CTL_SOC_PZ_02            IOC_PAD_FUNC_CTL_ALT_SELECT_SET(3)

配置GPIO输入:

配置GPIO输入中断

程序运行效果:

系统上电LED翻转5次,LED灯状态off。

按下SW1,LED灯状态翻转,点亮LED。

 

基于Pinmux Tool修改GPIO配置 

此部分介绍如何通过Pinmux Tool对任意GPIO进行配置,实现所需要的功能。我们此处以将HPM6750EVK2上面的PE30配置为GPIO输出为例。

 

将Pinmux Tool生成的代码拷贝到gpio初始化函数。

 

 手写电平翻转代码到中断处理函数中。

 程序运行效果:通过按键SW1,翻转PE30的电平。

 

 

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenSun-1990

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值