前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zynq中PS的MIO操作

Zynq中PS的MIO操作

作者头像
瓜大三哥
发布2019-10-30 10:34:14
1.1K0
发布2019-10-30 10:34:14
举报
文章被收录于专栏:瓜大三哥瓜大三哥

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

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

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

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的闪烁

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档