USB30开发笔记.docx
《USB30开发笔记.docx》由会员分享,可在线阅读,更多相关《USB30开发笔记.docx(14页珍藏版)》请在冰豆网上搜索。
![USB30开发笔记.docx](https://file1.bdocx.com/fileroot1/2023-2/1/8d730ddb-a544-42a0-8879-d5835251ac8b/8d730ddb-a544-42a0-8879-d5835251ac8b1.gif)
USB30开发笔记
20130819(周一)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.CyU3PMemSet((uint8_t*)&io_cfg,0,sizeof(io_cfg));
io_cfg.isDQ32Bit=CyFalse;
io_cfg.useUart=CyTrue;
io_cfg.useI2C=CyFalse;
io_cfg.useI2S=CyFalse;
io_cfg.useSpi=CyFalse;
io_cfg.lppMode=CY_U3P_IO_MATRIX_LPP_UART_ONLY;
/*GPIO45isusedasinputpin.GPIO21isalsousedbutcannot
*beselectedhereasitispartoftheGPIFIOs(CTL4).Since
*thisIOisnotused,itcanbeoverriddentobecomeaGPIOby
*invokingtheCyU3PDeviceGpioOverridecall.*/
io_cfg.gpioSimpleEn[0]=0;
io_cfg.gpioSimpleEn[1]=0x00002000;/*GPIO45*/
io_cfg.gpioComplexEn[0]=0;
io_cfg.gpioComplexEn[1]=0;
status=CyU3PDeviceConfigureIOMatrix(&io_cfg);
15./*ConfigureGPIO45asinputwithinterruptenabledforbothedges*/
gpioConfig.outValue=CyTrue;
gpioConfig.inputEn=CyTrue;
gpioConfig.driveLowEn=CyFalse;
gpioConfig.driveHighEn=CyFalse;
gpioConfig.intrMode=CY_U3P_GPIO_INTR_BOTH_EDGE;
apiRetStatus=CyU3PGpioSetSimpleConfig(45,&gpioConfig);
16./*OverrideGPIO21asthispinisassociatedwithGPIFControlsignal.
*TheIOcannotbeselectedasGPIObyCyU3PDeviceConfigureIOMatrixcall
*asitispartoftheGPIFIOs.OverrideAPIcallmustbemadewith
*cautionasthiswillchangethefunctionalityofthepin.IftheIO
*lineisusedaspartofGPIFandisconnectedtosomeexternaldevice,
*thenthelinewillnolongerbehaveasaGPIFIO..HereCTL4lineis
*notusedandsoitissafetooverride.*/
apiRetStatus=CyU3PDeviceGpioOverride(21,CyTrue);
/*ConfigureGPIO21asoutput*/
gpioConfig.outValue=CyFalse;
gpioConfig.driveLowEn=CyTrue;
gpioConfig.driveHighEn=CyTrue;
gpioConfig.inputEn=CyFalse;
gpioConfig.intrMode=CY_U3P_GPIO_NO_INTR;
apiRetStatus=CyU3PGpioSetSimpleConfig(21,&gpioConfig);
17./*CallbackfuntionfortheDMAeventnotification*/
void
CyFxUartLpDmaCallback(
CyU3PDmaChannel*chHandle,/*HandletotheDMAchannel.*/
CyU3PDmaCbType_ttype,/*Callbacktype.*/
CyU3PDmaCBInput_t*input)/*Callbackstatus.*/
{
CyU3PReturnStatus_tstatus;
if(type==CY_U3P_DMA_CB_PROD_EVENT)
{
/*ThisisaproduceeventnotificationtotheCPU.Thisnotificationis
*receiveduponreceptionofeverybuffer.Thebufferwillnotbesent
*outunlessitisexplicitlycommitted.Thecallshallfailifthere
*isanyapplicationerror.*/
status=CyU3PDmaChannelCommitBuffer(chHandle,input->buffer_p.count,0);
if(status!
=CY_U3P_SUCCESS)
{
CyFxAppErrorHandler(status);
}
}
}
18.需要掌握的usb固件,有实现FIFO访问模式的数据传输例子
和实现vendorrequests到IIC访问的例子
和实现vendorrequests到GPIO模拟的SPI访问例子
20130901
1.今天开始测试直接在开发板上跑通上述三个案例。
2.首先是IICregistermode调试,固件非常完整,可以实现iic到eeprom的访问。
但是访问来自于CY_U3P_USB_VENDOR_RQT,这个指令需要上位控制界面发送出来。
/*Decodethefieldsfromthesetuprequest.*/
bReqType=(setupdat0&CY_U3P_USB_REQUEST_TYPE_MASK);
bType=(bReqType&CY_U3P_USB_TYPE_MASK);
bTarget=(bReqType&CY_U3P_USB_TARGET_MASK);
bRequest=((setupdat0&CY_U3P_USB_REQUEST_MASK)>>CY_U3P_USB_REQUEST_POS);
wValue=((setupdat0&CY_U3P_USB_VALUE_MASK)>>CY_U3P_USB_VALUE_POS);
wIndex=((setupdat1&CY_U3P_USB_INDEX_MASK)>>CY_U3P_USB_INDEX_POS);
wLength=((setupdat1&CY_U3P_USB_LENGTH_MASK)>>CY_U3P_USB_LENGTH_POS);
调试界面上,
bRequest=0xba,caseCY_FX_RQT_I2C_EEPROM_WRITE:
bRequest=0xbb,caseCY_FX_RQT_I2C_EEPROM_READ:
wValuei2cAddr=0xA0|((wValue&0x0007)<<1);,
CyFxUsbI2cTransfer(wIndex,i2cAddr,wLength,,wIndex=iicregisteraddress,16bit;
wLength=64,
3.然后是SPIGPIOregistermode,使用GPIO作为SPI管脚的模式。
bRequest=0xc2,CY_FX_RQT_SPI_FLASH_WRITE,
bRequest=0xc3,CY_FX_RQT_SPI_FLASH_READ,
bRequest=0xc4,CY_FX_RQT_SPI_FLASH_ERASE_POLL,
wValue在erase模式下(wValue)?
CyTrue:
CyFalse
wIndex=pageAddressforFLASH
经过测试,产生错误报告,应该是由于开发板上并不存在gpio口连接到了SPIflash上面。
故而改为SPIregistermode,使用CY3014指定的SPI口连接到flash芯片。
调试有反应,但是数据返回错误,重新返回详读flash操作手册。
flash的写入需要首先进行erase,然后才可以进行写入。
这是器件的物理特性决定的,所有调试的时候也是要先erase该sector。
4.接下来需要调试的是bulk数据传输模式。
5.FlagA和FlagB的意思
做一个FPGA到PPort的最简单的写入逻辑,
if(~flag_a)n_sl_wr<=0;
6.官方给出的cmos直接到GPIF的状态机:
USBvideoclass(又称为USBvideodeviceclassorUVC)就是USBdeviceclass图像产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟图像转换器、电视卡(英语:
TVtunercard)及静态图像相机(英语:
Stillcamera)。
TotestyourUVCimplementation,youcanusethefollowingtools:
∙GraphEdit
∙KsStudio
∙USBView
1.
2.