Cov txheej txheem:

TCA9548A I2C Multiplexer Module - Nrog Arduino thiab NodeMCU: 11 Kauj Ruam
TCA9548A I2C Multiplexer Module - Nrog Arduino thiab NodeMCU: 11 Kauj Ruam

Video: TCA9548A I2C Multiplexer Module - Nrog Arduino thiab NodeMCU: 11 Kauj Ruam

Video: TCA9548A I2C Multiplexer Module - Nrog Arduino thiab NodeMCU: 11 Kauj Ruam
Video: Solving I2C Address Conflicts - TCA9548A I2C Multiplexer 2024, Hlis ntuj nqeg
Anonim
Image
Image

Koj puas tau nkag mus rau qhov xwm txheej uas koj yuav tsum xaim ob, peb lossis ntau dua I2C Sensors rau koj Arduino tsuas yog kom paub tias cov ntsuas muaj qhov tsau lossis tib I2C chaw nyob. Ntxiv mus, koj tsis tuaj yeem muaj ob lub cuab yeej nrog tib qhov chaw nyob ntawm tib SDA/SCL pins!

Yog li, koj cov kev xaiv yog dab tsi? Muab lawv tso rau ntawm TCA9548A 1-to-8 I2C multiplexer kom lawv txhua tus tham nrog ib leeg ntawm tib lub npav! TCA9548A Breakout ua rau muaj kev sib txuas lus nrog ntau I2C cov cuab yeej uas muaj tib qhov chaw nyob ua rau nws yooj yim los cuam tshuam nrog lawv.

Kauj Ruam 1: Yuav Tsum Tau Kho Vajtse

Cov ncauj lus npog
Cov ncauj lus npog

Rau qhov kev qhia no peb xav tau:

- Cov qhob cij

TCA9548A I2C Multiplexer

- Arduino Uno/Nano txhua yam uas yooj yim

- NodeMCU

Ob peb 0.91 & 0.96 I2C OLED cov lus

- Jumper Cables, thiab

- USB Cable txhawm rau upload cov cai

Kauj Ruam 2: Cov ncauj lus npog

Peb yuav pib peb qhov kev sib tham los ntawm kev nkag siab cov hauv paus ntawm I2C thev naus laus zis

Tom qab ntawd peb yuav kawm paub txog TCA9548A Multiplexer thiab yuav ua li cas tus tswv thiab qhev xa thiab tau txais cov ntaub ntawv siv I2C thev naus laus zis Tom qab ntawd peb yuav tshuaj xyuas seb peb tuaj yeem ua haujlwm li cas thiab siv tus lej sib txuam hauv peb txoj haujlwm siv Arduino thiab NodeMCU Tom ntej, Kuv yuav qhia koj sai demo siv 8 I2C OLED cov lus thiab thaum kawg peb yuav ua tiav qhov kev qhia los ntawm kev tham txog qhov zoo thiab qhov tsis zoo ntawm TCA9548A Multiplexer

Kauj Ruam 3: Pib ntawm I2C Bus

Kev pib ntawm I2C Bus
Kev pib ntawm I2C Bus
Kev pib ntawm I2C Bus
Kev pib ntawm I2C Bus
Kev pib ntawm I2C Bus
Kev pib ntawm I2C Bus

Kev sib koom ua ke Circuit qhia tau hais tias I-squared-C (I²C) lossis I2C yog ob txoj kab tsheb npav siv tshuab (zoo tiag 4 xov tooj vim tias koj tseem xav tau VCC thiab Hauv av) uas yog siv rau kev sib txuas lus ntawm ntau cov txheej txheem thiab cov ntsuas.

Ob txoj kab yog:

* SDA - Serial Data (kab ntawv cov ntaub ntawv) thiab

* SCL - Serial Clock (moos kab)

Nco ntsoov, ob kab ntawv no yog 'synchronous' 'bidirectional' 'open-drain' thiab 'rub-up nrog resistors'.

I2C tsheb npav thev naus laus zis tau tsim los ntawm Philips Semiconductors thaum ntxov '80s kom tso cai sib txuas lus yooj yim ntawm cov khoom uas nyob ntawm tib lub rooj tsav xwm hauv Circuit Court.

Nrog I2C, koj tuaj yeem txuas ntau tus qhev rau ib tus tswv (zoo li SPI) lossis koj tuaj yeem muaj ntau tus tswv tswj ib leeg, lossis ntau tus qhev. Ob tus tswv thiab qhev tuaj yeem xa thiab txais cov ntaub ntawv. Yog li, cov cuab yeej ntawm I2C npav tuaj yeem nyob hauv ib ntawm plaub lub xeev no:

* Tus tswv xa tawm - tus tswv node xa cov ntaub ntawv mus rau tus qhev* Tus tswv tau txais - tus tswv node tau txais cov ntaub ntawv los ntawm tus qhev

* Qhev xa tawm - qhev qhev tau xa cov ntaub ntawv mus rau tus tswv

* Qhev tau txais - qhev ntawm tau txais cov ntaub ntawv los ntawm tus tswv

I2C yog qhov 'luv nrug' 'kev sib txuas lus raws tu qauv', yog li cov ntaub ntawv raug xa tawm 'ntsis-ntawm-ntsis' raws ib leeg xaim lossis kab SDA. Cov txiaj ntsig ntawm cov khoom tau ua tiav rau qhov piv txwv ntawm cov khoom los ntawm lub moos teeb liab 'sib koom' ntawm tus tswv thiab tus qhev. Lub moos teeb liab ib txwm tswj los ntawm tus tswv. Tus Xib Hwb tsim lub moos thiab pib sib tham nrog qhev.

Yog li, txhawm rau suav nws>

Cov xov tooj siv: 2

Synchronous lossis Asynchronous: Synchronous

Serial lossis Parallel: Serial

Lub moos teeb liab tswj los ntawm: Master Node

Voltages siv: +5 V lossis +3.3 V

Tus naj npawb ntawm Masters: Unlimited

Tus naj npawb ntawm Cov Qhua Siab Tshaj: 1008

Tshaj siab tshaj plaws: Txuj Hom = 100kbps

Hom Ceev = 400kbps

Hom Kev Kub Ceev = 3.4 Mbps

Ultra Fast Mode = 5 Mbps

Kauj Ruam 4: TCA9548A I2C Multiplexer Module

TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module

TCA9548A yog yim-channel (bidirectional) I2C multiplexer uas tso cai yim cais I2C cov cuab yeej los tswj los ntawm ib tus tswv tsheb I2C. Koj tsuas yog yuav tsum xaim lub I2C cov cim rau SCn / SDn cov npav sib tw. Piv txwv li, yog yim yim xav tau OLED cov lus qhia hauv daim ntawv thov, ib qho ntawm txhua cov zaub tuaj yeem txuas nrog ntawm txhua txoj hauv kev no: 0-7.

Multiplexer txuas rau VIN, GND, SDA thiab SCL kab ntawm tus tswj hwm micro. Pawg neeg tawg rog lees paub VIN los ntawm 1.65v txog 5.5v. Ob qho kev tawm tswv yim SDA thiab SCL txuas nrog VCC los ntawm 10K rub tawm tus tiv thaiv (Qhov loj ntawm qhov rub tawm tus tiv thaiv tau txiav txim siab los ntawm qhov muaj peev xwm ntawm I2C kab). Multiplexer txhawb ob qho tib si (100 kHz) thiab nrawm (400 kHz) I2C cov txheej txheem. Txhua tus I/O pins ntawm TCA9548A yog 5-volt tiv taus thiab tseem tuaj yeem siv los txhais lus los ntawm siab mus rau qis lossis qis mus rau qhov siab.

Nws yog lub tswv yim zoo los tso cov rub tawm ntawm txhua txoj hauv kev ntawm TCA9548A, txawm tias qhov hluav taws xob zoo ib yam. Qhov laj thawj rau qhov no yog vim los ntawm sab hauv NMOS hloov. Nws tsis xa hluav taws xob zoo heev, ntawm qhov tod tes nws kis tau cov hluav taws xob qis heev zoo heev. TCA9548A kuj tseem siv tau rau Kev Txhais Voltage, tso cai siv cov tsheb npav sib txawv ntawm txhua SCn/SDn khub xws li 1.8-V, 2.5-V, lossis 3.3-V ntu tuaj yeem sib tham nrog 5-V ntu. Qhov no yog ua tiav los ntawm kev siv sab nraud rub tawm cov neeg tawm tsam kom rub lub npav mus rau qhov xav tau hluav taws xob rau tus tswv thiab txhua tus qhev channel.

Yog tias tus tswj hwm micro pom lub tsheb npav tsis sib haum lossis lwm yam kev ua haujlwm tsis raug TCA9548A tuaj yeem rov pib dua los ntawm kev lees paub qis rau RESET tus pin.

Kauj ruam 5:

Duab
Duab
Duab
Duab
Duab
Duab

TCA9548 tso cai rau ib tus tswj hwm micro sib txuas lus nrog txog '64 sensors 'txhua qhov nrog tib lossis sib txawv I2C chaw nyob los ntawm kev xa ib lub channel tshwj xeeb rau txhua tus sensor qhev sub-bus.

Thaum peb tham txog kev xa cov ntaub ntawv hla 2 xov hlau mus rau ntau lub cuab yeej peb yuav xav tau txoj hauv kev los daws lawv. Nws zoo ib yam li tus kws xa ntawv tuaj ntawm ib txoj kev thiab xa cov ntawv xa mus rau ntau lub tsev vim tias lawv muaj chaw nyob sib txawv sau rau ntawm lawv.

Koj tuaj yeem muaj qhov siab kawg 8 ntawm cov sib txuas sib txuas ua ke ntawm 0x70-0x77 chaw nyob txhawm rau txhawm rau tswj 64 ntawm tib I2C hais qhov chaw. Los ntawm kev txuas peb qhov chaw nyob A0, A1 thiab A2 rau VIN koj tuaj yeem tau txais kev sib txawv ntawm cov chaw nyob. Nov yog qhov chaw nyob byte ntawm TCA9548A zoo li cas. Thawj 7-khoom ua ke los ua tus qhev nyob. Qhov kawg ntawm tus qhev qhov chaw nyob qhia txog kev ua haujlwm (nyeem lossis sau) kom ua. Thaum nws siab (1), xaiv kev nyeem ntawv, thaum qis (0) xaiv qhov ua haujlwm.

Kauj Ruam 6: Tus Xib Hwb Xa & Txais Cov Ntaub Ntawv Li Cas

Tus Xib Hwb Xa & Txais Cov Ntaub Ntawv Li Cas
Tus Xib Hwb Xa & Txais Cov Ntaub Ntawv Li Cas
Tus Xib Hwb Xa & Txais Cov Ntaub Ntawv Li Cas
Tus Xib Hwb Xa & Txais Cov Ntaub Ntawv Li Cas

Cov hauv qab no yog cov txheej txheem dav dav rau tus tswv nkag mus rau cov cuab yeej qhev:

1. Yog tus tswv xav xa cov ntaub ntawv mus rau tus qhev (WRITES):

-Master-transmitter xa qhov pib mob raws li qhov chaw nyob ntawm tus qhev-txais thiab R/W teeb tsa rau 0

-Master-transmitter xa cov ntaub ntawv hauv '8-ntsis tswj npe' rau tus qhev-txais thaum tus qhev lees paub tias nws npaj tau

-Master-transmitter xaus qhov kev hloov pauv nrog STOP mob

2. Yog tus tswv xav tau lossis nyeem cov ntaub ntawv los ntawm tus qhev (NYEEM):

-Tus tswv-tus txais xa tus mob START ua raws li qhov chaw nyob ntawm tus qhev-txais thiab R/W teeb tsa rau 1

-Tus tswv-tus txais tau xa daim ntawv thov sau npe los nyeem rau qhev-xa tawm

-Tus tswv-txais tau txais cov ntaub ntawv los ntawm tus qhev-xa tawm

- Thaum tag nrho cov bytes tau txais Master xa NACK lub cim rau tus qhev kom nres kev sib txuas lus thiab tso tsheb npav

- Tus tswv-tus txais tau xaus qhov kev hloov pauv nrog STOP

Tsheb npav suav tias tsis ua haujlwm yog tias ob leeg SDA thiab SCL cov kab siab tom qab STOP mob.

Kauj ruam 7: Code

Code
Code

Tam sim no, Int txoj cai cia pib los ntawm suav nrog lub tsev qiv ntawv "Hlau" thiab los ntawm kev txhais cov chaw nyob ntau ntxiv.

#suav nrog "Wire.h"

#suav nrog "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Encoders address

Tom qab ntawd peb yuav tsum xaiv qhov chaw nres nkoj peb xav sib txuas lus rau thiab xa cov ntaub ntawv ntawm nws siv txoj haujlwm no:

void selectI2CChannels (uint8_t kuv) {

yog tias (i> 7) rov qab;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << kuv);

Wire.endTransmission ();

}

Tom ntej no peb yuav pib ua cov zaub hauv ntu teeb tsa los ntawm kev hu "u8g.begin ();" rau txhua cov duab txuas rau MUX "tcaselect (i);"

Thaum pib ua ntej, peb tuaj yeem ua txhua yam peb xav tau tsuas yog hu rau lub luag haujlwm "tcaselect (i);" qhov twg "i" yog tus nqi ntawm cov npav sib tw thiab tom qab ntawd xa cov ntaub ntawv thiab lub sijhawm raws li.

Kauj Ruam 8: I2C Scanner

I2C Tshuab Luam Ntawv
I2C Tshuab Luam Ntawv

Tsuas yog hauv qhov xwm txheej yog tias koj tsis paub meej txog qhov chaw nyob ntawm koj lub I2C daim ntaub thaiv, tom qab ntawv nyem qhov txuas 'I2C Scanner' tus lej txhawm rau nrhiav qhov chaw nyob hex ntawm koj lub cuab yeej. Thaum thauj mus rau Arduino, kos duab yuav luam theej duab I2C network, qhia cov chaw nyob uas tau teb.

Kauj Ruam 9: Txuas thiab Demo

Thaiv thiab Demo
Thaiv thiab Demo
Thaiv thiab Demo
Thaiv thiab Demo

Thaiv:

Cia pib los ntawm kev txuas tus lej sib txuas mus rau NodeMCU pawg thawj coj. Txuas:

VIN rau 5V (lossis 3.3V)

GND rau hauv av

SDA to D2 thiab

SCL rau D1 pins feem

Rau Arduino board txuas:

VIN rau 5V (lossis 3.3V)

GND rau hauv av

SDA to A4 thiab

SCL rau A5 pins feem

Thaum MUX tau txuas rau lub micro-controller, koj tsuas yog yuav tsum txuas lub ntsuas hluav taws xob mus rau SCn / SDn khub.

Tam sim no, cia saib qhov kev qhia tawm sai uas kuv tau txuas nrog 8 OLED cov lus rau TCA9548A Multiplexer. Raws li cov lus qhia siv I2C kev sib txuas lus, lawv sib tham nrog Arduino siv tsuas yog 2 tus pin.

Kauj Ruam 10: Qhov Zoo thiab Qhov Tsis Zoo

Qhov Zoo thiab Qhov Tsis Zoo
Qhov Zoo thiab Qhov Tsis Zoo

ADVANTAGES

* Kev sib txuas lus tsuas yog siv ob kab npav (xov hlau)

* Ib tus tswv yooj yim/qhev kev sib raug zoo muaj nyob ntawm txhua ntu

* Tsis muaj qhov xav tau nruj npaum li qhov xav tau xws li piv txwv nrog RS232, tus tswv tsim lub npav npav

* Kho vajtse tsis yooj yim dua li UARTs

* Txhawb nqa ntau tus tswv thiab ntau tus qhev

* ACK/NACK ntsis muab kev lees paub tias txhua tus ncej tau ua tiav kev xa mus

* I2C yog qhov tseeb ntau tus tswv tsheb npav 'muab kev txiav txim plaub ntug thiab kev sib tsoo kom pom

* Txhua lub cuab yeej txuas nrog lub npav yog software-addressable los ntawm qhov chaw nyob tshwj xeeb

* Feem ntau I2C cov cuab yeej tuaj yeem sib txuas lus ntawm 100kHz lossis 400kHz

* I²C yog qhov tsim nyog rau cov khoom siv sab nraud qhov yooj yim thiab tus nqi tsim khoom qis yog qhov tseem ceeb dua li nrawm

* Paub zoo thiab siv dav raws tu qauv

QHOV TSEEB

* Cov ntaub ntawv hloov pauv qeeb dua li SPI

* Qhov loj ntawm cov ntaub ntawv thav duab yog txwv rau 8 khoom

* Cov cuab yeej nyuaj dua xav tau los siv dua li SPI thev naus laus zis

Pom zoo: