当前文档版本为 v0.1.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

GPIO

1 功能概述

本例程演示演示 GPIO Driver 的基本功能与使用方法。

2 环境准备

  • 硬件设备与线材:

    • PAN271x EVB 核心板底板各一块

    • JLink 仿真器(用于烧录例程程序)

    • USB-TypeC 线一条(用于底板供电和查看串口打印 Log)

    • 杜邦线数根或跳线帽数个(用于连接各个硬件设备)

  • 硬件接线:

    • 将 EVB 核心板插到底板上

    • 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板 USB->UART 插口相连

    • 使用杜邦线或跳线帽将 EVB 底板 J8 排针对 (P06 & TXD) 和 J9 排针对 (P05 & RXD) 分别短接起来

    • 使用杜邦线将 JLink 仿真器的:

      • SWD_CLK 引脚与 EVB 底板的 P00 排针相连

      • SWD_DAT 引脚与 EVB 底板的 P01 排针相连

      • SWD_GND 引脚与 EVB 底板的 GND 排针相连

    • 使用杜邦线将验证IO P02连接P12,P17连接P20

  • PC 软件:

    • 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率 115200(用于串口交互)

3 编译和烧录

例程位置:<PAN271x-DK>\01_SDK\samples\drivers\gpio

双击 Keil Project 文件打开工程进行编译烧录。

4 例程演示说明

  1. 烧录完成后,芯片会通过串口打印初始化 Log:

    CPU @ 48000000Hz
    +------------------------------------------------------------------------------+
    |                      PAN271X GPIO Sample Code.                               |
    +------------------------------------------------------------------------------+
    |    Press key to start specific testcase:                                     |
    |    Input '1'    Testcase 1: Push-pull Mode Test.                             |
    |    Input '2'    Testcase 2: Open-drain Mode Test.                            |
    |    Input '3'    Testcase 3: Quasi-bidirectional Mode Test.                   |
    |    Input '4'    Testcase 4: Debounce Test.                                   |
    |    Input '5'    Testcase 5: Interrupt Test.                                  |
    +------------------------------------------------------------------------------+
    |    Board Pin Connection Scheme:                                              |
    |      [Group1]                [Group2]                                        |
    |      P02       <---->        P12                                             |
    |      P17       <---->        P20                                             |
    +------------------------------------------------------------------------------+
    
  2. 串口输入字符‘1’,Gpio Push-Pull功能,每组IO先设输出后输入,确保每个IO功能正常,输出结果。

    GPIO Test OK, Success case: 0, Success Pin: P02
    GPIO Test OK, Success case: 0, Success Pin: P12
    GPIO Test OK, Success case: 0, Success Pin: P17
    GPIO Test OK, Success case: 0, Success Pin: P20
    
  3. 串口输入字符‘2’,Gpio Open-Drain功能,每组IO先设输出后输入,确保每个IO功能正常,输出结果(同第二点)。

  4. 串口输入字符‘3’,Gpio Quasi-Bidirectional功能,每组IO先设输出后输入,确保每个IO功能正常,输出结果(同第二点)。

  5. 串口输入字符‘4’,Gpio Debounce功能,Gpio设置上升沿中断,debouce时间为64个HCLK,软件模拟抖动波形,中断触发条件为电平从低至高并维持高128个HCLK(稳定触发),从低至高并维持高64~128 HCLK区间有可能触发中断,也有可能不触发,这取决于边沿变化与Debouce Sample CLK的相位,Debouce Sample CLK刚过发生边沿变化,那么判定高需要约2个Debouce Sample CLK,边沿变化后Debouce Sample CLK 马上采集,那么判定高只需要约1个Debouce Sample CLK

    Debounce Period - 64 Cycles HCLK
    P0_2 INT occurred, type: GPIO_INT_RISING.
    Debounce Period - 128 Cycles HCLK
    GPIO Test OK, Success case: 3, Success Pin: P02
    ...
    
  6. 串口输入字符‘5’,Gpio Interrupt功能,软件模拟电平变化,IO的所有中断类型均能正常触发。

    P0_2 INT occurred, type: GPIO_INT_RISING.
    P0_2 INT occurred, type: GPIO_INT_FALLING.
    P0_2 INT occurred, type: GPIO_INT_BOTH_EDGE.
    P0_2 INT occurred, type: GPIO_INT_BOTH_EDGE.
    P0_2 INT occurred, type: GPIO_INT_HIGH.
    P0_2 INT occurred, type: GPIO_INT_LOW.
    GPIO Test OK, Success case: 4, Success Pin: P02
    ...
    

5 RAM/Otp资源使用情况

  • Otp Size: 6.71kB

  • RAM Size: 0.77kB