本期内容将由先楫技术官带您解锁如何利用HPM6700系列做到高达400Mhz的GPIO 翻转频率,往下翻即可了解详情!
--------- “ 解锁之旅 ” 由此开启 ---------
(本期测试开发板为:HPM6750EVK2)
1 GPIO模块特点简介
HPM6700/6400系列的MCU输入输出提供PA~PZ共8组最多195个GPIO功能复用引脚,每个GPIO都可以由2个GPIO控制器和2个快速GPIO控制器控制,由GPIO管理器GPIOM指定。提到的2 个快速 GPIO 控制器 FGPIO,作为处理器私有的 IO 快速访问接口,处理器因此可以零等待周期来访问FGPIO控制器。
2 GPIO控制器介绍
本节将介绍HPM6700/6400系列的通用输入输出控制器(General Purpose Input Output),GPIO 控制器包括:2 个 GPIO 控制器(GPIO0,GPIO1), 2 个快速 GPIO 控制器(FGPIO0, FGPIO1) 。
2.1 通用GPIO控制器控制
GPIO 控制器与快速 GPIO 控制器功能基本相同,可以按照 IO 端口 Port 读取输入,配置IO作为输入或者输出,设置 IO 输出,或者同时把一个或者多个 IO 输出设置高,设置低或者翻转。GPIOx 和 FGPIOx 可以控制通用 IO(PA, PB, PC, PD, PE, PF)。
2.2 快速 GPIO 控制器
快速GPIO控制器属于处理器的私有外设,如图1所示,处理器因此可以零等待周期来访问FGPIO控制器。当IO由FGPIO控制时,IO最大翻转率可达CPU主频的一半,以HPM6750 CPU运行在816MHz为例,IO翻转频率可408MHz。
图 1. 系统架构框图
通过在程序中选用FGPIO0或者FGPIO1这两个控制器来控制IO,将IO配置为输出后,可以使用DO【TOGGLE】寄存器,令这个IO循环反复做一个翻转,部分代码如图2所示:将PD16配置完成。需要注意的是,在测试波形之前,需要在Project的选项中打开优化设置,如图3所示:将Optimization Level设定为Level 2 for speed。
图2. FGPIO控制IO翻转代码
图3. 开启优化
设定完成后,就可以使用示波器连接到此IO后,得到的波形如图4.1所示,测量峰-峰值,此时的频率为409.7MHz, 的确达到了CPU主频的一半。
图4. 1 FGPIO控制IO的翻转波形
由于FGPIO控制IO的情况下,IO的翻转频率为主频的一半,那么修改当前的主频频率,还可以测出其他几种频率的翻转波形,如图4.2与4.3所示,分别是200Mhz和100Mhz频率的翻转波形,它们对应的主频分别是400Mhz与200Mhz。
图4. 2 FGPIO控制IO下200mhz波形
图4. 3 FGPIO控制IO下100mhz波形
HPM6700/6400系列MCU中的普通GPIO控制器控制IO时,也可以有5.8Mhz左右的翻转频率,图4.4为GPIO0控制IO时,用示波器抓取的波形。
图4.4 GPIO控制IO下的翻转波形
3 GPIO管理器GPIOM介绍
GPIO管理器是一个能为任一IO指定GPIO配置生效的模块,管理器的主要特点如下:
可以为IO分配指定的GPIO控制器,作为一个管理权限,可以从两个GPIO控制器和FGPIO控制器里任意选择。
可以配置IO输入是否对特定的GPIO控制器可见。
可以锁定一个IO的对应寄存器