在Xilinx SDK中使用Xil_Out32

问题描述 投票:2回答:3

在Vivado中,我成功地制作了一个简单的块图来控制Zybo板的LED。我可以观察到我的LEDs is: 0x4120 0000High Address is 0x4120 FFFF的偏移地址。现在,当我去SDK时:

#include <xil_printf.h>
#include <xil_types.h>
#include "platform.h"
#include "xgpio_l.h"

volatile u32 *LED_DATA = (u32 *) 0x41200000 ;   
int main()
{

    init_platform();

    xil_printf(" Writing to LEDs:   \n\r");
    Xil_Out32((&LED_DATA) + (0x00)  , 0xFFFFFFFF);     //All LEDs ON

    cleanup_platform();
    return 0;
}

我编程了FPGA并运行上面的代码。但仍然没有任何成功。有人可以指出我的错误吗?

提前致谢

fpga xilinx zynq vivado
3个回答
0
投票

你的错误是使用&LED_DATA,它返回指针LED_DATA的地址,而不是我认为你期望的0x41200000

尝试

Xil_out32(0x41200000, 0xFFFFFFFF);

要么

*LED_DATA = 0xFFFFFFFF;

0
投票

尝试

#define ADDR 0x41200000 // write this before main() function.

然后你必须在main函数中添加以下行。

Xil_Out32(ADDR + 0x00000000)  , 0xFFFFFFFF);     //All LEDs ON

这应该工作。


0
投票

这项工作

#define ADDRESS_GPIO_0   0x41200000     // vivado block diagram address editor

XGpioPs_Config * ConfigPtr1 = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
XGpioPs_CfgInitialize(&Gpio1, ConfigPtr1, ADDRESS_GPIO_0);
XGpioPs_SetDirection(&Gpio1, XGPIOPS_BANK0, 0x0F);
XGpioPs_Write(&Gpio1, XGPIOPS_BANK0, 0x0F);
© www.soinside.com 2019 - 2024. All rights reserved.