2015-04-11 2 views
1

В Vivado я успешно сделал простую блокдиаграмму для управления светодиодами моей платы Zybo. Я могу заметить, что адрес смещения для моих LEDs is: 0x4120 0000 и High Address is 0x4120 FFFF. Теперь, когда я иду в SDK:Использование Xil_Out32 в Xilinx 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 и запустил вышеуказанный код. Но все равно никакого успеха. Может ли кто-нибудь указать на мои ошибки?

Заранее спасибо

ответ

0

Ваша ошибка состоит в том, чтобы использовать &LED_DATA, который возвращает адрес указателя LED_DATA, не 0x41200000, как я думаю, что вы ожидаете.

Попробуйте

Xil_out32(0x41200000, 0xFFFFFFFF); 

или

*LED_DATA = 0xFFFFFFFF; 
+0

Спасибо за ответ Джонатан. Я уже пробовал это, но, к сожалению, это только приводит к зависанию программного обеспечения. – user3488736

+0

Вы использовали модуль axi_gpio для управления вашими светодиодами? –

+0

Да, я это сделал, это причина, по которой я спрашиваю. Обычно он должен работать. – user3488736

0

попробовать

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

Затем вы должны добавить следующую строку в основной функции.

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); 
Смежные вопросы