Skip to main content

SPI ინტერფეისი

რა არის SPI?  

SPI - serial peripheral interface, მიმდევრობითი პერიფერიალური ინტერფეისი, გამოიყენება მიკროკონტროლერებში და FPGA-ებში ინფორმაციის მიმდევრობითი გადაცემისთვის.

სურათი 1. SPI კავშირი.





SCK-სინქრონიზაციის გამომსვლელი(ახდენს ბიტის გაგზავნას და მიღებას ერთდროულად, სრული დუპლექსი)
MOSI-(mater out, slave in)მთავარი მოწყობილობის გამომსვლელი, დაქვემდებარებულის შემსვლელი.
MISO-(master in, slave out)მთავარი მოწყობილობის შემსვლელი, დაქვემდებარებულის გამომსვლელი
CS-(chip select ან SS ანუ, slave select)დაქვემდებარებული მოწყობილობის ასარჩევი, მთავარი მოწყობილობის გამომსვლელი.(ყოველი დაქვემდებარებულის არჩევა ხდება ამ გამომსვლელზე ლოგ. 0 ის შემთხვევაში, რადგან აქტიური მდგომარეობა არის ინვერსიული. ყოველ დაქვემდებარებულს აქვს ეს შემსვლელი. "ველაპარაკებით" იმ დაქვემდებარებულ მოწყობილობას რომელსაც ავირჩევთ ამ "პინის" საშუალებით).

სურათი 2. SPI მულტი კავშირი.







შემუშავებულია  ფირმა მოტოროლას მიერ 1980 წლების ბოლოს, მისი პოპულარულობა განპირობებულია მისი სიმარტივისა და სისტემის მიმართ ძალიან მცირე მოთხოვნების გამო. მიკროკონტროლერებში გვხვდება ჩაშენებული ინტერფეისების სახით,ასევე შესაძლებელია მისი პროგრამულად იმპლემენტირებაც.

მუშაობის პრინციპი.

SPI მიეკუთვნება სინქრონული, სრულ დუპლექსიან ინტერფეისების ტიპს. ყველა ბიტის მიღება თუ გადაცემა ხდება ე.წ "clock" გამომსვლელის  ტაქტზე, ანუ ესა ასე ვთქვათ სტრობის იმპულსი(სინქრონიზაცია) რომელიც აგზავნის და წერს ბიტს, წანაცვლების(Shift) რეგისტრში.(ვისაც გაქვთ ნასწავლი ციფრული სქემოტექნიკა ,უცბად აღიქვავთ როგორ მუშაობს ეს მექანიზმი, გავიხსენოთ სინქრონული RS ტრიგერი, ან თუნდაც Delay ტრიგერი)
SPI მუშაობს master/slave რეჟიმში , ინიციატორი არის ყოველთვის მასტერი , სლეივი ანუ დაქვემდებარებული მოწყობილობა პასუხობს შესაბამისი პროტოკოლის მიხედვით , თუ რას ითხოვს მისგან მთავარი მოწყობილობა ანუ მასტერი. სრული დუპლექსის მექანიზმი მუშაობს შემდეგნაირად: სურათ 3-ზე როგორც ხედავთ გვაქვს ინფორმაციის გადაცემის და მიღების დამოუკიდებლი გამტარები(პინები) . დავაკვირდეთ მე-3-ე სურათს, სინქრონიზაციის ყოველ  ტაქტურ იმპულსზე, ხდება SPI დატა რეგისტრის წანაცვლება მარჯვნივ, ანუ 8 ბიტი მიმდევრობით გამოდის გარეთ (LSB ან MSB, დამოკიდებულია მიკროკონტროლერის კონფიგურაციაზე)ყოველ ტაქტურ იმპულსზე 1 ბიტი, პარალელურად რეგისტრში იწერება დაქვემდებარებული მოწყობილობის მიერ გამოშვებული ბიტი(თავისუფალ ადგილს იკავებს ეს ბიტი, SPI დატა რეგისტრის MSB  დან მარჯვნივ) . ხდება საინტერესო რამ, გაგზავნილი ბაიტის ადგილს იკავებს დაქვემდებარებულისგან მიღებული ბაიტი, ანუ 8 სინქრონიზაციის ტაქტზე ხდება ბაიტის გაგზავნაც და მიღებაც, რასაც ქვია ბაიტის ტრანსფერი. იგივე ხდება დაქვემდებარებული მოწყობილობის მხარეს.
SPI ინტერფეისში მაქსიმალური სინქრონიზაციის "პინის" სიხშირე არის მიკროკონტროლერის SPI ტაქტური სიხშირე / 2. მაგალითად თუ ჩაშენებული SPI მოწყობილობის ტაქტური სიხშირე არის 32 Mhz  ,სინქრონიზაციის  მაქსიმალური სიხშირე იქნება 16 Mhz  ანუ სიჩქარე - 16მბ/წ.


სურათი 3. SPI ტრანსფერი.



რეჟიმები.

არსებობს SPI ის 4 რეჟიმი, განსხვავება მათ შორის   არის სინქრონიზაციის ტაქტური "პინის" კონფიგურაციაში.
CPOL - სინქრონიზაციის პოლარობა (0 ან 1).
CPHA - სინქრონიზაციის ფრონტი(0 ან 1).
როცა CPOL = 0,  აქტიური ტაქტური იმპულსი არის ლოგ.1 მდგომარეობა.
როცა CPOL = 1, აქტიური ტაქტური იმპულსი არის ლოგ.0 მდგომრეობა.
როცა CPHA = 0, ბიტის არჩევა ხდება წინა ფრონტზე, ანუ როცა ლოგ.0 დან ლოგ.1 ზე გადადის სინქრონიზაციის გამომსვლელი(CPOL = 0) თუ CPOL = 1, პირიქით პროცესი, ლოგ.1 დან ლოგ.0 ზე გადასვლისას ხდება ბიტის არჩევა.
როცა CPHA = 1, ბიტის არჩევა ხდება უკანა ფრონტზე, ანუ როცა ლოგ.1 დან ლოგ.0 ზე გადადის სინქრონიზაციის გამომსვლელი(CPOL = 0) თუ CPOL = 1, პირიქით პროცესი, ლოგ.0 დან ლოგ.1 ზე გადასვლისას ხდება ბიტის არჩევა.

ასევე შესაძლოა ზოგიერთ მიკროკონტროლერს ჰქონდეს LSB ან MSB(ბაიტის მიმართულება საიდან დაიწყოს) ასარჩევი ბიტი საკონფიგურაციო რეგისტრში.მაგ.STM32

დავაკვირდეთ მე-4-ე სურათს,სადაც კარგად ჩანს თითოეული რეჟიმის მუშაობა.

სურათი 4. SPI რეჟიმები.





რეჟიმი 0. CPOL  = 0,  CPHA = 0.
რეჟიმი 1. CPOL  = 0,  CPHA = 1.
რეჟიმი 2. CPOL  = 1,  CPHA = 0.
რეჟიმი 3. CPOL  = 1,  CPHA = 1.

ყველაზე ხშირად გამოიყენება რეჟიმი 0.

SPI - უპირატესობა:

1. ძალიან მარტივი პროგრამული და აპარატურული მექანიზმი.
2. არ გვაქვს სიჩქარის ლიმიტი(შესაძლოა ქონდეს მოწყობილობას, თუმცა SPI ის არ აქვს)
3. "მულტი სლეივი" .
4. სრული დუპლექსი.

SPI - ნაკლი:

1. ყოველ დაქვემდებარებულ მოწყობილობას ჭირდება დამოუკიდებელი "პინი" .
2. არ გვაქვს მექანიზმი რითაც მივხდებით, ბაიტი მივიდა თუ არა.(შესაძლოა ამის იმპლემენტირება პროტოკოლში)
3. ყოველი ახალი დაქვემდებარებული მოწყობილობის დამატებისას უნდა შეიცვალოს პროგრამული კოდი.
4. SPI -ის სალტეზე შესაძლებელია მხოლოდ 1 მთავარი მოწყობილობა გვქონდეს(მაგალითად I2C არ აქვს ეს შეზღუდვა).

Comments

Popular posts from this blog

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

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

სიმ800, სიმ900 სმს-ის გაგზავნა-მიღება

მოგესალმებით, ვაგრძელებთ ზემოთ არნიშნული მოდემებზე საუაბარს, ეხლა შემოგთავაზებთ მაგალითს , როგორ გავგზავნოთ და მივიღოთ მოკლე ტექსტური შეტყობინება. წინა ნაწილში ვისაუბრეთ მოდემის რეგისტრაციის პროცესზე და ფიზიკურ მიერთებაზე მიკროკონტროლერთან, ამიტომ ამ ეტაპზე აღარ განვიხილავთ და პირდაპირ გადავდივართ სმს ის ფუნქციაზე. სმს-ის გაგზავნა: გაუშვებთ არდუინოს  exe ფაილს, შევდივართ file > examples , ვნახულობთ GSM_SIM , გავხსნით gsm_sms_send სკეტჩს, xxxxxxxxx  - შევცვლით ჩვენთვის სასურველი აბონენტის ნომრით , ავტვირთავთ სკეტჩს, გავხსნით პორტის მონიტორინგს და ვაკვირდებით, დავინახავთ რომ დაიწყება რეგისტრაცია, რეგისტრაციის გავლის შემდეგ კი აღნიშნულ ნომერზე გაიგზავნება სმს , ტექსტით Test sms received. შეგიძლიათ ეს ტექსტი შეცვალოთ თქვენთვის სასურველით , მაქს. სიმბოლოების რაოდენობა 160. 20 სიმბოლოზე მეტის გაგზავნას თუ აპირებთ , შეცვალეთ 20 თქვენთვის სასურველით რომელიც უნდა იყოს 160 ზე ნაკლები: სმს-ის მიღება: გაუშვებთ არდუინოს  exe ფაილს, შევდივართ file > exampl...