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

    gaog1_2223126

      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);
                  }
                  break; 

         

      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?

         

      Thanks

         

      George