1 Reply Latest reply on Apr 9, 2010 3:10 PM by anand.srinivasan.asokan

    USB 2.0 discussion:Data communication via CY7C68001

              In our application design, we meet some difficulties about the CY7C68001 and hope to get your suggestions.   
          Our application:   
      1. Use the USB 2.0 to deal with the CT graphic data communication between the host (PC) and the external master (DSP board: for data computing). We use the control and the bulk way for the communication. And the key issue is about the bulk way when using the CY7C68001.   
          2. Data stream consideration:    
      Step (1).get the graphic data (6300*6400, i.e, large number) at one time from the PC host and transmit to DSP board via USB 2.0 interface;   
      Step (2).the DSP board begins the step of data computing when receive the first lot of 6400 number, at this time it needs the host (PC) to pause the data transferring and wait for the data computing from external master (in DSP board);   
      Step (3).when the data computing (for the first lot 6400) has been finished and it will transmit the computed data to the PC host and ask the host (PC) to start the graphic data transferring again;   
      Step (4).the PC host begins the graphic data transferring (the second lot, also 6400); the same process begins (loop: step(2)-->step(3)-->step(2)-->step(3)-->step(2)...)the whole process will be in the end when the PC transfer the whole number.   
          3. Issues we hope to get suggestions   
      It locates in the bulk way when the PC host pause the process (transfer the data to the external master, i.e. the DSP board)   
      My way: every time, I send a token packet (e.g. all number is 4) via EP2, EP4 from the PC host to the external mater and then decide which steps to go: (1) continues to transmit data if receiving the same data as the token packet; (2) PC host pause the transmit when it receive the different data in a packet via the EP6, and the EP8   
      Also, when the DSP board wants begins the step (data computing), I let it transmit a token packet (e.g. all number is 4) to host via EP6 and the EP8. Sure it get the PC token data (a packet) firstly.   
          4. My own question:   
      Yes, the whole process can run smoothly at the beginning and I can get the correct computed data in the PC host while the process suspending. The symptom is: the PC transmits the error data or it suspends the process. I have studied the CY7C68001 data sheet these days. If I know correctly, the PC host will continues to transmit the same data if it cannot finish it successfully in the last time. And I am little confused about my data stream design. The PC can only play the role: (start the data transmit and pause data transferring). In normal situation, how to deal with my application?   
      P.S. I see the saying in the forum:Suspend condition cannot be sent to a USB device using EZ-USB Control panel/Cyconsole/Control center. It is initiated by the host when it is going into power saving modes or standby. Can I think the data stream is not proper in our application?   
      Thanks for your time and consideration.   
      Best Regards   
        • 1. Re: USB 2.0 discussion:Data communication via CY7C68001
                  Just the short form of my understanding. You send data to the device, devices processes it and sends it back to host. When you say 6400 bytes, does your DSP have buffer in it because SX2 does not have this big a buffer and so will accept this 6400 with delay after 1024 or 2048 bytes based on the endpoint configuration used unless there is enough buffer in DSP to avoid this situation.   
          If my understanding is right you want to send 6400 bytes chunks of data with delay between each chunk... you can use the Thread.Sleep mechanism to introduce this delay or use the event of device returning processed data to trigger the next 6400 bytes to get this working na???