热度 25
2014-6-6 20:34
2545 次阅读|
3 个评论
CYUSB3014支持8位、16位、32位数据传输,为了最大限度的利用USB3.0的带宽,可以选择32位数据总线。CYUSB3014共用GPIO是59个(也有说是61个),由于多个外设复用一个引脚,因此CYUSB3014的GPIO是相当复杂的。 在32位数据总线的SLAVE FIFO模式下,GPIO的分配如下: 1、数据总线32位,由GPIO +GPIO +GPIO 组成。 2、同步时钟PCLK,引脚是GPIO 。 3、控制信号线SLCS#,引脚是GPIO 。 控制信号线SLWR#,引脚是GPIO 。 控制信号线SLOE#,引脚是GPIO 。 控制信号线SLRD#,引脚是GPIO 。 控制信号线FLAGA,引脚是GPIO 。 控制信号线FLAGB,引脚是GPIO 。 控制信号线PKTEND#,引脚是GPIO 。 地址线A1,引脚是GPIO 。 地址线A0,引脚是GPIO 。 以上引脚共计是42个,59个余下的还有17个,除了一些专用引脚外(GPIO 启动方式引脚),其它的一些外设引脚可以当作GPIO,如GPIO 、GPIO 、GPIO I2S引脚、GPIO 串口引脚、GPIO I2S引脚、GPIO I2C引脚。这些引脚可以控制SENSOR的电源控制、复位控制等。 在软件上,有几个函数来完成对这些GPIO的控制。GPIO 是串口引脚,如果数据传输用不到串口,这几个引脚完全可以当普通IO来使用。第一个要使用的函数是status = CyU3PDeviceConfigureIOMatrix (io_cfg);这个函数是是分配GPIO的,由输入参数io_cfg来决定。输入参数的定义是 /* 53-56 GPIOs are enabled. */ io_cfg.gpioSimpleEn = 0; io_cfg.gpioSimpleEn = 0x01E00000; io_cfg.gpioComplexEn = 0; io_cfg.gpioComplexEn = 0; 其中001E00000中的1是对GPIO的定义。 第二个要使用的函数是apiRetStatus = CyU3PGpioSetSimpleConfig(SESOR_RESET#, gpioConfig);输入参数定义如下: /* Configure GPIO 56 as output(SESOR_RESET#) */ gpioConfig.outValue = CyFalse; gpioConfig.inputEn = CyFalse; gpioConfig.driveLowEn = CyTrue; gpioConfig.driveHighEn = CyTrue; gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR; 经过以上两个函数,就可以正常控制GPIO了,作用就是 SESOR_RESET#。 设置SESOR_RESET#为高电平,如下 apiRetStatus = CyU3PGpioSetValue (SESOR_RESET#, CyTrue); 设置SESOR_RESET#为低电平,如下 apiRetStatus = CyU3PGpioSetValue (SESOR_RESET#, CyFalse); (另公布一群号333917885 ,SPARTAN6开发专业讨论区。) 淘宝店铺: http://liangziusb.taobao.com 良子.2014年 承接USB开发工程 USB毕设指导 QQ:1345482533