0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在PL设计中使用MPSoC EMIO GPIO

YCqV_FPGA_EETre 来源:赛灵思中文社区论坛 作者:付汉杰 2020-09-03 09:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MPSoC 为PL提供了96个GPIO,通过EMIO管脚链接到PL。

普通PL设计,一般只会用到几个GPIO管脚。可以使用Vivado IPI中的Slice IP, 从其中分出指定数量的管脚。

Slice配置界面

上图中,输入宽度是95,因为pl_reset占用率一个管脚。slice从输入中提取emio的[7:5]三位,作为输出。

Xilinx Linux 中缺省使能了GPIO驱动。对于MPSoC,检查目录/sys/class/gpio,可以看到设备gpiochip338。

# ls -l /sys/class/gpio total 0 export gpiochip306 -> ../../devices/platform/amba/ff020000.i2c/i2c-0/0-0021/gpio/gpiochip306 gpiochip322 ->../../devices/platform/amba/ff020000.i2c/i2c-0/0-0020/gpio/gpiochip322 gpiochip338 -> ../../devices/platform/amba/ff0a0000.gpio/gpio/gpiochip338 unexport # ls /sys/class/gpio/gpiochip338/ -l total 0 base device -> ../../../ff0a0000.gpio label ngpio power subsystem -> ../../../../../../class/gpio uevent

Linux GPIO Driver下的GPIO使用,可以参考Linux GPIO Driver;GPIO User Space App。

从上述文章可以看到,使用GPIO不简单。

为了简化使用GPIO,编写了以下脚本。使用下列脚本,一条命令就能设置一个GPIO的输出值。脚本接受两个输入参数。第一个参数表示GPIO编号,MIO GPIO从0开始,EMIO GPIO从78开始。第二个参数是输出值。如果输出值是1,可以省略第二个参数。

#/bin/bash function gpio_output_func() { #echo "No.1 parameter: $1" #echo "No.2 parameter: $2" # MPSoC GPIO number. gpio_num=$[338+$1] # MPSoC EMIO GPIO number. # gpio_num=$[338+78+$1] echo "Set GPIO number: $gpio_num to value: $2" if [ ! -f /sys/class/gpio/gpio$gpio_num/direction ]; then # Export a GPIO pin echo $gpio_num > /sys/class/gpio/export fi # Read the direction and value from the GPIO pin */ # ls -l /sys/class/gpio/gpio$gpio_num/ gpio_direction=`cat /sys/class/gpio/gpio$gpio_num/direction` gpio_value=`cat /sys/class/gpio/gpio$gpio_num/value` echo -e "GPIO number: $gpio_num previous direction: $gpio_direction, previous value: $gpio_value" # Set the direction to an output and write a value 1 to GPIO pin */ echo out > /sys/class/gpio/gpio$gpio_num/direction echo $2 > /sys/class/gpio/gpio$gpio_num/value gpio_direction=`cat /sys/class/gpio/gpio$gpio_num/direction` gpio_value=`cat /sys/class/gpio/gpio$gpio_num/value` echo -e "GPIO number: $gpio_num current direction: $gpio_direction, current value: $gpio_value" } # Check GPIO chip gpio_chip=`cat /sys/class/gpio/gpiochip338/label` gpio_base=`cat /sys/class/gpio/gpiochip338/base` gpio_number=`cat /sys/class/gpio/gpiochip338/ngpio` echo "MPSoC GPIO information: chip: $gpio_chip, base: $gpio_base, number: $gpio_number." # cat /sys/class/gpio/gpiochip338/label # cat /sys/class/gpio/gpiochip338/base # cat /sys/class/gpio/gpiochip338/ngpio # The above line indicates that gpio 0th pin starts from 338 and ends at 511 (GPIO has total 174 pins for ZynqMP) if [ "$2" = "" ]; then gpio_output_func $1 1 else gpio_output_func $1 $2 fi

执行记录

# ./gpio_single_output.sh 81 MPSoC GPIO information: chip: zynqmp_gpio, base: 338, number: 174. Set GPIO number: 419 to value: 1 GPIO number: 419 previous direction: out, previous value: 0 GPIO number: 419 current direction: out, current value: 1 # ./gpio_single_output.sh 81 0 MPSoC GPIO information: chip: zynqmp_gpio, base: 338, number: 174. Set GPIO number: 419 to value: 0 GPIO number: 419 previous direction: out, previous value: 1 GPIO number: 419 current direction: out, current value: 0

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 管脚
    +关注

    关注

    1

    文章

    230

    浏览量

    33859
  • MPSoC
    +关注

    关注

    0

    文章

    203

    浏览量

    25225
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71388

原文标题:【分享】在PL设计中使用MPSoC EMIO GPIO,并使用脚本设置MPSoC EMIO GPIO

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Onsemi P 沟道 MOSFET:NTR0202PL 和 NVTR0202PL 的技术解析

    Onsemi P 沟道 MOSFET:NTR0202PL 和 NVTR0202PL 的技术解析 电子设计领域,MOSFET 作为关键元件,其性能直接影响着电路的效率和稳定性。今天,我们来深入探讨
    的头像 发表于 04-19 15:45 545次阅读

    PL 3120 和 PL 3150 电力线智能收发器:设计与应用全解析

    PL 3120 和 PL 3150 电力线智能收发器:设计与应用全解析 在当今的电子设备设计中,电力线通信技术因其便捷性和成本效益而备受关注。PL 3120 和 PL 3150 电力线
    的头像 发表于 03-31 09:10 134次阅读

    【MCU学习】GPIO详解

    本实验通过一个“小实验框架 GPIO Mode Lab”,同一个 GPIO 引脚上依次配置不同模式,并用 ADC 探头测量电压、同时读取数字电平,系统化地观察。
    的头像 发表于 01-24 11:45 4834次阅读
    【MCU学习】<b class='flag-5'>GPIO</b>详解

    为什么FPGA设计中使用MicroBlaze V处理器

    各类行业与应用中,经常能看到许多 FPGA 设计。一个非常常见的现象是:设计者常常用复杂的有限状态机(FSM)来实现 I²C、SPI、GPIO 时序控制等功能。
    的头像 发表于 12-19 15:29 8552次阅读
    为什么<b class='flag-5'>在</b>FPGA设计<b class='flag-5'>中使</b>用MicroBlaze V处理器

    Amphenol ANYTEK 端子排新品:PL 系列的技术亮点与应用场景

    Amphenol ANYTEK 端子排新品:PL 系列的技术亮点与应用场景 电子工程领域,优质的连接解决方案至关重要。Amphenol ANYTEK 作为值得信赖的全球供应商,近期推出了一系列新型
    的头像 发表于 12-10 09:55 489次阅读

    Amphenol ANYTEK PL系列端子块新品技术解析

    Amphenol ANYTEK PL系列端子块新品技术解析 电子工程领域,端子块是实现电路连接不可或缺的基础部件。Amphenol ANYTEK推出的PL系列端子块新品,凭借其先进的技术和出色
    的头像 发表于 12-10 09:35 545次阅读

    高效升降压芯片 PL5500/PL5501:解锁宽压场景电源设计新可能

           工业控制、汽车电子、智能设备等领域,电源电压波动是工程师面临的常见挑战 —— 输入电压可能高于、低于或等于设备所需的稳定输出电压,传统的单一降压或升压芯片难以应对。而 PL
    的头像 发表于 11-19 15:01 1275次阅读

    GPIO、PWM、ADC,到底怎么区分?

    嵌入式开发中,我们经常听到GPIO、PWM、ADC这些术语。初学者常常搞不清楚它们的区别和用途:“它们不是都是和电平有关吗?为什么还要分这么多种?”今天,我们就把这些基础概念讲清楚,让你在动手开发
    的头像 发表于 11-14 10:28 1066次阅读
    <b class='flag-5'>GPIO</b>、PWM、ADC,到底怎么区分?

    ZYNQ PS与PL数据交互方式

    ZYNQ SoC 的 PS (Processing System) 和 PL (Programmable Logic) 之间的数据交互是系统设计的核心。
    的头像 发表于 10-15 10:33 1321次阅读
    ZYNQ PS与<b class='flag-5'>PL</b>数据交互方式

    PL4807-ADJ

    PL4807-ADJ
    发表于 09-08 18:53 0次下载

    AIWA-PL55维修手册

    PL55维修手册
    发表于 07-07 10:35 14次下载

    AIWA PL70 维修手册

    AIWA PL70 维修手册
    发表于 06-09 14:54 3次下载

    基于AD9613与Xilinx MPSoC平台的高速AD/DA案例分享

    本文主要介绍基于Xilinx UltraScale+MPSoC XCZU7EV的高速AD采集与高速DA输出案例
    的头像 发表于 06-03 14:22 1103次阅读
    基于AD9613与Xilinx <b class='flag-5'>MPSoC</b>平台的高速AD/DA案例分享

    FX3为什么无法Windows中使用Gstreamer?

    我正在开发 FX3,我可以 Linux 和 Windows 中使用 y8 格式的 ffmpeg 流式传输相机, Linux 中使用 y8 格式的 Gstreamer,但我无法
    发表于 05-29 06:59

    迅为RK3568驱动指南GPIO子系统 GPIO操作函数实验

    迅为电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1492次阅读
    迅为RK3568驱动指南<b class='flag-5'>GPIO</b>子系统 <b class='flag-5'>GPIO</b>操作函数实验