开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

预留GPIO输出

预留GPIO口输出

说明
FZ3A/B_GPIO
FZ5C/D_GPIO
FZ9D_GPIO
命令行操作步骤
DEMO

说明

EdgeBoard已经预留多个GPIO接口,不同型号预留的数量略有不同,更详细的gpio输出控制请参见https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842398/Linux+GPIO+Driver#LinuxGPIODriver-UsingGPIOwithSysFs

FZ3A/B_GPIO

FZ3预留的GPIO接口在44针扩展口上,共设置了6个GPIO,电平标准为3.3V,连接器标号为J12,原理图如下,

连接器对应的pin1如下图:

J12管脚 信号名称 gpio number J12管脚 信号名称 gpio number
9 IO_B14_1P 338+78+4=420 10 IO_A14_1N 421
11 IO_B15_2P 422 12 IO_A15_2N 423
13 IO_C14_3P 424 14 IO_C13_3N 425

注意:设备系统中gpio number中的gpiochip不一定为338,可以通过ls /sys/class/gpio查看gpiochip的编号,然后再加78+4。

FZ5C/D_GPIO

连接器原理图

FZ5C/D目前有GPIO输出功能的为J15连接器对应的PS_MIO,其他PL端管脚没有配置GPIO功能

FZ5C/FZ5D预留的GPIO管脚见下表

J15 pin GPIO接口 gpio number 备注
pin53 PS_MIO6 338+6=344 系统内base_gpio为338+6(ps中mio gpio的端口号)=344
pin55 PS_MIO7 345
pin54 PS_MIO10 348
pin56 PS_MIO11 349
pin60 PS_MIO44 382

注意:设备系统中gpio number中的gpiochip不一定为338,可以通过ls /sys/class/gpio查看gpiochip的编号,然后再加6。

FZ9D_GPIO

连接器原理图

FZ9D预留的GPIO管脚见下表

J72 pin J72对应信号 对应PL端pin 191 1.5.2系统对应的gpio number 备注
pin5 EX_IO_1P B50_L12_P 332+78+6=416 PL端的GPIO是:系统内base_gpio为332+78(pl映射emio的IO号)+6(ip的pin的端口号)=416
pin6 EX_IO_1N B50_L12_N 417
pin7 EX_IO_2P B50_L10_N 418
pin8 EX_IO_2N B50_L10_P 419
pin9 EX_IO_3P B44_L8_P 420
pin10 EX_IO_3N B44_L8_N 421
pin11 EX_IO_4P B44_L6_P 422
pin12 EX_IO_4N B44_L6_N 423
pin13 EX_IO_5P B44_L9_N 424
pin14 EX_IO_5N B44_L9_P 425
pin15 EX_IO_6P B50_L6_P 426
pin16 EX_IO_6N B50_L6_N 427
pin17 EX_IO_7P B50_L5_P 428
pin18 EX_IO_7N B50_L5_N 429
pin19 EX_IO_8P B50_L1_P 430
pin20 EX_IO_8N B50_L1_N 431
pin21 EX_IO_9P B50_L2_P 432
pin22 EX_IO_9N B50_L2_N 433
pin23 EX_IO_10P B50_L3_P 434 系统内部已使用
pin24 EX_IO_10N B50_L3_N 435 系统内部已使用
pin25 EX_PS_MIO26 PS_MIO26 332+26=358 PS端的GPIO是:系统内base_gpio为332+26(ps中mio gpio的端口号)=358
pin26 EX_PS_MIO33 PS_MIO33 332+33=365

注意:设备系统中gpio number中的gpiochip不一定为332,可以通过ls /sys/class/gpio查看gpiochip的编号,然后再加78+6。

命令行操作步骤

1、确定GPIO输出引脚

以FZ3A/B为例,查看gpiochip,依据官方文档gpio number为base_gpio + other_gpio,所以IO_B14_1P2对应的gpio number为338+78+4=420

其他gpio number计算方法相同,请参考上面的预留gpio列表,在最新系统中gpionumber已给出。

2、操作GPIO管脚

具体步骤为:

  • 输出一个GPIO
  • 读取GPIO的direction和value
  • 控制GPIO的direction和value

具体操作如下:

//在EdgeBoard系统中操作如下命令
//建立PS_MIO12为GPIO
echo 349 > /sys/class/gpio/export

//查看PS_MIO12预置的direction和value
cat /sys/class/gpio/gpio349/direction
cat /sys/class/gpio/gpio349/value

//控制PS_MIO12方向为out,并输出低电平
echo out > /sys/class/gpio/gpio349/direction
echo 0 > /sys/class/gpio/gpio349/value

见下图:

DEMO

参见gpio.py

说明:初始化 gpio为 out 功能并间隔 1s循环切换 高低电平

"""
    Set GPIO output mode, and cycle switching level at interval of 1 s
"""
import os
import sys
import time
import argparse
from pathlib import Path
# args parse
parser = argparse.ArgumentParser(description='manual to gpio param')
parser.add_argument("--port", type=int, default=456, help='')
args = parser.parse_args()
# param init
port = args.port
port_path = "/sys/class/gpio/gpio{0}".format(port)
port_direction_path = "{0}/direction".format(port_path)
port_value_path = "{0}/value".format(port_path)
# enable gpio port
if Path(port_path).is_dir() is False:
    os.system("echo {0} > /sys/class/gpio/export".format(port))
# check enable success
if Path(port_path).is_dir() is False:
    print("Error: Enable Port {0} Faield.".format(port))
    sys.exit()
# gpio set out mode
os.system("echo out > {0}".format(port_direction_path))
while 1:
    print("Port is High ...")
    os.system("echo 0 > {0}".format(port_value_path))  # set low
    time.sleep(1)
    print("Port is Low ...")
    os.system("echo 1 > {0}".format(port_value_path))  # set high
    time.sleep(1)

附:

GPIO操作详情请参考https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842398/Linux+GPIO+Driver#LinuxGPIODriver-UsingGPIOwithSysFs

上一篇
预留串口输出
下一篇
适配4G上网卡