浅谈Zynq中GPIO的BANK分布

电子说

1.3w人已加入

描述

在编写程序之前,先来了解GPIO的BANK分布,在UG585文档GPIO一章中可以看到GPIO是有4个BANK,注意与MIO的BANK区分。BANK0控制32个信号,BANK1控制22个信号,总共是MIO的54个引脚,BANK2和BANK3共能控制64个PL端引脚,每一组都有三个信号,输入EMIOGPIOI,输出EMIOGPIOO,输出使能EMIOGPIOTN,共192个信号。

bank

下图为GPIO的控制,实验中会用到输出部分的寄存器,数据寄存器DATA,数据掩码寄存器MASK_DATA_LSW,MASK_DATA_MSW,方向控制寄存器DIRM,输出使能控制器OEN。

bank

程序中利用以下函数设置方向和输出使能:

int main()

{

    XGpioPs_Config *GPIO_CONFIG ;

    int Status ; 

    //通用手法,查找GPIO列表

    GPIO_CONFIG= XGpioPs_LookupConfig(MIO_0_ID);

    //Exception的检测

    Status= XGpioPs_CfgInitialize(&GPIO_PTR, GPIO_CONFIG, GPIO_CONFIG->BaseAddr) ;

    if (Status != XST_SUCCESS)

    {

        return XST_FAILURE ;

    }

    //设置MIO的PIN引脚方向

    XGpioPs_SetDirectionPin(&GPIO_PTR,0, GPIO_OUTPUT) ;

    XGpioPs_SetDirectionPin(&GPIO_PTR,13, GPIO_OUTPUT) ;

    //使能MIO的PIN引脚输出

    XGpioPs_SetOutputEnablePin(&GPIO_PTR,0, GPIO_OUTPUT) ;

    XGpioPs_SetOutputEnablePin(&GPIO_PTR,13, GPIO_OUTPUT) ;


    while(1)

    {

        XGpioPs_WritePin(&GPIO_PTR,0, 1) ;

        XGpioPs_WritePin(&GPIO_PTR,13, 0) ;

        usleep(100000);

        XGpioPs_WritePin(&GPIO_PTR,0, 0) ;

        XGpioPs_WritePin(&GPIO_PTR,13, 1) ;

        usleep(100000);

    }

    return 0;

}

实现两个LED的闪烁

编辑:hfy

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分