0 Replies Latest reply on Aug 18, 2017 2:58 PM by gaog1_2223126

    Why still need AckSetup in read in transfer in example Fx3BootAppGcc


      In the example Fx3BootAppGcc/usb_boot.c, line 705:


          switch (status)
              case eDataIn:            
                  CyFx3BootUsbAckSetup ();   <-------<---------
                  status = CyFx3BootUsbDmaXferData (0x80, (uint32_t)gEP0.pData, gEP0.wLen, 1000);
                  if (status != CY_FX3_BOOT_SUCCESS)
                      CyFx3BootUsbStall (0, CyTrue, CyFalse);


      Why AckSetup is needed here since there are already data to be transferred in. The manual also said "This function is used to complete the status handshake of a USB control request that does NOT involve any data transfer."


      I tried deleting this statement. Then get descriptor command will fail. Could any one can explain this?