原创 USB3.0芯片终于出来了_LZ3014 USB3.0开发板19(cyfxgpioapp例程分析2)

2011-12-22 21:07 2453 12 14 分类: MCU/ 嵌入式

  接上篇文章。线程GpioAppThread1代码如下,

/* Entry function for the GpioAppThread1  */
void
GpioAppThread1_Entry (uint32_t input)
{
    CyU3PGpioClock_t gpioClock;
    CyU3PGpioSimpleConfig_t gpioConfig;
    CyU3PReturnStatus_t apiRetStatus;

    /* Initialize Debug module */
    CyFxGpioApplnDebugInit();

    /* Init the GPIO module */
    gpioClock.fastClkDiv = 2;
    gpioClock.slowClkDiv = 0;
    gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
    gpioClock.clkSrc = CY_U3P_SYS_CLK;
    gpioClock.halfDiv = 0;

    /* Initialize Gpio interface */
    apiRetStatus = CyU3PGpioInit(&gpioClock, CyFxGpioIntrCb);
    if (apiRetStatus != 0)
    {
        /* Error Handling */
        CyU3PDebugPrint (4, "GPIO Init failed, Error Code = %d\n",apiRetStatus);
        CyFxAppErrorHandler(apiRetStatus);
    }

    /* Override GPIO 21 as this pin is associated with GPIF Control signal */
    apiRetStatus = CyU3PDeviceGpioOverride (21, CyTrue);
    if (apiRetStatus != 0)
    {
        /* Error Handling */
        CyU3PDebugPrint (4, "GPIO Override failed, Error Code = %d\n",apiRetStatus);
        CyFxAppErrorHandler(apiRetStatus);
    }

    /* Configure GPIO 21 as output */
    gpioConfig.outValue = CyFalse;
    gpioConfig.driveLowEn = CyTrue;
    gpioConfig.driveHighEn = CyTrue;
    gpioConfig.inputEn = CyFalse;
    gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR;
    apiRetStatus = CyU3PGpioSetSimpleConfig(21, &gpioConfig);
    if (apiRetStatus != CY_U3P_SUCCESS)
    {
        /* Error handling */
        CyU3PDebugPrint (4, "GPIO Set Config Error, Error Code = %d\n",apiRetStatus);
        CyFxAppErrorHandler(apiRetStatus);
    }

    /* Configure GPIO 45 as input */
    /* Configure interrupt on Both edges */
    gpioConfig.outValue = CyTrue;
    gpioConfig.inputEn = CyTrue;
    gpioConfig.driveLowEn = CyFalse;
    gpioConfig.driveHighEn = CyFalse;
    gpioConfig.intrMode = CY_U3P_GPIO_INTR_BOTH_EDGE;
    apiRetStatus = CyU3PGpioSetSimpleConfig(45, &gpioConfig);
    if (apiRetStatus != CY_U3P_SUCCESS)
    {
        /* Error handling */
        CyU3PDebugPrint (4, "GPIO Set Config Error, Error Code = %d\n",apiRetStatus);
        CyFxAppErrorHandler(apiRetStatus);
    }

    for (;;)
    {
        /* Set the GPIO 21 to High */
        apiRetStatus = CyU3PGpioSetValue (21, CyTrue);
        if (apiRetStatus != CY_U3P_SUCCESS)
        {
            /* Error handling */
            CyU3PDebugPrint (4, "GPIO Set Value Error, Error Code = %d\n",apiRetStatus);
            CyFxAppErrorHandler(apiRetStatus);

        }

        /* Wait for some time */
        CyU3PThreadSleep(2000);

        /* Set the GPIO 21 to Low */
        apiRetStatus = CyU3PGpioSetValue (21, CyFalse);
        if (apiRetStatus != CY_U3P_SUCCESS)
        {
            /* Error handling */
            CyU3PDebugPrint (4, "GPIO Set Value Error, Error Code = %d\n",apiRetStatus);
            CyFxAppErrorHandler(apiRetStatus);
        }

        /* Wait for some time */
        CyU3PThreadSleep(2000);
    }
}

  上面的代码主要是A:初始化时钟相关的操作,由函数CyU3PGpioInit()完成;重载当作输出IO的GPIO21引脚,这个引脚初始化是与GPIF II的控制信号线,由函数CyU3PDeviceGpioOverride()完成,再由函数CyU3PGpioSetSimpleConfig()配置成普通输出引脚;在for(;;)循环中,设置GPIO21引脚为高电平,由函数CyU3PGpioSetValue (21, CyTrue)完成;延时两秒,由函数CyU3PThreadSleep(2000)完成;再设置GPIO21引脚为低电平,也是由函数CyU3PGpioSetValue (21, CyFalse)完成;再延时两秒,又设置GPIO21引脚为高电平,程序进入无限循环中。

  另外一个线程GpioAppThread2设置GPIO45引脚为输入引脚,程序很简单,这里不再复述。

4、下载程序,实际运行

  将LZ3014 USB3.0开发板与电脑相连,启动控制面板程序,如下,

 

1322732732_66fbbf2.jpg

  如果你的开发板显示的不是“Cypress USB BootLoader”,这也没有关系,有可能是PID,VID与我的不一样,当然这与安装时的驱动相关。

  如何下载固件程序,且听下回分解。

文章评论2条评论)

登录后参与讨论

liangziusb_940932268 2012-3-10 15:12

如果接上开发板,control center什么反应也没有,只能说明板子有问题(和板子的通信不正常)。如果板子是好的,电脑本身也会提示,发现新硬件(或者设备管理器中会增加一个USB设备)

用户413237 2012-3-5 11:22

老师,为什么我的USB control center中什么都没有显示出来
相关推荐阅读
liangziusb_940932268 2016-06-30 21:33
最新的良子USB2.0开发板3_AD7980数据采集开发2
      接上一篇。            这一篇介绍FPGA驱动单个AD7980的开发过程,驱动多个AD7980的级联模式可以查阅后面的帖子。单个AD7980的驱动时序图如下:   ...
liangziusb_940932268 2016-06-30 20:41
最新的良子USB2.0开发板2_AD7980数据采集开发1
     USB2.0开发板已经调试完毕了,板子上的各个芯片都编写了测试例程,例程有10个左右,和之前的USB2.0开发板例程差不多。除了上一篇介绍的配套的双摄像头子板,另外还设计了MT9M001...
liangziusb_940932268 2016-05-22 13:42
CYUSB3065开发板调试过程4_测试开发板的三种启动过程
        CYUSB3065的开发板已经调试完毕,很快就会在淘宝上架。利用这段时间,整理一下如何测试CYUSB3065开发板。开发板上设置了两种非易失性的存储器,一个是I2C接口的EEPRO...
liangziusb_940932268 2016-04-17 09:49
最新的良子USB2.0开发板1_电路板介绍
     近日在设计双摄像头的开发板,已经接近结束。这块电路板的结构还是采用FPGA+SDRAM+USB2.0的,没有太大的变化,因为这种电路结构是最优的,非常适合做数据采集和图像采集之用。之前的US...
liangziusb_940932268 2016-03-02 21:05
良子USB2.0摄像头开发板19_电路板升级
      近日升级了USB2.0摄像头开发板,现在的版本号是1.4。此外,又额外增加了几种摄像头。开发板如下,摄像头是200万像素的MT9D001,没有安装镜头:   配300万像...
liangziusb_940932268 2016-02-29 18:50
200万像素摄像头AR0237开发1
      APTINA目前发布了200万像素的CMOS芯片AR0237CS,像素阵列大小为1928 (H) x1088 (V),是一棵标准的1080@60芯片。AR0237CS支持两种输出模式,...
我要评论
2
12
关闭 站长推荐上一条 /2 下一条