zoukankan      html  css  js  c++  java
  • ZYNQ DRIVER之GPIO

    地图图片

    重要特性:

    • 支持动态编程分配一个channel的各位为输出或输入
    • 支持reset之后,各个bit的值不同
    • 支持产生中断请求(这个怎么用?)( The channels can be configured to generate an interrupt when a transition on any of their inputs occurs.)

    image

    关于能运行的最高速度:

    image

    对GPIO不同配置下,会耗费的FPGA资源:

    image

    image

    看到这里,我还是没太搞清楚如何配置各个bit随意为输入或者输出,但是可以看到上表中的寄存器GPIO_DATA应该是写和读复用的,在程序中,也是对应的一句读语句,可能把所有的一个channel的值都读到这个寄存器中,然后根据需要取用某个bit,然后再写的语句,也是把整个寄存器都写上。或许是这样吧。

    image

    这个能很好的解释我关于配置bit的疑问:

    image

    具体对每个bit配置为输入或输出,是由三态门寄存器实现的。

    驱动使用:

    image

    这是设置bit的方向,一开始觉得很复杂,但是其实就是个channel1或者channel2设置一个u32,这个u32的值可以具体地去控制每个bit的方向,和单片机里的DDRA是类似的。

    而初始化GPIO的函数也是比较简单的:

    image

    在此之前会定义一个structure,这个结构体的->BaseAddress就是初始化的地址。

    下面这个函数是做static初始化的:(是不是上面那个函数是在运行过程中需要不断地去改变一个口的输入输出状态,貌似不是这样的,我现在没太搞明白这两个初始化函数的区别?)

    image

  • 相关阅读:
    公共服务领域英文译写规范
    [.NET Core]
    [WebAPI]
    [C#]
    [ES]
    [.Net Core]
    [SourceTree]
    如何使用一个库中不存在的函数
    在使用masm32 rc编译资源文件.rc出现的问题
    MSDN 2005 安装问题
  • 原文地址:https://www.cnblogs.com/uvw654/p/3696635.html
Copyright © 2011-2022 走看看