http://m.blog.csdn.net/article/details?id=40954363

这几天在学习zynq,zynq芯片集成了两片arm a9的内核,和xilinx的fpga可编程部分集成在一块芯片上面。刚开始学习的时候使用vivado,感觉xilinx的vivado和sdk做的真的是很垃圾,太不人性化了,这也直接导致了我花了三天时间才学会了怎么分别用PS的MIO和PL部分点灯。主要都是因为一些软件使用上的细节问题,所以我觉得这软件做得不够人性化。好了,说了这么多,下面开始详细介绍了,很多资料都是讲如何用arm通过IP去用PL部分点灯,这部分我就不讲了,附件里面的lab2讲得很详细了(添加不了附件,放百度云盘里了http://pan.baidu.com/s/1c0ldfCs)。用arm的MIO点灯这部分我尽量写详细一点,不过太细节的我也就不说啦~~

STEP1:选择MIO Configuration,勾选中GPIO_MIO,我的开发板上的MIO7和MIO8上连着两个LED,所以这里选择MIO7和MIO8作为输出口,disable上拉pullup,我们使用这两个引脚,设置好了之后点击OK。这里吐槽一下,选择了GPIO_MIO后,所有的MIO就都被选择了,但是我只想用两个MIO7和MIO8这两个引脚啊,不知道怎么破,有人知道的话请告诉我一下~~

STEP2:后面就是常规的步骤一步一步来。不过有几点需要注意,就是如果你是在原来的工程上面修改的,建议你在export hardware时把原来工程的.sdk文件夹里面的东西全都删掉,然后再重新产生比特流,export hardware。我就是在这里吃了亏,在原来的工程上面修改后,export hardware后重新编译工程后,不知道为什么新的工程里面的xparameter.h里面没有对我的改动做相应的更新,所以导致我始终搞不明白如何使用PS的MIO做GPIO。这里再说一下,在sdk里面的bsp文件夹下的include文件中有一个xparameter.h文件,这个文件是对你在vivado中设计的硬件做一些定义,用过altera的nios的人都知道,nios就是通过一个system.h(好像是这个,记不大清了)来获取硬件配置参数。后来我把sdk全删掉重新export时就发现新的xparameter.h里面就出现了我想要的东西,就是PS的MIO相关定义。下面用图来说明。

.sdk文件夹中的内容,.hdf是生成比特流后产生的文件,应该是记录配置相关的参数,sdk工程根据这个文件生成对应的bsp文件。

bsp文件夹下面的include下面会有xparameter.h文件。

xparameter.h里面关于ps的GPIO的宏定义,程序就是根据XPAR_XGPIOPS_0_DEVICE_ID来找到这个对应的外设的,这个在后面的代码中会看到。如果你使用了PL部分的GPIO,也会有一个pl部分的GPIO的宏定义,和这个类似。注意这个是PS部分的,所以都用GPIOPS表示。如果你到了这一步,就说明前面的步骤都是对的了。要是没有,就说明前面的步骤哪里出错啦。

STEP3:现在就说说在sdk中如何用程序实现PS的GPIO的操作。主要是看bsp下面的libsrc中的gpiops文件中的代码。这个是xilinx已经实现好了的底层驱动,你只需要调用就可以了。

关键代码:

int led_gpiops()
{
int led_cnt;
XGpioPs_Config* ConfigPtr;

ConfigPtr = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_DEVICE_ID);
if (ConfigPtr == (XGpioPs_Config *)NULL) {
return XST_FAILURE;
}

if(XST_SUCCESS == XGpioPs_CfgInitialize(&GpioPs, ConfigPtr, ConfigPtr->BaseAddr));
else return XST_FAILURE;

XGpioPs_SetDirection(&GpioPs, 0, 0x0180);
XGpioPs_SetOutputEnable(&GpioPs, 0, 0x0180);//pin8 pin7
//XGpioPs_SetDirectionPin(&GpioPs, 7, 1);
while(1)
{
for(led_cnt=0;led_cnt<512;led_cnt++)
{
XGpioPs_Write(&GpioPs, 0, led_cnt);
printf("Led_cnt: %x\r\n", led_cnt);
//delay();
}
}
}

对于代码的理解,你可以自己去查看调用的那几个函数的功能,很简单的。不过还是强调一下,xilinx提供的bsp里面的底层驱动中对于PL的GPIO和PS的GPIOPS的底层驱动是有区别的,两者在很多地方不同,比如关于引脚方向设置,PL的GPIO是0设置为输出,PS的GPIOPS是1设置为输出。自己看看xilinx提供的驱动的函数说明就会知道啦。只是注意一下就好了。

折腾了好几天终于把PS部分的LED给点亮啦~~

zynq学习04 zynq中PS通过MIO控制LED相关推荐

  1. zynq开发系列2:GPIO连接MIO控制LED闪烁(SDK端代码编写详解)

    根据文档只需要3步,zynq文档学习之向GPIO引脚写数据 把GPIO方向设置为输出 设置输出使能 写数据到GPIO的输出引脚 参考官方参考教程学习编写代码(system.mss下没有这栏说明gpio ...

  2. zynq开发系列2:GPIO连接MIO控制LED闪烁

    MIO连接得是PS端模块,UART用来输出调试信息,GPIO连接MIO再连接到PS端LED.zedboard上LED是MIO7 这次实验主要在PS端运行所以zynq核只需要留下DDR和FIXED_IO ...

  3. 奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED

    奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江 ...

  4. keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)

    [朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...

  5. Linux系统中利用C语言控制LED的方法

    大家好, 今天主要和大家聊一聊,如何利用C语言控制LED灯的实验. 目录 ​第一:C语言板控制LED灯简介 第二:实验程序实现 ​第三:C语言实验控制程序 ​第一:C语言板控制LED灯简介 实际工作中 ...

  6. STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯

    基于上篇我们已经基本了解了软件界面和如何创建一个项目了 接着我们看如何利用外部按键来控制LED灯的亮灭,即外部中断. (本文讲述的是外部中断控制led取反以及如何实现流水灯) (如果想了解外部中断如何 ...

  7. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

  8. ZYNQ学习之pl和ps接口

    1.PL和PS的接口类型总共有两种: (1)功能接口:AXI.EMIO.中断.DMA流控制.时钟调试接口. (2)配置接口:PCAP.SEU.配置状态信号和Program/Done/Init信号.这些 ...

  9. zynq学习06 zynq的PL中加入的AXI_GPIO IP核来控制GPIO操作

    http://m.blog.csdn.net/article/details?id=19934837 http://www.cnblogs.com/rocbomb/archive/2014/07/29 ...

最新文章

  1. MPB:邓晔、王尚等-​环境样本中的细菌总量测定—流式细胞法
  2. (0085)iOS开发之OC与JS交互高级用法(JavaScriptCore)
  3. python编程软件在哪里下载-Thonny(Python编程工具)
  4. AtCoder Grand Contest 013D: Piling Up 题解
  5. UA MATH564 概率论VI 数理统计基础2 多元正态分布
  6. Python的setuptools详解【3】打包wheel并提交给pypi
  7. 文件上传利器SWFUpload入门简易教程
  8. php版 v2.0,KangPHP v2.0 正式版
  9. fopen rt wt matlab,fopen的使用方法
  10. pc工具不支持stb的加密方式_那些工作中常用的实用工具
  11. MAVEN处理本地jar包 ojdbc7 的spingboot配置
  12. 硬盘分区之MBR讲解
  13. FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)
  14. java 模板 word转pdf 可分页 带图片
  15. 一个简单的点赞功能的实现
  16. 毛永胜计算机教师,做新时代智慧型阳光教师 ——记丁香路小学教师心理健康实训讲座...
  17. eplan实战设计pdf百度云_EPLAN实战设计.pdf
  18. 上升了百分之几怎么算_增长百分比怎么算
  19. 一文了解 Julia(lang)
  20. 零基础移动端APP设计与开发教程

热门文章

  1. 第十六届全国大学生智能车竞赛-航天智慧物流创意组-技术培训
  2. 最温暖的大学,最火热的比赛
  3. 访问学术网站的便捷方式
  4. php sf框架,GitHub - YanCastle/sf: php swoole framework
  5. python分几种_python有几种类型?
  6. php backdoor creator encoder,Raven2 渗透(phpmailer漏洞+UDF提权)
  7. linux pthread_join 使用记录
  8. android5.1内核版本,Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核
  9. unity 控制点 贝塞尔曲线_在Unity中使用贝塞尔曲线
  10. ajax图书管理案例