Skip to main content

USB ინტერფეისი და პროტოკოლი

        

რა არის USB?  


 ინგლისურიდან თუ ვთარგმნით (Universal Serial bus)  ანუ, უნივერსალური მიმდევრობითი სალტე. დღეისობით USB ფართოდ გამოიყენება კომპიუტერულ სისტემებში, როგორც ინფორმაციის გაცვლის მიმდევრობითი ინტერფეისი. სამომხმარებლო თვალსაზრისით ფაქტობრივად , კაბელით ინფორმაციის გაცვლის სტანდარტად იქცა.


სურათი 1.  USB ფიზიკური შეერთება.





როგორც სურათიდან ხედავთ, USB სტანდარტში, ინფორმაციის გაცვლის ხაზების(კონტაქტები) გარდა , გვაქვს კვების გამტარები, ეს კი საშუალებას გვაძლევს მაგ. ლეპტოპიდან, მოწყობილობა ვკვებოთ USB პორტიდან, USB კვების ძაბვა სტანდარტულად შეადგენს  5 ვოლტს, მაქს. დენი დაბალი მოხმარების მოწყობილობებისთვის შეადგენს 100მა , მაღალი მოხმარების მოწყობილობებისთის 500მა.(უფრო მაღალი მოხმარების მოწყობილობებს უნდა ქონდეთ დამოუკიდებელი კვების ბლოკი)
USB  კავშირის დროს ინიცაიტორი არის ყოველთვის ჰოსტი(maseter/slave პრინციპი), მაგალითად როდესაც ჩვენ კომპიუტერთან ვაერთებთ USB  მოწყობილობას, იმის და მიხედვით თუ რა სიჩქარეზე მუშაობს(ამქაჩველი რეზისტორი, იხილეთ ქვემოთ)მოწყობილობა, ჰოსტ კონტროლერი უგზავნის ნაკადს მოწყობილობას, setup პაკეტით(იხილეთ პროტოკოლის თავში)

 ერთ ჰოსთ კონტროლერზე შესაძლებელია , 127 სხვადასხვა მისამართის მქონე მოწყობილობა გვქონდეს(0 მისმართი დარეზერვებულია ყოველი ახალი მოწყობილობისთვის), თუმცა ამ მოწყობილობებს შორის ფიზიკური კავშირი არ არსებობს. USB მოწყობილობებთან სამუშაოდ შეიქმნა ისეთი მოწყობილობა როგორიცაა USB hub. hub შიდა სტრუქტურა სქემოტექნიკურად და პროგრამულად მოწყობილია ისე, რომ, აწარმოებს ყველა ფიზიკური პორტის გამოკითხვას. პორტებს გააჩნიათ სხვადასხვა მისმართი და  ამ ინფორმაციას ცვლის მაგალითად პერსონალურ კომპიუტერთან.

ისტორია.


USB  შექმნის თარიღი უკავშირდება 1994 წელს, რომელიც 1996 წლიდან  IBM , intel , NEC და სხვა კომპანიების სტანდარტად იქცა.
პირველი სტანდარტი USB 1.0 , ინფორმაციის გაცვლის სიჩქარე სულ რაღაც 1,5მბ/წ იყო დაბალი სიჩქარის სტანდარტი და სრული სიჩქარის სტანდარტი 12მბ/წ.
1996 გაუმჯობესდა და შეიქმნა 1.1 სტანდარტი, რომელიც მის წინამორბედს ფუნქციონალურად სჯობდა.
2000 წელს კი USB 2.0 ის სიჩქარემ 480მბ/წ მიაღწია. ამით USB -ს ევოლუცია არ დასრულებულა. 2008 წელს გამოჩნდა USB 3.0,  5გბ/წ  სიჩქარით. უახლოესი მიღწევებით USB სტანდარტი კიდევ უფრო დაიხვეწა. დღეისობით USB 3.1, 10გბ/წ სიჩქარით ინფორმაციის გაცვლის საშულაებას იძლევა.

ინტერფეისი.


USB  ინტერფეისში ინფორმაციის გადაცემა/მიღება ხდება  დიფერენციალური მეთოდით(ხმაურის დონის შესამცირებლად), ანუ,  D+ და  D- შორის, ძაბვის სხვაობის პრინციპზე.

ნახაზი 2.  ენკოდირების მექანიზმი




USB  სტანდარტში გამოიყენება ე.წ non return-to-zero inverted (NRZI)  მექანიზმი , მუშაობს შემდეგნაირად: დიფრენციალური ლოგ. 1 იანის შემთხვევაში არ იცვლება მდგომარეობა , 0 იანის შემთხევაში კი იცვლება, ეს კარგად ჩანს ნახ. 2-ზე.


 D+ ,D- , ლოგიკური მდგომარეობით  განირჩევა, სხვადასხვა სისტემური  მდგომარეობა .
განვიხილოთ თითოეული მათგანი.

1)  დიფერენციალური 0.  მდგომარეობა როცა , D+ არის ლოგ.0 და D- ლოგ.1
                                               (D+ < D-)
2)  დიფერენციალური 1.  მდგომარეობა როცა,  D+ არის ლოგ1. და D- ლოგ.0
                                               (D+ > D-)
3) J  მდგომარეობა.   სრული და მაღალ სიჩქარიანი მოწყობილობებისთვის                        დიფერენციალური 1, დაბალ სიჩქარიანისთვის  დიფერენციალური 0.         
4) K მდგომარეობა.  სრული და მაღალ სიჩქარიანი მოწყობილობებისთვის                        დიფერენციალური 0, დაბალ სიჩქარიანისთვის  დიფერენციალური 1.
5) ერთეულოვანი დასრულებული 0  (SE0).  როცა , D+ და D- ლოგ.0
6) ერთეულოვანი დასრულებული 1  (SE1).  როცა , D+ და D- ლოგ.1
7) მომლოდინე-თავისუფალი(idle).  შესასრულებელი პირობა, სადამ პაკეტი     გაიგზავნება(სინქრო პაკეტი) სრული და მაღალ სიჩქარიანი          მოწყობილობებისთვის :  D+ ლოგ1.  D- ლოგ.0 
8) რესეტი. როცა ერთეულოვანი დასრულებული 0  (SE0), მდომარეობა გრძელდება 2.5მწ ზე  მეტი(10მწ მდე).
რესეტის მდგომარეობა , აინიციალირებს სისტემას საწყის ეტაპზე.
9) პროცესის შეჩერება.  როცა სალტე იმყოფება მომლოდინე-თავისუფალ(idle).  მდომარეობაში 3მწ ის განმავლობაში, აღნიშნული მდომარეობიდან გამოსასვლელად აუციებელია  რეზიუმე ან რესეტის მდომარეობაში გადაყვანა.                                       
10) რეზიუმე.   ეს არის იგივე K მდგომარეობა, 20მწ ის განმავლობაში,(შეჩერებული  პროცესის გაგძელება)
11) პაკეტის დასაწყისი(სინქრონიზაცია). როცა მომლოდინე-თავისუფალი(idle), მდომარებოდან გადადის K მდგომარეობაში, აუცილებელია ყოველი პაკეტის დასაწყისში.
12) პაკეტის დასასრული. როცა ერთეულოვანი დასრულებული 0  (SE0) ხდება 2ბიტი/დროის განმავლობაში, რომელსაც მოსდევს J მდომარეობა 1ბიტი/დროის განმავლობაში(ბიტი/დრო განიხილება ქვემოთ თავში)
13) დაკავშირება. როცა მომლოდინე-თავისუფალი(idle) მდომარეობაში გადადის 2.5მკწ - 2მწ მდე
14) კავშირის გაწყვეტა. როცა ერთეულოვანი დასრულებული 0  (SE0) მდგომარეობა გრძელდება 2.5მკწ მდე.


სიჩქარე.


როგორ ზემოთ ავღნიშნეთ , USB ის ყველა ვერსიას აქვს თავის მაქსიმალური სიჩქარე.

დაბალი სიჩქარიანი სტანდარტი:  სიჩქარე 1.5მბ/წ
სრული  სიჩქარიანი სტანდარტი:   სიჩქარე 12მბ/წ
მაღალი სიჩქარიანი სტანდარტი:  სიჩქარე 480მბ/წ (5გბ/წ, 10გბ/წ, USB 3.0 და USB 3.1)

როდესაც ჰოსტი უკავშირდება მოწყობილობას, აუცილებლია მოხდეს ავტომატურად გარჩევა , თუ რა სიჩქარეზე მუშაობს კონტროლერი. ეს მიიღწევა ე.წ ამქაჩველი რეზისტორების დამატებით.





D- ზე ამქაჩველი რეზისტორი ნიშნავს დაბალ სიჩქარიან მოწყობილობას, D+ ზე , სრულ სიჩქარიან მოწყობილობას, ხოლო მაღალ სიჩქარიანი მოწყობილობა აღიქმევა როგორ სრულ სიჩქარიანი, D+ ზე ამქაჩველი რეზისტორით(თუ კონტროლერს აქვს ამის საშუალება,  USB 2.0 )
დაბალი და სრულ სიჩქარიან მოწყობილობების კონტროლერებისთვის გამოიყენება 48Mhz ტაქტური სიხშირე ,ასევე დაბალ სიჩქარიანი კონტროლერი შესაძლოა მუშაობდეს 12Mhz ზე. მაღალ სიჩქარიან კონტროლერები იყენებნ უკვე გაცილებით მაღალ სიხშირიან საათს, რომელიც მიიღწევა ე.წ PLL თი(ფაზური ჩაკეტილი წრედი)

სრული სიჩქარე: 48Mhz / 12მბ/წ = 4 ტაქტი თითო ბიტზე.

დაბალი სიჩქარე: 48Mhz / 1.5მბ/წ = 32 ტაქტი თითო ბიტზე.


პროტოკოლი.


USB პროტოკოლში , მთლიანი ინფორმაცია შედგება ნაკადებისგან. დავაკვირდეთ მე3-ე სურათს:

სურათი 3. USB პროტოკოლი




თითოეული ნაკადი იწყება ნაკადის დაწყების პაკეტით(SOF). შემდეგ მოდის სამარკერო პაკეტი , აქტიური დატა პაკეტი და დადასტურების პაკეტი, ანუ არსებობს 3 პაკეტის ტიპი. როგორც ხედავთ ყველა პაკეტი იწყება სინქრონიზაციით(ანუ პაკეტის დამწყები მდგომარეობით, SOP) და მთავრდება პაკეტის დასრულების მდგომარეობით(EOP).
განვიხილოთ თითოეული პაკეტის ტიპი , თავის პაკეტის აიდებით. ვინიდან, ყველა პაკეტის ტიპს გააჩნია პაკეტის იდენტიფიკატორები.

PID ცხრილი.

პაკედის აიდის ტიპი.      სახელი.   (შენ.1)ბინარული მნიშვნელობა.       აღწერა.
       სამარკერო                IN                1001                                  მოწყობილობა->ჰოსტი
                                          OUT            0001                                  ჰოსტი->მოწყობილობა 
                                          SETUP        1101                                   მართვის ბრძანება , ინიციალიზაცია.
                                          SOF             0101                                   ნაკადის დასაწყისი
        დატა
                                         DATA0        0011                                   აქტიური დატა(შემოწმება შეცდომაზე)
                                         DATA1        1011                                   აქტიური დატა(შემოწმება შეცდომაზე)
        სტატუსი
                                         ACK             0010                                   წარმატებით მიღება
                                         NACK          1010                                   ვერ მიიღო
                                         STALL          1110                                   შეჩერებულია, ან არ აქვს მხარდაჭერა
                                                                             
შენ.1-პაკეტის იდენტიფიკატორი შედგება 8 ბიტისგან , ბოლო 4 ბიტი არის შეცდომის შემოწმების ინვერსიული მნიშვნელობა.


1) სამარკერო პაკეტები.
არსებობს სამარკერო პაკეტების 4 ტიპი:

IN            ატყობინებს მოწყობილობას რომ, ჰოსტს სურს ინფორმაციის წაკითხვა
OUT        ატყობინებს მოწყობილობას რომ, ჰოსტს სურს ინფორმაციის გადაცემა
SETUP     გამოიყენება საკონტროლო ბრძანებისთვის(დესკრიპტორის კონფიგურაციისთვის)
SOF         ნაკადის დასაწყისი(ყოველი ახალი ნაკადი იწყება ამ პაკეტით)

სურათი 4. სამარკერო პაკეტის ტიპები


სურათი 5. სამარკერო პაკეტის ფორმატი:



SYNC   -  სინქრონიზაცია , ანუ პაკეტის დასაწყისი(იხილეთ ინტერფეისის თავი ზემოთ)
               დაბალ სიჩქარიანი და სრულ სიჩქარიანი მოწყობილობებისთვის 8 ბიტის სიგრძის ველი , KJKJKJKK. (პირველი MSB ბიტი არის K მდომარეობა სინქრონიზაციის) ხოლო მაღალ სიხშირიანი მოწყობილობებისთვის 32 ბიტიანი , 15 MSB ბიტი KJ და შემდეგი 17 ბიტი KK.(ბოლო ორი ბიტი KK ნიშნავს სინქრონიზაციის ველის დასასრულს)
PID      - პაკეტის აიდი (IN, OUT, SETUP, SOF)
ADDR - ჰოსტის მისამრთი 0-127 მდე(0 მისამართი არის დარეზერვებული ყოველი ახალი კავშირისთვის)
ENDP  - ბოლო წერტილი, ეს არის ასე ვთქვათ არხის მისამართი , რომელზედაც ხდება კონკრეტული პაკეტის გაგზავნა. IN და OUT პაკეტებისთვის გვაქვს 16-16 ასეთი არხი(4 ბიტი). ე.წ " ენდ პოინტ" ს გააჩნია თავის სტრუქტურა და ჰოსტ კონტროლერი ამ სტრუქტურის ტიპს იღებს დესკიპტორის საშუალებით. სადამ მოწყობილობა გაივლის ინიციალიზაციას, ყველა სტატუსის და კონფიგურაციის პაკეტები იგზავნება ნულოვან ბოლო წერტილზე.
არსებობს ბოლო წერტილის რამდენიმე სხვადასხვა ტიპი, განვიხილოთ:
მართვის ბოლო წერტილი: გამოიყენება საკონფიგურაციოდ, როდესაც ჰოსტი უგზავნის საკონტროლო პაკეტს მოწყობილობას, ასევე მოწყობილობა უგზავნის პასუხს უკან.
წყვეტის ბოლო წერტილი: გამოიყენება ისეთ მოწყობილობებში მაგალითად როგორცაა თაგვი, კლავიატურა, როდესაც რაღაც მოვლენაზე ხდება წყვეტა, ანუ ჰოსტი ახდენს მოწყობილობის  გამოკითვას რაღაც სიხშირით. ასევე გამოიყენება მიკროკონტროლერებში ჩაშენებული USB მოწყობილობით.
მაქსიმალური პაკეტის ზომა მაღალ სიჩქარიანი მოწყობილობებისთვის 1024 ბაიტი, სრულ სიჩქარიანისთვის 64, და დაბალ სიჩქარიანისთვის 8 ბაიტი.
ჯგუფური ბოლო წერტილი: გამოიოყენება დიდი ზომის ინფორმაციის გადასაცემად, სადაც დრო არაა პრიორიტეტი, ძირითადად სკანერებში , პრინტერებში და ა.შ.
იზოქრონული ბოლო წერტილი: გამოიყენება პაკეტების გადასაცემად რეალურ დროში. გარანტირებული გადაცემის ტიპს არ მიეკუთვნება ანუ შეცდომებზე შემოწმების მექანიზმი არ აქვს . აქვს CRC მექანიზმი , თუმცა პაკეტი ხელმეორედ აღარ იგზავნება. გამოიყენება ვიდეობის , მუსიკის ტრანსფერისთვის.
CRC5-შეცდომებზე შემოწმება(ciclyc redundancy check, ანუ, ციკლური შემოწმება უზუსტობაზე)
EOP    - პაკეტის დასასრული (იხილეთ ინტერფეისის თავი ზემოთ)

ნაკადის დასაწყისი პაკეტი (SOF)გენერირდება ყოველ 1მწ ში სრულ სიჩქარიანი მოწყობილობებისთვის და ყოველ 125მკწ ში მაღალ სიჩქარიანი მოწყობილობებისთვის. დაბალ სიჩქარიან მოწყობილობებში ეს პაკეტი არ არსებობს.  პაკეტი გამოიყენება  ნაკადის სინქრონიზაციისთვის, ანუ ამ პაკეტით იწყება ნაკადი.
სურათი 6. ნაკადის დასაწყისი პაკეტი:





ნაკადის ველი(FRAME) 11 ბიტიანია, ყოველ ახალი ნაკადის დროს იზრდება ერთით და როდესაც მიაღწევს მაქსიმალურ მნიშვნელობას ანუ 0X7FF, ნულდება, და იწყება თავიდან.


2) დატა პაკეტები.
არსებობს დატა პაკეტების 2 ტიპი (მაღალ სიჩქარიან მოწყობილობებში 3 ან 4)
აღნიშნული ტიპი გამოიყენება IN   ან    OUT   სამარკერო პაკეტის შემდეგ.

სურათი 7. დატა პაკეტი:





შეცდომებისგან დასაცავად , დატა პაკეტებში, გამოიყენება დამატებითი მექანიზმი , კერძოდ კი ე.წ ბიტის "გადართვის" სისტემა. მაგალითად, ჰოსტი უგზავნის მოწყობილობას პაკეტს . თუ მოწყობილობა წარმატებით მიიღებს პაკეტს და დაუბრუნებს დამადასტურებელ პაკეტს უკან , ახალ დატა პაკეტში მოხდება  MSB ბიტის გადართვა 1 დან 0 ისკენ ან პირიქით(იდენტიფიკატორის შეცვლა მოხდება), ეს იმის დამადასტურებელია რომ, ჰოსტმა დამადასტურებელი პაკეტი მიიღო.
დაბალ სიჩქარიან მოწყობილობებში აქტიური დატას მაქსიმალური სიგრძე არის 8 ბაიტი, სრულ სიჩქარიანში 1023 ბაიტი, მაღალ სიჩქარიანში 1024 ბაიტი.

3) დამადასტურებელი(სტატუსის) პაკეტები.
ძირითადათ არსებობს 3 დამადასტურებელი პაკეტის ტიპი, ACK, NACK და STALL.
ACK - ნიშნავს  რომ, პაკეტის მიღება მოხდა წარმატებით.
NACK - ნიშნავს  რომ, აღნიშნულ მომენტში, მოწყობილობას არ შეუძლია მიიღოს ან გაგზავნოს პაკეტი. ასევე წყვეტის რეჟიმში მუშაობისას , ატყობინებს ჰოსტს რომ, მოწყობილოიბას არ აქვს ახალი ინფორმაცია.
STALL- ნიშნავს რომ, მოწყობილობას არ შეუძლია მიიღოს ან გაგზავნოს პაკეტი, ასეთ შემთხვევაში ჰოსტმა აუცილებლად უნდა შეაჩეროს პროცესი.

სურათი 8. დამადასტურებელი პაკეტი:




დესკრიპტორები და ჰოსტის მოთხოვნები(Host requests).
დესკრიპტორი ეს არის ის სალაპარაკო ენა რისი საშუალებითაც მოწყობილობა ატყობინებს ჰოსტს მისი შესაძლებლოების თუ მდგომარეობის შესახებ. მექანიზმის სტრუქტურა ასეთია რომ, თავდაპირველად ჰოსტი უგზავნის მოთხოვნას მოწყობილობას, თუ რა სურს მისგან, ან რას უგზავნის მას.
არსებობს დესკრიპტორების რამდენიმე ტიპი სათითაოდ არ განვიხილავ ყველა მათგანს რადგან ძალიან ვრცელი სტატია გამოვა, ამიტომ მაგალითისთვის განვიხილოთ ერთ-ერთი.
ზოგადად,ინიციატორი არის ჰოსტი, ამიტომ ჰოსტი უგზავნის მოწყობილობას მოთხოვნას. მოთხოვნის სტრუქტურა არის შემდეგნაირი:

bmRequestType :  1 ბაიტი
                               

                                D7:     გადაცემის მიმართულება .
                                           0b - ჰოსტი->მოწყობილობა
                                           1b - მოწყობილობა->ჰოსტი
                                D6-5:  მოთხოვნის ტიპი.  
                                           00b - სტანდარტი.
                                           01b - კლასი.
                                           10b - გამყიდველი(მწარმოებელი).
                                           11b - დარეზერვებული.
                                D4-0:  მიმღები.
                                           000000b - მოწყობილობა.
                                           000001b - ინტერფეისი.
                                           000010b - ბოლო წერტილი.
                                           000011b - სხვა.
                                           000100b-11111b - დარეზერვებული.
bRequest:   1 ბაიტი, იხილეთ სურათი 9. 
wValue:      2 ბაიტი, პარამეტრები(დამოკიდებულია კონკრეტულ მოთხოვნაზე).   
wIndex:      2 ბაიტი, ბოლო წერტილის ან ინტერფეისი ინდექსი.
wLength:    2 ბაიტი, მოთხოვნის პაკეტის მთლიანი სიგრძე ბაიტებში.

სურათი 9. მოთხოვნის კოდები:




სურათი 10. დესკრიპტორის სტანდარტული ტიპები:



განვიხილოთ მოწყობილობის დესრკიპტორი:
ვინაიდან , ვიცით რომ ინიციატორი არის ჰოსტი, ჰოსტი უგზავნის მოწყობილობას ე.წ. "Setup" პაკეტს. ზოგადად ეს ნიშნავს რომ უნდა მოხდეს მოწყობილობის კონფიგურაცია ან მისგან რაიმე საკონტროლო ან სისტემური ინფორმაციის მიღება, ეს კი ხდება მოთხოვნის საშუალებით.  ე.წ. "Setup" პაკეტის შემდეგ მოდის დატა პაკეტი სადაც იწერება მოთხოვნა, ამ შემთხვევაში ესაა "GET_DESCRIPTOR" მოთხოვნა.
პირველი არის bmRequestType  1 ბაიტი(საკონფიგურაციო ბაიტი), შემდეგ bRequest(ანუ GET_DESCRIPTOR) 1 ბაიტი, შემდეგ wValue(ამ შემთხვევაში DEVICE) 2 ბაიტი, შემდეგ wIndex(ამ შემთხვევაში 0 ბოლო წერტილი) 2 ბაიტი და ბოლოს wLength საერთო სიგრძე ბაიტებში, მოთხოვნილი ინფორმაციის. დავაკვირდეთ მე-10-ე სურათზე , სადაც კარგად ჩანს რაც დავწერეთ:

სურათი 10. ჰოსტის მოთხოვნა:





მე-11-ე სურათზე კი ჩანს მოწყობილობის პასუხი ჰოსტს, რომელიც უბრუნებს უკან "DEVICE" დესკიპტორის პასუხს:

სურათი 11. მოწყობილობის პასუხი:





განვიხილოთ რისგან შედგება ე.წ "DEVICE"  დესკრიპტორი:
ნებისმიერ USB  მოწყობილობას აქვს საერთო ინფორმაცია მის შესახებ , სწორად ამ ინფორმაციას იღებს ჰოსტი ზემოთ ხსენებული დესკრიპტორის საშუალებით.

1. bLength - დესკრიპტორის სიგრძე (0x12, ყველა მნიშვნელობა არის ჰექს კოდში , ათობითში იქნება 18).
2. bDescriptorType - დესკრიპტორის ტიპი ანუ 01 - "DEVICE" .
3. bcdUSB - USB  ვერსია (მაგალითად 2.0, ამ შემთხვევაში USB  2.0).
4  bDeviceClass -  კლასი(დრაივერი მოსაძებნად, ძირითადად ეს ველი შედგება ნოლებისგან).
5. bDeviceSubClass - ქვეკლასი(დრაივერი მოსაძებნად, ძირითადად ეს ველი შედგება ნოლებისგან).
6. bDeviceProtocol - პროტოკოლი(დრაივერი მოსაძებნად, ძირითადად ეს ველი შედგება ნოლებისგან).
7. bMaxPacketSize0 - მაქსიმალური პაკეტის ზომა ბოლო წერტილი 0 ისთვის(ამ შემთხვევაში 8 ბაიტი).
8. idVendor - გამყიდველის იდენტიფიკატორი(0x34, 0x04).
9. idProduct - პროდუქტის იდენტიფიკატორი(0x34, 0x12).
10. bcdDevice - მოწყობილობის ნომერი(0x00, 0x00).
11. iManufacturer - მწარმოებლის სტრინგის ინდექსი(0x01).
12. iProduct - პროდუქციის სტრინგის ინდექსი(0x02).
13. iSerialNumber - სერიული ნომრის სტრინგის ინდექსი(0x00).
14. bNumConfigurations - მხარდაჭერილი კონფიგურაციის რაოდენობა(0x01).




ლიტერატურა:


http://www.cypress.com/file/134171/download
https://www.engineersgarage.com/articles/signal-and-encoding-usb-system-part-56
http://perscom.ru/usb/99-usb-protocol
http://baumanki.net/lectures/10-informatika-i-programmirovanie/310-konspekt-vmsis/4128-15-protokol-raboty-usb-shiny.html
http://www.jungo.com/st/support/documentation/windriver/811/wdusb_man_mhtml/node55.html
https://wiki.osdev.org/Universal_Serial_Bus

Comments

Popular posts from this blog

სიმ800, სიმ900 პირველი ნაბიჯები...

გამარჯობათ მეგობრებო, განვიხილავთ ზემოთ ნახსენები მოდემების ფიზიკურ მიერთებას მიკროკონტროლერთან და  სამუშაო კოდს. ფიზიკური მიერთება: სადამ მიერთების განხილვას დავიწყებდეთ, ვიტყვი რომ, მოდემის სამუშაო ძაბვა არის 3.4V დან 4.4V მდე, ოპტიმალური ძაბვა 4 ვოლტი. როდესაც მოდემი გადის რეგისტრაციას(კვების მიერთების შემდეგ) მოხმარებული პიკური დენი აღწევს 2 ამპერამდე, ასევე როდესაც ირთვება რადიო გადამცემის ნაწილი(ინფორმაციის გაგზავნისას) ამიტომ , კვების წყარო უნდა უზრუნველყოფდეს ამ სიმძლავრეს , თუ არ გვაქვს 2 ამპერიანი წყარო , შეგვიძლია მივაერთოდ 1 ამპერიანი, ასეთ შემთხვევაში აუცილებელია მოდემის კვების პარალელურად ჩავსვათ 1500-2200 მიკროფარადიანი კონდენსატორი რაც შეიძლება მოდემთან ახლოს. ელექტროლიტური კონდენსატორის დაყენება აუცილებელია ასევე იმ შემთხვევაშიც კი, როდესაც ვიყენებთ 2 ამპერიან კვების წყაროს, თუმცა ასეთ შემთხვევაში 220-470 მიკროფარადიანიც საკმარისია(თუ მოდულს ვიყენებთ აუცილებლად ეყენება ასეთი კონდენსატორი) . იმ შემთხვევაში თუ დაფას ჩვენ ვხაზავთ , აუცილებლად უნდა გავითვალისწინოთ კ