Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
02/01/06 08:27
Read: times


 
#108861 - Two USB communication procedure
Responding to: ???'s previous message
Hi Mehdi,

You may wonder why the 'strange' feature of IN EndPoint (EP) is so important as I mentioned in my previous post.
"IN EP interrupt after sending packet"
http://www.8052.com/forum/read.phtml?id=108839

Because this feature regulates USB communication procedure as follows.
a) Handshake method
Host sends a command to device OUT EP, then receive an answer from IN EP.
b) Polling method
Host polls IN EP periodically (or frequently)

Please suppose that a host PC wants to know the current status of switches connecting to a port of an USB MCU. Because of the 'strange' feature of IN EP, there is no acceptable way other than above method.

a) Handshake method
- The host sends a command to read the port status to the MCU OUT EP
- An OUT EP interrupt is triggered on MCU when the OUT packet arrives.
- In the OUT EP ISR, the firmware unloads the command to a buffer and raises a flag.
- In mainloop of the firmware, MCU catches the flag and interprets the command on the buffer.
- According to the comand, MCU fills the IN EP buffer with the current port status.
- The host receives the current port status as the answer from IN EP.
(actually, the host may poll the IN EP several times and get NAk before accepting the answer.)

In this method, the OUT EP interrupt provides a trigger to capture the current port status.

b) Polling method
- The host polls the MCU IN EP and retrieve the previous port status, prepared by the firmware in advance.
- An IN EP interrupt is triggered on MCU after the IN packet is sent.
- In the IN EP ISR, the firmware raises a flag.
- In the mainloop of the firmware, MCU catches the flag and fills the IN EP buffer with the current port status.
- The host polls the MCU IN EP again and retrieves the current port status.
- An IN EP interrupt is triggered on MCU after the IN packet is sent, and the MCU prepares next answer in advance.

I described a snapshot of polling method above. Usually, as polling is done periodically, the host can retrieve the current port status with a polling interval delay at worst. This periodical polling method is took by the interrupt EP on HID implementation. HID device driver issues IN transaction periodically according to the bInterval field on the interrupt EP descriptor.


From this discussion, you will notice another important conclusion on the USB communication.
The only way for a device to notify to a host is that the host polls the device.

I must go to a business trip now, I'll return this weekend.

Happy USB coding!
Tsuneo

List of 88 messages in thread
TopicAuthorDate
USB Enumeration Process!!!            01/01/70 00:00      
   USB Design By Example            01/01/70 00:00      
      USB Design By Example            01/01/70 00:00      
         Hi.            01/01/70 00:00      
            Jan Axelson            01/01/70 00:00      
            Salaam            01/01/70 00:00      
               Salaam, Saalam and Thank you.            01/01/70 00:00      
                  fires            01/01/70 00:00      
                     It's out. All is well.            01/01/70 00:00      
                        weather            01/01/70 00:00      
                           Normal Weather            01/01/70 00:00      
                           good for you            01/01/70 00:00      
            D12!            01/01/70 00:00      
               Firmware Programming Guide for D12!            01/01/70 00:00      
                  I'll get back            01/01/70 00:00      
                     Thanks            01/01/70 00:00      
   I don't think you ever send descriptor .            01/01/70 00:00      
      Thanks            01/01/70 00:00      
         Descriptor IDs            01/01/70 00:00      
      But i think i must do!            01/01/70 00:00      
         Edit!            01/01/70 00:00      
            Main Loop            01/01/70 00:00      
               Try USB.org            01/01/70 00:00      
                  I don't know why d12 don't interrupted            01/01/70 00:00      
               I don't know why d12 don't interrupted            01/01/70 00:00      
                  I don't know why d12 don't interrupted            01/01/70 00:00      
                     I don't know why d12 don't interrupted            01/01/70 00:00      
                  Acknowledge setup?            01/01/70 00:00      
                     Thanks Tsuneo ,            01/01/70 00:00      
                        Sorry, I confused            01/01/70 00:00      
                           Sorry, I confused            01/01/70 00:00      
                              Just A Question!            01/01/70 00:00      
                                 It's OK, just for enumeration            01/01/70 00:00      
                                    Any error code on Control In EP?            01/01/70 00:00      
                                       Zero Length Packet !!!            01/01/70 00:00      
                                          ZLP??            01/01/70 00:00      
                                             ZLP??            01/01/70 00:00      
                                                ZLP itself is not the key            01/01/70 00:00      
                                                   the code to write the descriptor            01/01/70 00:00      
                                                      VALIDATE_BUFFER            01/01/70 00:00      
                                                         VALIDATE_BUFFER            01/01/70 00:00      
                                                            VALIDATE_BUFFER            01/01/70 00:00      
                                                               Not exactly            01/01/70 00:00      
                                                                  'Read buffer' and 'Write buffer'            01/01/70 00:00      
                                                                     'Read buffer' and 'Write buffer'            01/01/70 00:00      
                                                                        VALIDATE_BUFFER ?            01/01/70 00:00      
                                                                           VALIDATE_BUFFER ?            01/01/70 00:00      
                                                                              Your code            01/01/70 00:00      
                                                                                 Bulk Mail            01/01/70 00:00      
                                                                                    SEND_REQUESTED_DESCRIPTOR            01/01/70 00:00      
                                                                                       Incredible Progress            01/01/70 00:00      
                                                                                          ZLP on Control-IN            01/01/70 00:00      
                                                                                             Control IN and Control OUT transfer            01/01/70 00:00      
                                                                                                Thanks for your responses,            01/01/70 00:00      
                                                                                                   SET_ADDRESS            01/01/70 00:00      
                                                                                                      Some Questions...            01/01/70 00:00      
                                                                                                         SET_DESCRIPTOR            01/01/70 00:00      
                                                                                                            Control transfer            01/01/70 00:00      
                                                                                                               Control transfer            01/01/70 00:00      
                                                                                                                  the whole picture            01/01/70 00:00      
                                                                                                                     The Whole Picture,Thanks            01/01/70 00:00      
                                                                                                                        IN EP interrupt after sending packet            01/01/70 00:00      
                                                                                                                           Two USB communication procedure            01/01/70 00:00      
                                                                                                            comment...            01/01/70 00:00      
                                                                                             zlp!            01/01/70 00:00      
                                                                                             zlp!            01/01/70 00:00      
                                                         misunderstanding!            01/01/70 00:00      
   send an e-mail to your friendly local Ph            01/01/70 00:00      
   waiting for a techie, so I rummaged a bi            01/01/70 00:00      
   A Question?            01/01/70 00:00      
      declared in bMaxPacketSize            01/01/70 00:00      
   Source Code!            01/01/70 00:00      
      Source is Edited now!            01/01/70 00:00      
      Source is Edited!            01/01/70 00:00      
   D12 Example in "USB Design By Example"            01/01/70 00:00      
   Configuration Descriptor!            01/01/70 00:00      
      The 2nd Get_Descriptor            01/01/70 00:00      
         Thanks Tsuneo            01/01/70 00:00      
            Isn't it the config. desc. request?            01/01/70 00:00      
               Best For You Tsuneo !            01/01/70 00:00      
               Thanks            01/01/70 00:00      
      Strings            01/01/70 00:00      
         Thanks Thomas            01/01/70 00:00      
            Correction            01/01/70 00:00      
               USBView and UVCView            01/01/70 00:00      
               Thanks Thomas            01/01/70 00:00      
   Set DMA Mode!            01/01/70 00:00      
      It's optional            01/01/70 00:00      

Back to Subject List