1. S32K144 GPIO外设特性
下面的内容来自于S32K用户手册的翻译,或者网上关于S32K系列的一些pdf文件介绍。有些内容可能会出现理解不到位或者翻译错误方面,如果大家有疑问最好可以查阅用户手册。
-
GPIO和PORT的数量
从用户手册,对于PCR(引脚控制寄存器)的数量描述,如下表:
每一个引脚都有一个独立的 PCR 寄存器对应着,那么S32K144型号,对应的GPIO引脚数量有:18+18+18+18+17 = 89,就是说最多有89个引脚。
然后PORT的数量,从上面表格也可以知道是:PORTA/PORTB/PORTC/PORTD/PORTE 一共是5个PORT。
-
每个引脚都能够产生中断请求,支持上升沿、下降沿、或者电平(高电平或者低电平)触发中断。
-
每个引脚都能产生DMA请求。
-
每个引脚都能在低功耗模式下唤醒MCU
-
每个引脚都有数字滤波器
-
可单独控制每个引脚的上下拉电阻
-
每个IO引脚均可复用为多种功能模式
2. S32K144 GPIO外设相关的两个模块
打开 S32K 的用户手册,可以了解到与GPIO外设相关的有两个模块,分别是:PORT 和 GPIO。下图就是从用户手册截图的这两个模块章节目录:
从用户手册的介绍以及对应寄存器的描述,大概了解到这两个模块的作用是:
- PORT:主要是上拉使能控制、引脚功能复用配置、引脚中断配置等功能。不过手册还有一些寄存器的功能还不清楚有什么用。
- GPIO:就是控制GPIO口的数据输入输出方向、GPIO引脚高低电平的控制等等。
所以,我们在写代码控制GPIO时,需要配置这两个外设,才能正确配置GPIO引脚。
3. PORT模块寄存器
下图是PORT模块的寄存器映射表:
只是截图了一部分,PCR寄存器是有32个的,每个引脚都有一个对应的寄存器。
3.1 PORT_PCRn寄存器
每个PORT端口,最多都有32个PCR寄存器(不同型号实际数量不一样,前面有截图介绍),一个pin引脚有一个对应的PCR寄存器,所以一个PORT端口,最多可以支持32个引脚。
PCR寄存器位域描述。下面是PCR寄存器的位域截图:
位域 | 名称 | R/W | 描述 |
---|---|---|---|
0 | PS | R/W | 上下拉选择 0:下拉 1:上拉 |
1 | PE | R/W | 上下拉使能 0:使能 1:使能 |
4 | PFE | R/W | 无源滤波器使能 0:使能 1:使能 |
6 | DSE | R/W | 引脚驱动能力配置 0:低驱动强度 1:高驱动强度 |
8-10 | MUX | R/W | 引脚的复用功能配置。是配置位普通IO口,还是特定的复用功能引脚 |
15 | LK | R/W | 锁定PCR寄存器。锁定之后,那么PCR寄存器无法被配置,直到下一次复位 |
16-19 | IRQC | R/W | I/O引脚中断配置。可配置DMA请求、中断触发模式(上升沿下降沿等) |
24 | ISF | R/W | 引脚中断状态标志位。该标志位由 IRQC 配置条件进行触发。硬件置位,软件清零。 |
3.2 PORT_GPCLR/GPCHR寄存器
全局引脚控制寄存器。每一个 PORT 都有对应的 PORT_GPCLR、PORT_GPCHR寄存器,PORT_GPCLR控制低16个pin引脚,PORT_GPCHR控制高16个pin引脚。这两个寄存器的操作只能是32位操作方式,不能按bit读写。
如果引脚对应的 GPWE 位写1,那么 GPWD 位配置对应引脚的 PCR 寄存器的值就会被更新。这个寄存器的主要作用就是,对引脚模式相同的配置,可以快速的配置多个引脚。
3.3 PORT_GICLR/GICHR寄存器
全局中断控制寄存器。每个 PORT 同样有这两个寄存器,作用和上面的全局引脚控制寄存器是一样的。对应相同中断模式的引脚配置,这个寄存器可以快速配置多个引脚。
3.4 PORT_ISFR寄存器
Interrupt Status Flag Register,中断状态标志寄存器。这个寄存器记录着所有32个pin引脚的中断状态,当配置的中断发生时,对应的引脚的bit位会被硬件置1。软件写1,对该标志位清0。
…
还又一些是和数字滤波器有关的寄存器,不一一记录了,到时在代码中了解。
4. GPIO寄存器
GPIO模块寄存器,前面介绍过,主要就是输入输出数据寄存器、方向控制、输入使能控制等作用。下面是 GPIO 寄存器的内存映射表。
大概介绍下每个寄存器的作用。
- PDOR:端口数据输出寄存器。就是输出引脚的值
- PSOR:端口输出置位寄存器。就是设置引脚输出高电平的
- PCOR:端口输出清除寄存器。设置引脚输出低电平
- PTOR:端口输出翻转寄存器。配置输出引脚电平翻转,1->0,0->1
- PDIR:端口数据输入寄存器。可以通过该寄存器读取对应引脚的输入电平
- PDDR:端口数据方向寄存器。设置引脚是输入还是输出。
- PIDR:端口输入使能寄存器。对应IO引脚位写1,那么这个引脚的输入功能就被禁止了。