1 Reply Latest reply on Aug 17, 2020 3:38 AM by YatheeshK_36

    Fx3 issue


      I have DMA creatoin architecture as below:


      case 1                                                                                                                             case 2

      Producer              UIB (CY_U3P_UIB_SOCKET_PROD_2)                                          CPU_PROD                                                                                        

                                                     |                                                                                                  |                                  

                                                     |                                                                                                  |

                                                     |                                                                                                  |

      Consumer                         CPU_CONS                                                                     UIB(CY_U3P_UIB_SOCKET_CONS_6)PIB(SOCKET 1) 

      case 3

      Producer                        CPU_PROD                                                                                        




      Consumer                    PIB(SOCKET 1)       


      case 4

      Producer                        PIB(SOCKET 0)                                                                                        




      Consumer                       UIB(CY_U3P_UIB_SOCKET_CONS_6)PIB(SOCKET 1)                                                               


      for i currently desigin to use  case 1 to receive endpoint 2 data to executive case 2 or case3 or case 4.

      so i need to destroy case 2 or case 3 or case 4 to create another case.

      but destory dma and create new case need to take a long time.

      how can use multichannel DMA create for my case or any exampleas can reference.







        • 1. Re: Fx3 issue




          Case 1. can be an independent channel where the data is received from UIB (CY_U3P_UIB_SOCKET_PROD_2) socket and the CPU socket is the consumer.


          Case 2 (CPU producer and PIB consumer) and Case 3 (CPU producer and UIB&PIB consumer) can be combined to a one DMA mulichannel (one to many). Where CPU socket is the producer and the PIB(SOCKET 1)  and UIB(CY_U3P_UIB_SOCKET_CONS_6) are consumers.



          Case 4 is one to many DMA channel where PIB(SOCKET 0)  is the producer and   UIB (CY_U3P_UIB_SOCKET_CONS_6) and PIB(SOCKET 1) are consumers.



          Please note that when you want to initialize and use channel in Case 4, channel in Case 2/3 combined needs to be destroyed and vice versa as it makes use of a common socket  PIB(SOCKET 1).





          From the FX3 SDK:

          For a one to many DMA channel example which involves a single producer socket and multiple consumer socket, please refer to USBBulkLoopAutoOneToMany  or USBBulkLoopManualOneToMany.


          For creating a CPU producer socket and USB consumer socket or vice versa, refer to USBBulkSourceSink Example.