【Z-turn Board试用体验】+ 轻松点灯:Z-TURN 开发板ZYNQ PS部分通过MIO控制小灯 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【Z-turn Board试用体验】+ 轻松点灯:Z-TURN 开发板ZYNQ PS部分通过MIO控制小灯

中科院 ( 楼主 ) 2015-6-14 14:27:17  只看该作者 倒序浏览
zynq芯片集成了两片arm a9的内核,和xilinx的FPGA可编程部分集成在一块芯片上面。刚开始学习的时候使用vivado,现在已经在纯玩Linux了。
第一步:
选择MIO Configuration,勾选中GPIO_MIO,我的开发板上的MIO7和MIO8上连着两个LED,所以这里选择MIO7和MIO8作为输出口,disable上拉pullup,我们使用这两个引脚,设置好了之后点击OK。
第二步:如果你是在原来的工程上面修改的,建议你在export hardware时把原来工程的.sdk文件夹里面的东西全都删掉,然后再重新产生比特流。.sdk文件夹中的内容,.hdf是生成比特流后产生的文件,应该是记录配置相关的参数,sdk工程根据这个文件生成对应的bsp文件。
第三步:写main文件中的代码:xilinx提供的bsp里面的底层驱动中对于PL的GPIO和PS的GPIOPS的底层驱动是有区别的,两者在很多地方不同,比如关于引脚方向设置,PL的GPIO是0设置为输出,PS的GPIOPS是1设置为输出。

关键代码:
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: %xrn", led_cnt);
//delay();
}
}
}


1个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-25 20:14 , Processed in 0.401051 second(s), Total 38, Slave 28 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表