Мазмуну:

TCA9548A I2C мультиплексор модулу - Arduino жана NodeMCU менен: 11 кадам
TCA9548A I2C мультиплексор модулу - Arduino жана NodeMCU менен: 11 кадам

Video: TCA9548A I2C мультиплексор модулу - Arduino жана NodeMCU менен: 11 кадам

Video: TCA9548A I2C мультиплексор модулу - Arduino жана NodeMCU менен: 11 кадам
Video: Датчик температуры LM75 | Внешний ПЛК Arduino 2024, Ноябрь
Anonim
Image
Image

Сен качандыр бир учурда сен Arduinoго эки, үч же андан көп I2C сенсорлорун туташтыруу керек болгон жагдайга туш болдуң беле, сенсорлордун туруктуу же I2C дареги бар экенин түшүнүш үчүн. Мындан тышкары, бир эле SDA/SCL казыктарында бир эле дарекке ээ болгон эки түзмөккө ээ боло албайсыз!

Ошондуктан, мүмкүнчүлүктөрү кандай? Алардын бардыгын TCA9548A 1ден 8ге чейин I2C мультиплексоруна салыңыз, баары бир автобуста бири-бири менен сүйлөшөт! TCA9548A Breakout бир эле дарекке ээ болгон I2C түзмөктөрү менен баарлашууга мүмкүнчүлүк берет, алар менен интерфейсти жөнөкөйлөтөт.

1 -кадам: Аппараттык талап

Камтылган темалар
Камтылган темалар

Бул окуу куралы үчүн бизге керек:

- Нан тактасы

- TCA9548A I2C мультиплексор

- Ардуино Уно/Нано кандай гана ыңгайлуу болбосун

- NodeMCU

- Бир нече 0.91 & 0.96 I2C OLED дисплейлери

- Jumper Cables, and

- USB кабели кодду жүктөө үчүн

2 -кадам: камтылган темалар

Биз талкууну I2C технологиясынын негиздерин түшүнүүдөн баштайбыз

Андан кийин биз TCA9548A Multiplexer жана кожоюн менен кул I2C технологиясын колдонуп маалыматтарды кантип жөнөтүп жана кабыл алары жөнүндө билебиз, андан кийин биз Arduino жана NodeMCU аркылуу долбоорубузда мультиплексорду кантип программалоого жана колдонууга болорун карап чыгабыз, мен сизге тез көрсөтөм. демо 8 I2C OLED дисплейлерин колдонуп, акыры биз TCA9548A Multiplexerдин артыкчылыктарын жана кемчиликтерин талкуулоо менен окуу куралын бүтүрөбүз.

3 -кадам: I2C Bus негиздери

I2C Bus негиздери
I2C Bus негиздери
I2C Bus негиздери
I2C Bus негиздери
I2C Bus негиздери
I2C Bus негиздери

I-квадрат-C (I²C) же I2C деп аталган интегралдык микросхема-бул бир нече процессор менен сенсордун ортосундагы байланыш үчүн колдонулган эки зымдуу автобус технологиясы (чындыгында 4 зым, сизге дагы VCC жана Ground керек).

Эки зым булар:

* SDA - Сериялык маалыматтар (маалымат линиясы) жана

* SCL - Сериялык саат (саат линиясы)

Эсиңизде болсун, бул эки линия тең "синхрондуу" "эки багыттуу" "ачык агып кетүүчү" жана "резисторлор менен тартылган".

I2C автобус технологиясы башында 80 -жылдардын башында Philips Semiconductors тарабынан бир эле тактада жайгашкан компоненттер ортосунда оңой байланышууга мүмкүндүк берүү үчүн иштелип чыккан.

I2C менен сиз бир нече кулду бир кожоюнга (SPI сыяктуу) туташтыра аласыз же бир же бир нече кулдарды башкарган бир нече кожоюнга ээ боло аласыз. Кожоюндар да, кулдар да маалыматтарды өткөрүп жана ала алышат. Ошентип, I2C автобусундагы түзмөк ушул төрт мамлекеттин биринде болушу мүмкүн:

* Негизги берүү - башкы түйүн маалыматтарды кулга жөнөтөт* Мастер алуу - башкы түйүн кулдан маалыматтарды кабыл алат

* Кул берүү - кул түйүнү маалыматты кожоюнга жөнөтөт

* Кул алуу - кул түйүнү кожоюндан маалыматтарды алат

I2C-бул "кыска аралыкта" "сериялык байланыш протоколу", андыктан маалыматтар бир зым же SDA линиясы боюнча "бит-битке" өткөрүлөт. Биттердин чыгышы кожоюн менен кулдун ортосунда "бөлүшүлгөн" сааттык сигнал менен биттердин тандалмасына шайкештирилет. Саат сигналы ар дайым кожоюн тарабынан көзөмөлдөнөт. Мастер саатты жаратат жана кулдар менен баарлашууну баштайт.

Ошентип, жыйынтыктоо үчүн>

Колдонулган зымдардын саны: 2

Синхрондуу же Асинхрондук: Синхрондуу

Сериялык же параллелдүү: Сериялык

Саат сигналы көзөмөлдөйт: Master Node

Колдонулган чыңалуу: +5 V же +3,3 В.

Магистрлердин максималдуу саны: Чексиз

Кулдардын максималдуу саны: 1008

Максималдуу ылдамдык: Standard Mode = 100kbps

Fast Mode = 400kbps

Жогорку ылдамдык режими = 3,4 Мбит / сек

Ultra Fast Mode = 5 Мбит / сек

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.65vдан 5.5vга чейин кабыл алат. SDA жана SCL киргизүү линияларынын экөө тең VCCге 10K тартылуу каршылыгы аркылуу туташат (Тартуу каршылыгынын өлчөмү I2C линиясындагы сыйымдуулуктун өлчөмү менен аныкталат). Мультиплексор кадимки (100 кГц) жана тез (400 кГц) I2C протоколдорун колдойт. TCA9548Aнын бардык I/O төөнөгүчтөрү 5 вольтко чыдамдуу, ошондой эле жогору же төмөн чыңалуудан жогору которууга колдонулушу мүмкүн.

TCA9548Aнын бардык каналдарына, эгер чыңалуусу бирдей болсо да, тартылуучу резисторлорду коюу жакшы идея. Мунун себеби ички NMOS которгучтан улам. Ал жогорку чыңалууну өтө жакшы өткөрбөйт, экинчи жагынан төмөнкү вольтту өтө жакшы өткөрөт. TCA9548A ошондой эле 1.8-V, 2.5-V же 3.3-V бөлүктөрү 5-V бөлүктөрү менен баарлаша ала турган ар бир SCn/SDn жуптарында ар кандай автобус чыңалуусун колдонууга мүмкүндүк берүүчү Voltage Translation үчүн колдонулушу мүмкүн. Бул автобусту кожоюн жана ар бир кул каналы үчүн керектүү чыңалууга чейин тартуу үчүн тышкы тартма каршылыктарды колдонуу аркылуу жетишилет.

Эгерде микроконтроллер автобустагы чырды же башка туура эмес иштөөнү байкаса, TCA9548Aны RESET пинге төмөн коюу аркылуу баштапкы абалга келтирсе болот.

5 -кадам:

Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт
Сүрөт

TCA9548 бир микроконтроллерге "64 сенсорлор" менен баардык I2C даректери менен байланышууга мүмкүнчүлүк берет, ар бир сенсордун суб-шинасына уникалдуу канал берүү.

Биз бир нече түзмөккө 2 зым аркылуу маалыматтарды жөнөтүү жөнүндө сөз кылганыбызда, аларды чечүүнүн жолу керек. Почтальон жалгыз жолдо келип, почта пакеттерин ар кайсы үйлөргө таштаган сыяктуу, анткени аларда башка даректер жазылган.

Ушул мультиплексорлордун максимум 8инде 0x70-0x77 даректерине бириктирилип, ошол эле I2C даректелген бөлүктөрдүн 64үн көзөмөлдөө үчүн болушу мүмкүн. A0, A1 жана A2 үч дарек биттерин VINге туташтыруу менен сиз даректердин ар кандай айкалышын ала аласыз. TCA9548A дарегинин байты ушундай көрүнөт. Биринчи 7-бит биригип, кул дарегин түзөт. Кул дарегинин акыркы бити аткарыла турган операцияны (окуу же жазуу) аныктайт. Жогорку (1) болгондо окуу тандалат, ал эми төмөн (0) жазуу операциясын тандайт.

6 -кадам: Мастер маалыматтарды кантип жөнөтөт жана алат?

Мастер маалыматтарды кантип жөнөтөт жана алат
Мастер маалыматтарды кантип жөнөтөт жана алат
Мастер маалыматтарды кантип жөнөтөт жана алат
Мастер маалыматтарды кантип жөнөтөт жана алат

Төмөндө кожоюнга кулдук түзмөккө кирүүнүн жалпы тартиби келтирилген:

1. Эгерде кожоюн кулга маалыматтарды жөнөткүсү келсе (ЖАЗЫП):

-Мастер-өткөргүч START шартын жөнөтөт, андан кийин кул кабыл алуучунун даректери жана R/W 0 коюлат.

-Мастер-передатчик '8-разрядды башкаруу реестриндеги' маалыматты кул алуучуга жөнөтөт, качан кул даяр экенин мойнуна алат

-Мастер-передатчик STOP шарты менен өткөрүүнү токтотот

2. Эгерде кожоюн кулдан маалыматтарды алууну же окууну кааласа (READS):

-Мастер-алуучу START шартын жөнөтөт, андан кийин кул-алуучунун даректери жана R/W 1ге коюлган

-Мастер-алуучу суралган реестрди кулдук-өткөргүчкө окуу үчүн жөнөтөт

-Мастер-алуучу кул-өткөргүчтөн маалыматтарды алат

- Бардык байттарды алгандан кийин Мастер байланышты токтотуу жана автобусту кое берүү үчүн кулга NACK сигналын жөнөтөт

- Мастер-алуучу STOP шарты менен которууну токтотот

Эгерде SDA жана SCL линиялары STOP абалынан кийин жогору болсо, автобус бош деп эсептелет.

7 -кадам: Код

Code
Code

Эми, Int коду "Wire" китепканасын кошуудан жана мультиплексорлордун дарегин аныктоодон баштайт.

#"Wire.h" кошуу

#"U8glib.h" кошуу

#аныктоо MUX_Address 0x70 // TCA9548A Encoders дареги

Андан кийин биз байланышкысы келген портту тандап, бул функцияны колдонуу менен андагы маалыматтарды жөнөтүшүбүз керек:

жараксыз selectI2CChannels (uint8_t i) {

if (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 Сканер' кодун иштетиңиз. Arduinoго жүктөлгөндө, эскиз жооп берип жаткан даректерди көрсөтүп, I2C тармагын сканерлейт.

9 -кадам: Wiring жана Demo

Wiring and Demo
Wiring and Demo
Wiring and Demo
Wiring and Demo

Өткөрүү:

Мультиплексорду NodeMCU тактасына туташтыруудан баштайлы. Туташуу:

VIN 5V чейин (же 3.3V)

GND жерге

SDAдан D2ге жана

Тиешелүүлүгүнө жараша D1 казыктарына SCL

Arduino тактасы үчүн туташыңыз:

VIN 5V чейин (же 3.3V)

GND жерге

SDA A4 жана

Тиешелүүлүгүнө жараша SCL A5 төөнөгүчтөргө

MUX микро контроллерге туташтырылгандан кийин, сенсорлорду SCn / SDn жуптарына туташтыруу керек.

Эми, мен 8 OLED дисплейди TCA9548A мультиплексоруна туташтырган бул тез демону карап көрөлү. Бул дисплейлер I2C байланышын колдонгондуктан, алар Arduino менен болгону 2 төөнөгүч аркылуу байланышат.

10 -кадам: Артыкчылыктары жана кемчиликтери

Артыкчылыктары жана кемчиликтери
Артыкчылыктары жана кемчиликтери

АРТЫКЧЫЛЫКТАРЫ

* Байланыш эки гана автобус линиясын талап кылат (зымдар)

* Бардык компоненттердин ортосунда жөнөкөй кожоюн/кул мамилелери бар

* RS232 сыяктуу, мисалы, байдын ылдамдыгына эч кандай катуу талаптар жок, мастер автобус саатын түзөт

* Аппараттык камсыздоо UARTларга караганда анча татаал эмес

* Бир нече кожоюндарды жана бир нече кулдарды колдойт

* ACK/NACK биттери ар бир кадр ийгиликтүү өткөрүлгөндүгүн тастыктайт

* I2C-бул арбитраждык жана кагылышууну аныктоочу "чыныгы көп мастер автобус"

* Автобуска туташкан ар бир аппарат уникалдуу дарек боюнча программалык камсыздоого ээ

* Көпчүлүк I2C түзмөктөрү 100 кГц же 400 кГц байланышта болот

* I²C жөнөкөйлүгү жана өндүрүштүн арзандыгы ылдамдыктан маанилүү болгон перифериялык түзүлүштөр үчүн ылайыктуу

* Белгилүү жана кеңири колдонулган протокол

КЕМЧИЛИКТЕРИ

* SPIге караганда жайыраак маалымат берүү ылдамдыгы

* Маалымат алкагынын өлчөмү 8 бит менен чектелген

* SPI технологиясына караганда ишке ашыруу үчүн татаал жабдуулар керек

Сунушталууда: