文章编写者,国产爱好者,先楫代理商FAE-有兴趣朋友可以加微信L1356414643,可以提供基础SDK资料,部分基础技术支持,欢迎一起推动国产MCU事业,下面详细介绍先楫产品系列
目录
- 提供了PA PB PC PD PE PF PX PY PZ 一共8组GPIO,每组最多32个IO
- IO支持3V或者1.8V两种电压模式,分组供电
- IO支持开漏控制,内部上下拉,驱动能力调节,内置史密斯触发器
- 2个GPIO控制器,工2个处理器独立操作
- 支持读取任意IO输入或者输出
- 支持IO输入出发中断
- 2个快速GPIO控制器,作为处理器私有的IO快速访问接口
- 2个快速GPIO控制器FGPIO,作为处理私有IO快速访问接口
- 提供一个GPIO管理器,管理GPIO控制器的IO控制权限
- 电源管理区域专属IO PY拥有专属的GPIO控制器和IO配置模块,支持低功耗下下模式状态保持
- 电池备份域专属IO PZ用用专属的GPIO控制和IO配置模块,支持低功耗下模式状态保持
GPIO寄存器配置
一. IO 控制器分类:
1. 通用的IO控制器IOC
控制通用IO(PA,PB,PC,PD,PE,PF)
2.电源管理域IO控制器PIOC
控制电源管理域IO(PY),他的功能跟和通用IOC一致,可以配置电源管理域IO基本属性以及外设功能
3.电池备份域IO控制管理器BIOC
控制电池备份域IO(PZ),他的功能和通用IOC一致,可以配置备份域IO的基本属性以及外设功能.
PIOC和BIOC可以把电源管理域IO(PY)和电池备份管理域IO(PY)中的一个或者多个IO映射到系统电源域,这些IO就可以由IOC控制.
4.IO控制器分2种:
1.外设复用功能选择寄存器FUNC_CTL
- 输出回送功能:可再输入端读取到输出信号
- 模拟功能:用做魔音外设引脚,如ADC,ACMP等
- 外设功能复选器:选择映射到这个IO上的外设功能
2.IO控制器:PAD性能配置寄存器PAD_CTL
用户可以通过IOC_X_PAD_CTL 寄存器,配置任意IO基本属性
- 工作电压设置:指定IO的工作电压,本产品支持3.3V和1.8B 两种工作电压
- 开漏选择:用户可以把IO配置成开漏输出(open drain),若干IO配置成开漏输出,那么输出低电平时,正常输出;输出高电平,为高阻态,用户可以配置外部上拉电阻
- 施密特触发器:用户可以打开IO输入施密特触发器,即打开了滞回,增加抗干扰能力
- 内部上下拉电阻:可以配置成内部的上拉,也可以配置成内部下拉
- 配置驱动强度
二.GPIO控制器分类:
- 2个GPIO控制器(GPIO0 GPIO1)
- 控制通用IO(PA,PB,PC,PD,PE,PF),支持GPIO中断
- 2个快速GPIO控制器(FGPIO0,FGPIO1),不支持GPIO中断
- 电源管理域GPIO控制器(PGPIO),控制电源管理域IO(PY),支持配置GPIO中断
- 电池备份域GPIO控制器(BGPIO),控制电池备份域IO(PZ),支持配置GPIO中中断
- 经过适当的PIOC和IOC配置,2个GPIO控制器GPIO0,GPIO1和2个快速GPIO控制器FPGIO0,FGPIO1可以控制电源管理域IO(PY)和电池备份域IO(PZ)
1.GPIO控制器:控制器相关寄存器
- OE寄存器:GPIO 控制器支持OE 寄存器,每一个IO 都有对应的DIRECTION 控制位。用户把该位置1 就可以把对应的,用户把该位置1 就可以把对应的IO 配置为GPIO 输出,反之该IO 即为GPIO 输入。
- DO寄存器:配置GPIO的输出
- 输出高寄存器SET:1输出高,0不变
- 输出低寄存器CLEAR:1输出置低,0不变
- 翻转寄存器TOGGLE:对应位置位1,会把对应IO输出翻转;置0不变
- DI寄存器:读取IO的电平状态
- GPIO控制寄存器:中断相关的寄存器
- IE寄存器:中断使能,对应位置1就可以使能对应的IO中断
- TP寄存器:中断类型,对应位置1,表示出触发由边沿触发,0表示电平触发
- PL寄存器:中断极性,对应位置1,表示中断由下降沿或者低电平触发,对外位置0表示中断由上升沿或者高电平触发
- IF寄存器:查询中断状态,对应标志位置1,表示对应IO有中断带处理,对标志写1可以清除这个标志位.
- GPIO管理器GPIOM: GPIOxASSIGNy寄存器
- SELECT 位域:选择IO受到哪个IO控制器的控制
- HIDE 位域:由四个HIDE位组成,每个位1,表示这个IO的输入在对应GPIO控制器DI寄存器内不可见,无法读取GPIO 的输入
- LOCK位域:锁定这个IO对应的寄存器,一旦置1,这个寄存器配置知道下次复位前都不能在更改
- NON_SEC位域:按照系统安全状态进行访问权限设置,一单置1,寄存器只能在安全状态下访问.
- GPIO实例原理图
PINMUX TOOL使用配置
void init_gpio_pins(void)
{
//PE是置位1使能上下拉 ,PS置1是使能上拉,0是下拉
HPM_IOC->PAD[IOC_PAD_PB12].FUNC_CTL = IOC_PB12_FUNC_CTL_GPIO_B_12;
HPM_IOC->PAD[IOC_PAD_PB12].PAD_CTL = IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(0);
//PZ02 PE使能上下拉,PS使能上拉
HPM_IOC->PAD[IOC_PAD_PZ02].FUNC_CTL = IOC_PZ02_FUNC_CTL_GPIO_Z_02;
HPM_IOC->PAD[IOC_PAD_PZ02].PAD_CTL = IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(1);
}
先楫GPIO配置官方培训视频