SPI და Arduino ინტერფეისი

Სარჩევი:

SPI და Arduino ინტერფეისი
SPI და Arduino ინტერფეისი

ვიდეო: SPI და Arduino ინტერფეისი

ვიდეო: SPI და Arduino ინტერფეისი
ვიდეო: Arduino მეორე საფეხური, #27 გაკვეთილი - SPI ინტერფეისი და შესაბამისი პროტოკოლი 2024, მაისი
Anonim

ჩვენ ვსწავლობთ SPI ინტერფეისს და ვუკავშირდებით ცვლადი რეესტრს Arduino– ს, რომელსაც ამ პროტოკოლის საშუალებით შევწვდებით LED– ების სამართავად.

SPI ინტერფეისი
SPI ინტერფეისი

აუცილებელია

  • - არდუინო;
  • - ცვლის რეესტრი 74HC595;
  • - 8 LED;
  • - 220 ომის 8 რეზისტორი.

ინსტრუქციები

Ნაბიჯი 1

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

MOSI (Master Out Slave In) - მონაცემთა გადაცემის ხაზი მასტერიდან მონა მოწყობილობებზე;

MISO (Master In Slave Out) - გადამცემი ხაზი მონადან ბატონზე;

SCLK (სერიული საათი) - მაგისტრის სინქრონიზაციის საათის იმპულსები;

SS (Slave Select) - მონა მოწყობილობის შერჩევის ხაზი; როდესაც ხაზი "0", მონა "ესმის", რომ მასზე წვდომა ხდება.

მონაცემთა გადაცემის ოთხი რეჟიმი არსებობს (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), საათის პულსის პოლარობის კომბინაციის გამო (ჩვენ ვმუშაობთ მაღალ და დაბალ დონეზე), საათის პოლარობის, CPOL და საათის იმპულსების ფაზაში (სინქრონიზაცია საათის პულსის მომატება ან დაცემა), საათის ფაზა, CPHA.

ნახაზზე მოცემულია SPI პროტოკოლის გამოყენებით მოწყობილობების შეერთების ორი ვარიანტი: დამოუკიდებელი და კასკადური. როდესაც დამოუკიდებლად უკავშირდება SPI ავტობუსს, სამაგისტრო კომუნიკაცია თითოეულ მონასთან ინდივიდუალურად. კასკადით - მონა მოწყობილობებს იწყებენ მონაცვლეობით, კასკადში.

SPI კავშირის ტიპები
SPI კავშირის ტიპები

ნაბიჯი 2

Arduino- ში SPI ავტობუსები სპეციალურ პორტებზეა. თითოეულ დაფას აქვს საკუთარი პინ დავალება. მოხერხებულობისთვის, ქინძისთავები დუბლირებულია და მოთავსებულია ცალკე ICSP (In Circuit Serial Programming) კონექტორზე. გთხოვთ გაითვალისწინოთ, რომ მას შემდეგ, რაც ICSP კონექტორზე - SS არ არის მონა არჩევის შტეფი ივარაუდება, რომ Arduino გამოყენებული იქნება როგორც სამაგისტრო ქსელში. საჭიროების შემთხვევაში, თქვენ შეგიძლიათ მიუთითოთ Arduino- ს ნებისმიერი ციფრული პინი SS- ით.

ნახატზე მოცემულია ქინძისთავების სტანდარტული დანიშვნა SPI ავტობუსებზე Arduino UNO და Nano.

SPI განხორციელება Arduino- ში
SPI განხორციელება Arduino- ში

ნაბიჯი 3

Arduino– სთვის დაიწერა სპეციალური ბიბლიოთეკა, რომელიც ახორციელებს SPI პროტოკოლს. ეს დაკავშირებულია ასე: პროგრამის დასაწყისში დაამატეთ #include SPI.h

SPI პროტოკოლთან მუშაობის დასაწყებად, საჭიროა დააყენოთ პარამეტრები და შემდეგ მოახდინოთ პროტოკოლის ინიცირება SPI.beginTransaction () პროცედურის გამოყენებით. ამის გაკეთება შეგიძლიათ ერთი ინსტრუქციით: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

ეს ნიშნავს, რომ SPI პროტოკოლის ინიციალიზაცია ხდება 14 მეგაჰერცი სიხშირით, მონაცემთა გადაცემა მიდის MSB– დან (ყველაზე მნიშვნელოვანი ბიტიდან), "0" რეჟიმში.

ინიციალიზაციის შემდეგ, ჩვენ ვირჩევთ მონა მოწყობილობას LSS მდგომარეობაში შესაბამისი SS ქინძისთავის განთავსებით.

შემდეგ ჩვენ მონაცემებს გადავცემთ მონა მოწყობილობაზე SPI.transfer () ბრძანებით.

გადაცემის შემდეგ, SS- ს ვუბრუნდებით HIGH მდგომარეობაში.

ოქმთან მუშაობა მთავრდება SPI.endTransaction () ბრძანებით. სასურველია შემცირდეს გადაცემის შესრულების დრო SPI.beginTransaction () და SPI.endTransaction () ინსტრუქციებს შორის ისე, რომ არ მოხდეს გადახურვა, თუ სხვა მოწყობილობა ცდილობს მონაცემთა გადაცემის ინიცირებას სხვადასხვა პარამეტრების გამოყენებით.

SPI გადაცემა
SPI გადაცემა

ნაბიჯი 4

განვიხილოთ SPI ინტერფეისის პრაქტიკული გამოყენება. ჩვენ ვანთებთ LED- ებს SPI ავტობუსის მეშვეობით 8-ბიტიანი ცვლადი რეესტრის კონტროლით. მოდით, 74HC595 ცვლის რეგისტრატორი დავუკავშიროთ Arduino- ს. ჩვენ ვუკავშირდებით თითოეულ 8 გამომავალს LED- ის საშუალებით (შეზღუდული რეზისტორის მეშვეობით). დიაგრამა ნაჩვენებია ნახატზე.

74HC595 ცვლადი რეესტრის დამაკავშირებელი Arduino- ს
74HC595 ცვლადი რეესტრის დამაკავშირებელი Arduino- ს

ნაბიჯი 5

მოდით დავწეროთ ეს ესკიზი.

პირველ რიგში, მოდით დავაკავშიროთ SPI ბიბლიოთეკა და დავიწყოთ SPI ინტერფეისი. მოდით განვსაზღვროთ pin 8, როგორც მონათა შერჩევის pin. მოდით, გავასუფთავოთ ცვლის რეესტრი და გავუგზავნოთ მას მნიშვნელობა "0". ჩვენ ვიწყებთ სერიულ პორტს.

იმისათვის, რომ შეცვალოთ კონკრეტული LED ცვლადი რეესტრის გამოყენებით, მის შეყვანას უნდა გამოიყენოთ 8 ბიტიანი ნომერი. მაგალითად, იმისათვის, რომ პირველი LED აინთოს, ჩვენ ვაძლევთ საკვებ ნომერს 00000001, მეორისთვის - 00000010, მესამეზე - 00000100 და ა.შ. ეს ორობითი რიცხვები ათობითი აღნიშვნებში ქმნიან შემდეგ თანმიმდევრობას: 1, 2, 4, 8, 16, 32, 64, 128 და არიან ორიდან 0-დან 7-მდე.

შესაბამისად, მარყუჟში () LED– ების რაოდენობის მიხედვით, ჩვენ ხელახლა გამოვთვლით 0 – დან 7 – მდე. სიმძლავრის (ფუძის, ხარისხის) ფუნქცია აწევს 2 – ს ციკლის მრიცხველის სიმძლავრამდე. მიკროკონტროლერები ძალიან ზუსტად არ მუშაობენ "ორმაგი" ტიპის ციფრებთან, ამიტომ შედეგის მთელ რიცხვში გადასაყვანად, ვიყენებთ რაუნდის () ფუნქციას. და შედეგად ნომერს გადავიტანთ ცვლის რეესტრში. სიცხადისთვის, სერიული პორტის მონიტორი აჩვენებს მნიშვნელობებს, რომლებიც მიიღება ამ ოპერაციის დროს: ერთი გადის ციფრებში - LED- ები ანათებენ ტალღად.

ჩანახატი ცვლადი რეესტრის კონტროლისთვის SPI ავტობუსის საშუალებით
ჩანახატი ცვლადი რეესტრის კონტროლისთვის SPI ავტობუსის საშუალებით

ნაბიჯი 6

შუქდიოდები ანათებენ თავის მხრივ და ჩვენ ვაკვირდებით სინათლის მოძრავ "ტალღას". LED- ების კონტროლი ხდება ცვლადი რეესტრის გამოყენებით, რომელსაც ჩვენ SPI ინტერფეისით ვუკავშირდებით. შედეგად, მხოლოდ 3 Arduino ქინძისთავები გამოიყენება 8 LED- ების მართვისთვის.

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

გირჩევთ: