该笔记主要记录HPS端的GPIO如何控制,包括控制LED和Key

1.GPIO地址映射

Peripheral Base Address 0xf000_0000 64M

2.HPS外设

(1)GPIO Controller 
    支持数字消抖
    可配置中断模式
    支持上限71个IO 引脚,14个输入引脚
    由三个控制器控制,GPIO1 GPIO2 GPIO3
GPIO0 control GPIO[28:0]
GPIO1 control GPIO[57:29]
GPIO2 control GPIO[70:58]& GPI[13:0]

3.GPIO 寄存器组

    gpio_swporta_ddr:配置IO引脚方向
    gpio_swporta_dr:写数据到输出引脚上
    gpio_ext_porta:从输入端口读取数据

4.HPS_Led && Key

    LED和key连接到GPIO控制器上,我们可以通过控制GPIOcontroller实现操作HPS_Led & HPS_Key
    实现方式是通过软件API
    1)open:用来打开内存映射设备驱动   
    2)mmap:映射物理地址到物理用户空间
    3)alt_read_word:从指定寄存器读取一个值
    4)alt_write_word:写入一个值到指定寄存器
    5)munmap:清除内存映射
    6)close:关闭设备驱动
    7)alt_setbits_word:设定指定寄存器的指定位为1
    8)alt_clrbits_word: 设定指定寄存器的指定位为0 

5.对应到GPIO1寄存器:

    1)用open函数打开内存映射设备驱动
    2)mmap函数得到对应的虚拟基地址
    3)虚拟基地址+GPIO1控制器各寄存器的偏移地址,即得到GPIO1控制器各寄存器的地址入口 
    4)使用open mmap得出虚拟基地址
    if ((fd = open("d/dev/mem",(O_RDWR | O_SYNC))) == -1)
{
printf("ERROR:could not open \"dev/mem\"...\n");
retrun(1);
}
virtual_base = mmap (NULL,HW_REGS_SPAN,(PROT_READ | PROT_WRITE),MAP_SHARD,fd,HW_REGS_BASE);
        5)虚拟地址+GPIO寄存器偏移地址得到地址入口
        例:GPIO1方向寄存器gpio_swporta_ddr
        (virtual_base + ((uint32_t) ALT_GPIO1_SWPROTA_DDR_ADDR & (uint32_t) (HW_REGS_MASK)));
        6)通过software API结合bit_mask 操作HPS_LED HPS_Key

HPS端的GPIO如何控制的更多相关文章

  1. 通过HPS控制FPGA端的GPIO

    该笔记主要记录HPS端如何通过AXI Bridge控制FPGA端口的GPIO,主要是如何操作FPGA侧的Led 1.AXI Bridge         AXIB主要包括H2FB.F2HB.LWH2F ...

  2. HPS端如何通过AXI Bridge控制FPGA端口的GPIO

    该笔记主要记录HPS端如何通过AXI Bridge控制FPGA端口的GPIO,主要是如何操作FPGA侧的Led 1.AXI Bridge         AXIB主要包括H2FB.F2HB.LWH2F ...

  3. android gpio口控制

    android gpio口控制  GPIO口控制方式是在jni层控制的方式实现高低电平输出,类似linux的控制句柄方式,在linux系统下将每个设备看作一个文件,android系统是基于linux内 ...

  4. OpenWRT GPIO人口控制 WLED

    Linux根据系统GPIO系统架构简介 关于这个GPIO我一直认为非常非常长的时间easy.但.当你需要给一个特定的系统,参与这些GPIO什么时候.你会找到.不对,实例,mt7620n. GPIO#7 ...

  5. 全志R58平台的GPIO引脚控制

    全志R58平台的GPIO引脚控制 2017/8/18 15:50 版本:V1.0 开发板:SC5806(全志R58平台) SDK:android4.4.4 本文以GPIO引脚PD24为例,在开发板的背 ...

  6. Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一篇文 ...

  7. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  8. 【HLSDK系列】服务端实体 edict_t 和 控制类

    我们来了解一下引擎是怎么管理实体的吧!我们这里就说说服务端的实体(edict_t) 服务端用 edict_t 这个结构体来保存一个实体,可以说一个 edict_t 就是一个 服务端实体,下文简称实体. ...

  9. linux下对/sys/class/gpio中的gpio的控制 (转)

        在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的.其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/clas ...

随机推荐

  1. LVM扩容案例

    LVM基础命令: pvdisplay 查看检查pv pvremove /dev/sdb #清除一个pv fdisk -l 检查磁盘 df -h 检查全部磁盘大小 df -Th 检查磁盘大小和分区格式类 ...

  2. 20191031-5 beta week 1/2 Scrum立会报告+燃尽图 03

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9913 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 ...

  3. Selenium网页自动登录项目(基于Python从0到1)

    Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. 本文讲述的是通过自动化的方式登陆某一网站,其中包含Selenium+python自动化项目环境如何部 ...

  4. 痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验. 近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上"眼睛",是不 ...

  5. saltstack 自动化运维

    salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会进行大量的重复性操作,例如安装软 ...

  6. .NET Core 跨平台 GUI 开发之 GTtkSharp 初级篇

    .NET Core 跨平台 GUI 开发之 GTtkSharp 初级篇 本文作为初级篇,适合已经安装好.NET Core 环境以及 Gtk 环境,并具备了 C#开发基础知识,能跑一些简单的例子,希望更 ...

  7. 如何使用Git命令克隆仓库代码

    今天我的电脑装了新系统,刚装了Git到电脑上,突然有一个大胆的想法,以后不适用可视化工具了. 要逐步锻炼我的命令的操作能力,不能太依赖可视化工具. 今天先记录一下如何使用git命令克隆仓库代码 git ...

  8. html元素是否包含另外一个元素,以及classList属性

    如何判断一个元素A包含了元素B呢?如果不用contains方法的话,如何做呢? 腾讯面试的时候也出了这道题啊,当时没看dom的知识,所以一抹黑哦... 那就判断B是否为A的child喽,那也就是A是B ...

  9. 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你!

    Awsome Java Great Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序 ...

  10. 基于SpringBoot+Netty实现一个自己的推送服务系统

    目标 实现一个WebSocket服务中心,支持水平扩展 技术栈 SpringBoot.Netty.JDK8.MySQL.Redis.RabbitMQ.MyBatis-Plus 环境搭建 主要功能点说明 ...