Სარჩევი:

TCA9548A I2C მულტიპლექსერული მოდული - არდუინოსა და კვანძთან ერთად MCU: 11 ნაბიჯი
TCA9548A I2C მულტიპლექსერული მოდული - არდუინოსა და კვანძთან ერთად MCU: 11 ნაბიჯი

ვიდეო: TCA9548A I2C მულტიპლექსერული მოდული - არდუინოსა და კვანძთან ერთად MCU: 11 ნაბიჯი

ვიდეო: TCA9548A I2C მულტიპლექსერული მოდული - არდუინოსა და კვანძთან ერთად MCU: 11 ნაბიჯი
ვიდეო: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, ნოემბერი
Anonim
Image
Image

ოდესმე მოხვედით სიტუაციაში, როდესაც თქვენ უნდა მიაერთოთ ორი, სამი ან მეტი I2C სენსორი თქვენს Arduino– ში მხოლოდ იმის გასაგებად, რომ სენსორებს აქვთ ფიქსირებული ან იგივე I2C მისამართი. უფრო მეტიც, თქვენ არ შეგიძლიათ გქონდეთ ერთი და იგივე მისამართის ორი მოწყობილობა იმავე SDA/SCL ქინძისთავებზე!

მაშ, რა არის თქვენი არჩევანი? განათავსეთ ისინი ყველა TCA9548A 1-დან -8 I2C მულტიპლექსერზე, რათა ყველამ ერთსა და იმავე ავტობუსში ისაუბროს ერთმანეთთან! TCA9548A Breakout საშუალებას აძლევს კომუნიკაციას მრავალჯერადი I2C მოწყობილობებთან, რომლებსაც აქვთ ერთი და იგივე მისამართი, რაც ამარტივებს მათთან ურთიერთობას.

ნაბიჯი 1: აპარატურის მოთხოვნა

დაფარული თემები
დაფარული თემები

ამ გაკვეთილისთვის ჩვენ გვჭირდება:

- პურის დაფა

- TCA9548A I2C მულტიპლექსერი

- არდუინო უნო/ნანო რაც მოსახერხებელია

- NodeMCU

- რამდენიმე 0.91 და 0.96 I2C OLED ეკრანი

- ჯუმბერის კაბელები და

- USB კაბელი კოდის ასატვირთად

ნაბიჯი 2: დაფარული თემები

ჩვენ დავიწყებთ ჩვენს დისკუსიას I2C ტექნოლოგიის საფუძვლების გაგებით

შემდეგ ჩვენ შევისწავლით TCA9548A მულტიპლექსერს და როგორ აგზავნის და იღებს მონათმფლობელი და მონაცემი მონაცემებს I2C ტექნოლოგიის გამოყენებით, შემდეგ ჩვენ შევამოწმებთ, თუ როგორ შეგვიძლია დავპროგრამოთ და გამოვიყენოთ მულტიპლექსერი ჩვენს პროექტში Arduino და NodeMCU გამოყენებით, შემდეგ მე გაჩვენებთ სწრაფად დემო 8 I2C OLED დისპლეის გამოყენებით და ბოლოს ჩვენ დავასრულებთ სახელმძღვანელოს TCA9548A მულტიპლექსერის უპირატესობებისა და უარყოფითი მხარეების განხილვით

ნაბიჯი 3: I2C ავტობუსის საფუძვლები

I2C ავტობუსის საფუძვლები
I2C ავტობუსის საფუძვლები
I2C ავტობუსის საფუძვლები
I2C ავტობუსის საფუძვლები
I2C ავტობუსის საფუძვლები
I2C ავტობუსის საფუძვლები

ინტეგრირებული წრე გამოითქმის I- კვადრატში- C (I²C) ან I2C არის ორი მავთულის ავტობუსის ტექნოლოგია (კარგად არის 4 მავთული, რადგან თქვენ ასევე გჭირდებათ VCC და Ground), რომელიც გამოიყენება მრავალ პროცესორსა და სენსორს შორის კომუნიკაციისთვის.

ორი მავთული არის:

* SDA - სერიული მონაცემები (მონაცემთა ხაზი) და

* SCL - სერიული საათი (საათის ხაზი)

გახსოვდეთ, ორივე ეს ხაზი არის "სინქრონული" ორმხრივი "ღია გადინება" და "გაყვანილია რეზისტენტებით".

I2C ავტობუსის ტექნოლოგია თავდაპირველად შეიქმნა Philips Semiconductors– ის მიერ 80 – იანი წლების დასაწყისში, რათა შესაძლებელი ყოფილიყო მარტივი კომუნიკაცია კომპონენტებს შორის, რომლებიც ერთსა და იმავე მიკროსქემზეა განთავსებული.

I2C– ით თქვენ შეგიძლიათ დაუკავშიროთ მრავალი მონა ერთ სამაგისტროს (მაგალითად, SPI) ან გყავთ მრავალი სამაგისტრო, რომლებიც აკონტროლებენ ერთ ან მრავალ მონას. ბატონებსა და მონებს შეუძლიათ მონაცემების გადაცემა და მიღება. ამრიგად, მოწყობილობა I2C ავტობუსზე შეიძლება იყოს ამ ოთხივე მდგომარეობიდან ერთში:

* სამაგისტრო გადაცემა - სამაგისტრო კვანძი მონაცემებს უგზავნის მონას* სამაგისტრო მიღება - სამაგისტრო კვანძი იღებს მონას

* მონა გადაცემა - მონა კვანძი მონაცემებს უგზავნის ოსტატს

* მონა იღებს - მონა კვანძი იღებს მონაცემებს სამაგისტროდან

I2C არის "მოკლე მანძილის" სერიული საკომუნიკაციო პროტოკოლი, ამიტომ მონაცემები გადადის "ბიტი-ბიტი" ერთი მავთულის ან SDA ხაზის გასწვრივ. ბიტების გამომავალი სინქრონიზებულია ბიტების სინჯთან საათის სიგნალით, რომელიც „გაზიარებულია“ოსტატსა და მონას შორის. საათის სიგნალს ყოველთვის აკონტროლებს ოსტატი. ოსტატი ქმნის საათს და იწყებს კომუნიკაციას მონებთან.

ასე რომ, შეჯამება>

გამოყენებული მავთულის რაოდენობა: 2

სინქრონული ან ასინქრონული: სინქრონული

სერიული ან პარალელური: სერიული

საათის სიგნალი აკონტროლებს: სამაგისტრო კვანძს

გამოყენებული ძაბვები: +5 V ან +3.3 V

სამაგისტროების მაქსიმალური რაოდენობა: შეუზღუდავი

მონების მაქსიმალური რაოდენობა: 1008

მაქსიმალური სიჩქარე: სტანდარტული რეჟიმი = 100 kbps

სწრაფი რეჟიმი = 400 kbps

მაღალი სიჩქარის რეჟიმი = 3.4 Mbps

ულტრა სწრაფი რეჟიმი = 5 Mbps

ნაბიჯი 4: TCA9548A I2C მულტიპლექსერის მოდული

TCA9548A I2C მულტიპლექსერული მოდული
TCA9548A I2C მულტიპლექსერული მოდული
TCA9548A I2C მულტიპლექსერული მოდული
TCA9548A I2C მულტიპლექსერული მოდული
TCA9548A I2C მულტიპლექსერული მოდული
TCA9548A I2C მულტიპლექსერული მოდული

TCA9548A არის რვაარხიანი (ორმხრივი) I2C მულტიპლექსერი, რომელიც რვა ცალკეულ I2C მოწყობილობას აკონტროლებს ერთი მასპინძელი I2C ავტობუსით. თქვენ უბრალოდ უნდა დააკავშიროთ I2C სენსორები SCn / SDn მულტიპლექსურ ავტობუსებზე. მაგალითად, თუ რვა იდენტური OLED ჩვენება არის საჭირო პროგრამაში, თითოეული ჩვენების ერთი შეიძლება იყოს დაკავშირებული თითოეულ ამ არხზე: 0-7.

მულტიპლექსერი აკავშირებს მიკროკონტროლის VIN, GND, SDA და SCL ხაზებს. ბრეაკოუტ დაფა იღებს VIN– ს 1.65 ვ - დან 5.5 ვ - მდე. ორივე შემავალი SDA და SCL ხაზები დაკავშირებულია VCC– სთან 10K გამწევ რეზისტორის საშუალებით (გამწევ რეზისტორის ზომა განისაზღვრება I2C ხაზებზე ტევადობის რაოდენობით). მულტიპლექსერი მხარს უჭერს როგორც ნორმალურ (100 kHz), ასევე სწრაფ (400 kHz) I2C პროტოკოლებს. TCA9548A– ს ყველა I/O ქინძისთავები 5 ვოლტის ტოლერანტულია და ასევე შეიძლება გამოყენებულ იქნას მაღალიდან დაბალიდან ან დაბალიდან მაღალ ძაბვებზე.

კარგი იდეაა TCA9548A– ს ყველა არხზე გამწევი რეზისტორების დაყენება, თუნდაც ძაბვები იგივე იყოს. ამის მიზეზი არის შიდა NMOS გადამრთველი. ის არ გადასცემს მაღალ ძაბვას ძალიან კარგად, მეორეს მხრივ ის ძალიან კარგად გადასცემს დაბალ ძაბვებს. TCA9548A ასევე შეიძლება გამოყენებულ იქნას ძაბვის თარგმანისთვის, რაც საშუალებას იძლევა გამოიყენოს სხვადასხვა ავტობუსის ძაბვა თითოეულ SCn/SDn წყვილზე ისე, რომ 1.8-V, 2.5-V, ან 3.3-V ნაწილებს შეეძლოთ დაუკავშირდნენ 5-V ნაწილებს. ეს მიიღწევა გარე გამწევი რეზისტორების გამოყენებით, რათა ავტობუსი გაიყვანოს სასურველ ძაბვამდე სამაგისტრო და თითოეული მონა არხისათვის.

თუ მიკროკონტროლერი აღმოაჩენს ავტობუსის კონფლიქტს ან სხვა არასათანადო ოპერაციას, TCA9548A შეიძლება გადატვირთოთ RESET პინზე დაბალი მტკიცებით.

ნაბიჯი 5:

გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება

TCA9548 საშუალებას აძლევს ერთ მიკროკონტროლერს დაუკავშირდეს '64 სენსორს ', ყველა იგივე და განსხვავებული I2C მისამართით, თითოეული სენსორული მონა ავტობუსისთვის უნიკალური არხის მინიჭებით.

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

თქვენ შეგიძლიათ გქონდეთ ამ მულტიპლექსერის მაქსიმუმ 8 დაკავშირებული 0x70-0x77 მისამართებზე, რათა გააკონტროლოთ 64 იგივე I2C მიმართული ნაწილი. სამი მისამართის ბიტის A0, A1 და A2 VIN– თან შეერთებით შეგიძლიათ მიიღოთ მისამართების განსხვავებული კომბინაცია. ასე გამოიყურება TCA9548A მისამართის ბაიტი. პირველი 7 ბიტიანი კომბინაცია ქმნის მონა მისამართს. მონა მისამართის ბოლო ბიტი განსაზღვრავს შესასრულებელ ოპერაციას (წაკითხვა ან წერა). როდესაც ის მაღალია (1), ამოირჩევა კითხვა, ხოლო დაბალი (0) ირჩევს ჩაწერის ოპერაციას.

ნაბიჯი 6: როგორ აგზავნის და იღებს ოსტატი მონაცემებს

როგორ აგზავნის და იღებს ოსტატი მონაცემებს
როგორ აგზავნის და იღებს ოსტატი მონაცემებს
როგორ აგზავნის და იღებს ოსტატი მონაცემებს
როგორ აგზავნის და იღებს ოსტატი მონაცემებს

ქვემოთ მოცემულია ზოგადი პროცედურა სამაგისტრო მონა მოწყობილობაზე წვდომისათვის:

1. თუ სამაგისტრო სურს მონაცემების გაგზავნა მონა (WRITES):

-სამაუწყებლო გადამცემი აგზავნის START მდგომარეობას, რასაც მოყვება მონა-მიმღების მისამართები და R/W დაყენებულია 0

-სამაუწყებლო გადამცემი აგზავნის მონაცემებს "8 ბიტიანი საკონტროლო რეგისტრებში" მონა მიმღებზე, როდესაც მონა აღიარებს, რომ ის მზად არის

-სამაგისტრო გადამცემი წყვეტს გადაცემას STOP პირობით

2. თუ ოსტატს სურს მონას მიიღოს ან წაიკითხოს მონაცემი (იკითხება):

სამაგისტრო მიმღები აგზავნის START მდგომარეობას, რასაც მოყვება მონა-მიმღების მისამართები და R/W დაყენებულია 1

-მთავარი მიმღები აგზავნის მოთხოვნილ რეგისტრს მონა-გადამცემს წასაკითხად

-სამაგისტრო მიმღები იღებს მონაცემებს მონა გადამცემისგან

- მას შემდეგ, რაც ყველა ბაიტი მიიღება, ოსტატი აგზავნის NACK სიგნალს მონას, რომ შეწყვიტოს კომუნიკაცია და გაუშვას ავტობუსი

- სამაგისტრო მიმღები წყვეტს გადაცემას STOP პირობით

ავტობუსი ითვლება უსაქმურად, თუ ორივე SDA და SCL ხაზი მაღალია STOP მდგომარეობის შემდეგ.

ნაბიჯი 7: კოდი

კოდი
კოდი

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

#მოიცავს "Wire.h"

#მოიცავს "U8glib.h"

#განსაზღვრეთ MUX_ მისამართი 0x70 // TCA9548A კოდირების მისამართი

შემდეგ ჩვენ უნდა შევარჩიოთ პორტი, რომელთანაც გვინდა ურთიერთობა და გავაგზავნოთ მასზე მონაცემები ამ ფუნქციის გამოყენებით:

ბათილია selectI2CC არხები (uint8_t i) {

თუ (i> 7) დაბრუნდება;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

შემდეგი ჩვენ ვიწყებთ ჩვენებას კონფიგურაციის განყოფილებაში დარეკვით "u8g.begin ();" MUX- ზე მიმაგრებული თითოეული ჩვენებისათვის "tcaselect (i);"

ინიციალიზაციის შემდეგ, ჩვენ შეგვიძლია გავაკეთოთ ის, რაც გვსურს მხოლოდ ფუნქციის გამოძახებით "tcaselect (i);" სადაც "i" არის მულტიპლექსური ავტობუსის მნიშვნელობა და შემდეგ მონაცემების და საათის შესაბამისად გაგზავნა.

ნაბიჯი 8: I2C სკანერი

I2C სკანერი
I2C სკანერი

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

ნაბიჯი 9: გაყვანილობა და დემო

გაყვანილობა და დემო
გაყვანილობა და დემო
გაყვანილობა და დემო
გაყვანილობა და დემო

გაყვანილობა:

დავიწყოთ მულტიპლექსერის NodeMCU დაფასთან დაკავშირებით. დაკავშირება:

VIN 5V (ან 3.3V)

GND მიწაზე

SDA to D2 და

SCL to D1 ქინძისთავები შესაბამისად

Arduino დაფისთვის დააკავშირეთ:

VIN 5V (ან 3.3V)

GND მიწაზე

SDA to A4 და

SCL to A5 ქინძისთავები შესაბამისად

მას შემდეგ, რაც MUX მიერთებულია მიკროკონტროლერთან, თქვენ უბრალოდ უნდა დაუკავშიროთ სენსორები SCn / SDn წყვილებს.

ახლა მოდით შევამოწმოთ ეს სწრაფი დემო, რომელშიც მე დავუკავშირე 8 OLED დისპლეი TCA9548A მულტიპლექსერთან. რადგან ეს ეკრანები იყენებენ I2C კომუნიკაციას, ისინი არდუინოსთან ურთიერთობენ მხოლოდ 2 ქინძისთავის გამოყენებით.

ნაბიჯი 10: უპირატესობები და უარყოფითი მხარეები

Დადებითი და უარყოფითი მხარეები
Დადებითი და უარყოფითი მხარეები

უპირატესობები

* კომუნიკაციისთვის საჭიროა მხოლოდ ორი ავტობუსის ხაზი (მავთული)

* მარტივი ბატონის/მონა ურთიერთობები არსებობს ყველა კომპონენტს შორის

* არ არის მკაცრი მოთხოვნები ბაუდზე, მაგალითად RS232– ით, ოსტატი ქმნის ავტობუსის საათს

* აპარატურა ნაკლებად რთულია ვიდრე UARTs

* მხარს უჭერს მრავალ ბატონს და მრავალ მონას

* ACK/NACK ბიტი იძლევა დადასტურებას, რომ თითოეული ჩარჩო წარმატებით არის გადატანილი

* I2C არის "ნამდვილი მრავალ სამაგისტრო ავტობუსი", რომელიც უზრუნველყოფს არბიტრაჟს და შეჯახების გამოვლენას

* თითოეული მოწყობილობა, რომელიც დაკავშირებულია ავტობუსთან, არის პროგრამული უზრუნველყოფის მისამართით უნიკალური მისამართით

* I2C მოწყობილობების უმეტესობას შეუძლია კომუნიკაცია 100kHz ან 400kHz

* I²C შესაფერისია პერიფერიული მოწყობილობებისთვის, სადაც სიმარტივე და დაბალი წარმოების ღირებულება უფრო მნიშვნელოვანია ვიდრე სიჩქარე

* კარგად ცნობილი და ფართოდ გავრცელებული პროტოკოლი

უარყოფითი მხარეები

* მონაცემთა გადაცემის უფრო ნელი მაჩვენებელი ვიდრე SPI

* მონაცემთა ჩარჩოს ზომა შეზღუდულია 8 ბიტით

* უფრო რთული აპარატურაა საჭირო განსახორციელებლად, ვიდრე SPI ტექნოლოგია

გირჩევთ: