问答
直播中

中科院

10年用户 208经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 嵌入式技术 连接器 光电显示 存储技术 接口/总线/驱动 控制/MCU RF/无线
私信 关注

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

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)

更多回帖

发帖
×
20
完善资料,
赚取积分