[X]关闭

vivado综合和仿真都通过,0error,下载到板子后板子没有反应

文档创建者:calpyso
浏览次数:9119
最后更新:2019-07-30
 
在ov5640内增加了按钮功能,编译和仿真都能顺利通过,就是下载到板子之后,按钮没有反应,目前不知道怎么排查问题。

发表评论已发布 6

mlink_fae

发表于 2019-7-24 11:36:54 | 显示全部楼层

检查按键加在哪个位置,功能是什么,检查一下逻辑(时钟、复位)是否存在问题。对比原来的工程,找不同

calpyso

发表于 2019-7-25 11:00:02 | 显示全部楼层

mlink_fae 发表于 2019-7-24 11:36
检查按键加在哪个位置,功能是什么,检查一下逻辑(时钟、复位)是否存在问题。对比原来的工程,找不同


    int Status;
        u32 Btn_val;


            /* Initialize the GPIO driver */
            Status = XGpio_Initialize(&Gpio, XPAR_AXI_GPIO_0_DEVICE_ID);
            if (Status != XST_SUCCESS) {
                xil_printf("Gpio Initialization Failed\r\n");
                return XST_FAILURE;
            }
            /* Set the direction for all signals as inputs or output ,Bits set to 0 are output and bits set to 1 are input.*/

            XGpio_SetDataDirection(&Gpio, BTN_CHANNEL, 1);
            XGpio_SetDataDirection(&Gpio, LED_CHANNEL, 0);


             /* Write to discretes register for the specified GPIO channel */
            while(1){
                /*Read state of discretes for the specified GPIO channnel.*/
                Btn_val=XGpio_DiscreteRead(&Gpio, BTN_CHANNEL);
             //test Btn_val
                if(Btn_val)
                {
                    XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0x0);
                  }
                else{
                      XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0xf);
                  }


    // Initialize OV5640 regesiter

    I2C_config_init();

    //Xil_Out32((VDMA_BASEADDR + 0x030), 0x108B);// enable circular mode
    Xil_Out32((VDMA_BASEADDR + 0x030), 0x108B);// enable circular mode
    Xil_Out32((VDMA_BASEADDR + 0x0AC), VIDEO_BASEADDR0);    // start address
    Xil_Out32((VDMA_BASEADDR + 0x0B0), VIDEO_BASEADDR1);    // start address
    Xil_Out32((VDMA_BASEADDR + 0x0B4), VIDEO_BASEADDR2);    // start address
    Xil_Out32((VDMA_BASEADDR + 0x0A8), (H_STRIDE*3));        // h offset (H_STRIDE* 3) bytes
    Xil_Out32((VDMA_BASEADDR + 0x0A4), (H_ACTIVE*3));        // h size (H_ACTIVE * 3) bytes
    Xil_Out32((VDMA_BASEADDR + 0x0A0), V_ACTIVE);            // v size (V_ACTIVE)
        /*****************DDR**********************/
            Xil_Out32((VDMA_BASEADDR + 0x000), 0x8B);         // enable circular mode
    Xil_Out32((VDMA_BASEADDR + 0x05c), VIDEO_BASEADDR0);     // start address
    Xil_Out32((VDMA_BASEADDR + 0x060), VIDEO_BASEADDR1);     // start address
    Xil_Out32((VDMA_BASEADDR + 0x064), VIDEO_BASEADDR2);     // start address
    Xil_Out32((VDMA_BASEADDR + 0x058), (H_STRIDE*3));         // h offset (H_STRIDE * 3) bytes
    Xil_Out32((VDMA_BASEADDR + 0x054), (H_ACTIVE*3));         // h size (H_ACTIVE * 3) bytes
    Xil_Out32((VDMA_BASEADDR + 0x050), V_ACTIVE);             // v size (V_ACTIVE)
            

calpyso

发表于 2019-7-25 11:01:29 | 显示全部楼层

mlink_fae 发表于 2019-7-24 11:36
检查按键加在哪个位置,功能是什么,检查一下逻辑(时钟、复位)是否存在问题。对比原来的工程,找不同

直接把Ch06_axi gpio按键中的main函数添加到ov5640的main函数之中,按照串行逻辑应该两个步骤都可以执行的。

uisrc

发表于 2019-7-25 13:52:11 | 显示全部楼层

你把while循环放在了前面,按键可以执行了,但是while循序之后的代码是关于VDMA初始化的永远不会被执行了,所以摄像头自然不会再工作
越努力越幸运!加油!

calpyso

发表于 2019-7-29 10:01:00 | 显示全部楼层

admin 发表于 2019-7-25 13:52
你把while循环放在了前面,按键可以执行了,但是while循序之后的代码是关于VDMA初始化的永远不会被执行了, ...

但是现在按键也不执行

uisrc

发表于 2019-7-30 16:52:55 | 显示全部楼层

除非你的程序在VMDA部分已经奔溃了,你可以单步调试下,看是否可以进入while循环去执行按键程序
越努力越幸运!加油!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则