Агуулгын хүснэгт:
- Алхам 1: Тоног төхөөрөмжийн шаардлага
- Алхам 2: Хамрах сэдвүүд
- Алхам 3: I2C автобусны үндэс
- Алхам 4: TCA9548A I2C мултиплекс модуль
- Алхам 5:
- Алхам 6: Мастер өгөгдлийг хэрхэн илгээх, хүлээн авах
- Алхам 7: Код
- Алхам 8: I2C сканнер
- Алхам 9: Утас ба демо
- Алхам 10: Давуу болон сул талууд
- Алхам 11: Баярлалаа
Видео: TCA9548A I2C Multiplexer Module - Arduino болон NodeMCU -тэй: 11 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Мэдрэгч тогтмол эсвэл ижил I2C хаягтай болохыг ойлгохын тулд та хоёр, гурав ба түүнээс дээш I2C мэдрэгчийг Arduino руу залгах шаардлагатай болсон уу? Түүнээс гадна, та нэг SDA/SCL зүү дээр ижил хаягтай хоёр төхөөрөмжтэй байж болохгүй!
Тэгэхээр, таны сонголтууд юу вэ? Бүгдийг нэг автобусанд өөр хоорондоо ярихын тулд бүгдийг TCA9548A 1-ээс 8 хүртэлх I2C мультиплексор дээр тавь! TCA9548A Breakout нь ижил хаягтай олон I2C төхөөрөмжүүдтэй харилцах боломжийг олгодог бөгөөд тэдгээртэй харьцахад хялбар болгодог.
Алхам 1: Тоног төхөөрөмжийн шаардлага
Энэхүү гарын авлагын хувьд бидэнд хэрэгтэй болно:
- Талхны самбар
- TCA9548A I2C мультиплексор
- Arduino Uno/Nano бол юу ч хамаагүй
- NodeMCU
- Цөөн тооны 0.91 ба 0.96 I2C OLED дэлгэцүүд
- холбогч кабель ба
- кодыг оруулах USB кабель
Алхам 2: Хамрах сэдвүүд
Бид хэлэлцүүлгээ I2C технологийн үндсийг ойлгохоос эхлэх болно
Дараа нь бид TCA9548A мультиплексор болон мастер ба боол I2C технологийг ашиглан өгөгдлийг хэрхэн илгээж, хүлээж авах талаар олж мэдэх болно. Дараа нь Arduino болон NodeMCU -ийг ашиглан мультиплексорыг хэрхэн яаж програмчлах, ашиглах боломжтой болохыг олж мэдэх болно. 8 I2C OLED дэлгэц ашиглан демо хийж, эцэст нь бид TCA9548A Multiplexer -ийн давуу болон сул талуудын талаар ярилцаж, хичээлээ дуусгах болно.
Алхам 3: I2C автобусны үндэс
I-квадрат-C (I²C) эсвэл I2C гэж дууддаг интеграцчилсан хэлхээ нь олон процессор ба мэдрэгч хоорондын холболтод ашиглагддаг хоёр утастай автобусны технологи юм.
Хоёр утас нь:
* SDA - Цуваа өгөгдөл (өгөгдлийн шугам) ба
* SCL - Цуваа цаг (цагийн шугам)
Эдгээр хоёр шугам хоёулаа "синхрон", хоёр чиглэлтэй, "нээлттэй ус зайлуулах" бөгөөд "резистороор татагдсан" гэдгийг санаарай.
I2C автобусны технологийг анх 80 -аад оны эхээр Philips Semiconductors зохион бүтээсэн бөгөөд нэг хэлхээний самбар дээр байрладаг бүрэлдэхүүн хэсгүүдийн хооронд хялбар холбоо тогтоох боломжийг олгодог.
I2C -ийн тусламжтайгаар та олон боолыг нэг мастертай холбож болно (SPI гэх мэт) эсвэл дан эсвэл олон боолыг хянадаг олон мастертай болно. Эзэн ба боол хоёулаа өгөгдөл дамжуулах, хүлээн авах боломжтой. Тиймээс I2C автобус дээрх төхөөрөмж эдгээр дөрвөн төлөвийн аль нэгэнд байж болно.
* Мастер дамжуулах - мастер зангилаа нь боол руу өгөгдөл илгээж байна* Мастер хүлээн авах - мастер зангилаа боолоос мэдээлэл хүлээн авч байна
* Боол дамжуулах - боолын зангилаа өгөгдлийг мастер руу илгээж байна
* Боол хүлээн авах - боолын зангилаа нь мастераас мэдээлэл хүлээн авч байна
I2C бол "богино зайн" цуваа холбооны протокол "тул өгөгдлийг нэг утас эсвэл SDA шугамын дагуу" битээр "дамжуулдаг. Битийн гаралт нь эзэн ба боолын хооронд "хуваалцсан" цагийн дохиогоор битийн дээж авахтай синхрончлогддог. Цагийн дохиог үргэлж мастер хянадаг. Мастер цагийг бий болгож, боолуудтай харилцах харилцааг эхлүүлдэг.
Тиймээс үүнийг дүгнэж үзвэл>
Ашигласан утаснуудын тоо: 2
Синхрон эсвэл асинхрон: Синхрон
Цуваа эсвэл зэрэгцээ: Цуваа
Цагийн дохиог хянадаг: Мастер зангилаа
Ашигласан хүчдэл: +5 В эсвэл +3.3 В.
Магистрын дээд тоо: Хязгааргүй
Боолуудын хамгийн их тоо: 1008
Хамгийн дээд хурд: Стандарт горим = 100kbps
Хурдан горим = 400kbps
Өндөр хурдны горим = 3.4 Mbps
Хэт хурдан горим = 5 Mbps
Алхам 4: TCA9548A I2C мултиплекс модуль
TCA9548A бол найман суваг (хоёр чиглэлтэй) I2C мультиплексор бөгөөд найман тусдаа I2C төхөөрөмжийг нэг хост I2C автобусаар удирдах боломжийг олгодог. Та зүгээр л I2C мэдрэгчийг SCn / SDn олон талт автобусанд холбох хэрэгтэй. Жишээлбэл, хэрэв програмд найман ижил OLED дэлгэц шаардлагатай бол дэлгэц бүрийн нэгийг эдгээр суваг бүрт холбож болно: 0-7.
Multiplexer нь микроконтроллерийн VIN, GND, SDA, SCL шугамтай холбогддог. Таслах самбар нь 1.65V -аас 5.5V хүртэлх VIN -ийг хүлээн авдаг. SDA ба SCL оролтын шугамын аль аль нь VCC-т 10K татах эсэргүүцэлээр холбогддог (Татах эсэргүүцлийн хэмжээг I2C шугам дээрх багтаамжийн хэмжээгээр тодорхойлно). Мультиплексор нь ердийн (100 кГц) болон хурдан (400 кГц) 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 хаягаар холбож, ижил 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: Код
Одоо Int код нь "Wire" номын санг оруулахаас гадна мултиплексоруудын хаягийг тодорхойлохоос эхэлье.
#"Wire.h" -ийг оруулна уу
#"U8glib.h" оруулна уу
#MUX_Address 0x70 // TCA9548A Encoders хаягийг тодорхойлох
Дараа нь бид холбоо барихыг хүсч буй портоо сонгож, энэ функцийг ашиглан өгөгдлийг илгээх хэрэгтэй.
хүчингүй SelectI2CChannels (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 сканнер' кодыг ажиллуулж төхөөрөмжийнхөө зургаан өнцөгт хаягийг олох боломжтой. Arduino -д ачаалах үед ноорог нь хариу өгөх хаягийг харуулсан I2C сүлжээг сканнердах болно.
Алхам 9: Утас ба демо
Утас:
Мультиплексорыг NodeMCU самбарт холбож эхэлье. Холбох:
VIN - 5V (эсвэл 3.3V)
GND газардуулав
SDA -аас D2 ба
SCL -ээс D1 зүү
Arduino самбарыг холбохын тулд:
VIN - 5V (эсвэл 3.3V)
GND газардуулав
SDA -аас A4 ба
SCL -ээс A5 хүртэлх зүү
MUX-ийг микроконтроллерт холбосны дараа та мэдрэгчийг SCn / SDn хосоор холбох хэрэгтэй.
Одоо би 8 OLED дэлгэцийг TCA9548A Multiplexer -тэй холбосон энэхүү хурдан демог үзье. Эдгээр дэлгэцүүд нь I2C холболтыг ашигладаг тул Arduino -той ердөө 2 тээглүүр ашиглан харилцдаг.
Алхам 10: Давуу болон сул талууд
ДАВУУ ТАЛ
* Харилцаа холбоо нь зөвхөн хоёр автобусны шугам шаарддаг (утас)
* Бүх бүрэлдэхүүн хэсгүүдийн хооронд энгийн мастер/боолын харилцаа байдаг
* RS232 гэх мэт дамжуулах хурдны хатуу шаардлага байхгүй, мастер нь автобусны цаг гаргадаг
* Техник хангамж нь UART -ээс бага төвөгтэй байдаг
* Олон эзэн, олон боолыг дэмждэг
* ACK/NACK бит нь фрейм бүрийг амжилттай дамжуулж байгааг баталгаажуулдаг
* I2C бол арбитрын болон мөргөлдөөнийг илрүүлэх үйлчилгээ үзүүлдэг "жинхэнэ олон мастер автобус" юм
* Автобусанд холбогдсон төхөөрөмж бүр өвөрмөц хаягаар програм хангамжаар хаягдах боломжтой
* Ихэнх I2C төхөөрөмжүүд нь 100 кГц эсвэл 400 кГц давтамжтайгаар харилцах боломжтой
* I²C нь энгийн, хямд өртөг нь хурднаас илүү чухал ач холбогдолтой төхөөрөмжүүдэд тохиромжтой
* Сайн мэддэг, өргөн хэрэглэгддэг протокол
ДУТАЙ ТАЛ
* SPI -ээс өгөгдөл дамжуулах хурд удаан байна
* Өгөгдлийн хүрээний хэмжээ 8 битээр хязгаарлагддаг
* SPI технологиос илүү хэрэгжүүлэхэд илүү төвөгтэй тоног төхөөрөмж хэрэгтэй
Зөвлөмж болгож буй:
NodeMCU Lua MicroPython -ийн температур ба чийгшлийн бүртгэл, Wifi болон гар утасны статистик бүхий 6 долларын хямд самбар: 4 алхам
NodeMCU Lua MicroPython -ийн температур ба чийгшлийн бүртгэл, Wifi болон гар утасны статистик бүхий 6 долларын хямд самбар: Энэ бол үндсэндээ үүлэрхэг цаг агаарын станц бөгөөд та утсан дээрх өгөгдлөө шалгах эсвэл зарим утсыг шууд дэлгэц болгон ашиглах боломжтой. , өрөөнд, хүлэмж, лаборатори, хөргөлтийн өрөө эсвэл бусад газарт дуусгах боломжтой
Би Nodemcu, L298N мотор хөтөч болон бусад олон зүйлийг ашиглан хуучин CD дискийг Wifi робот болгон хийсэн. 5 алхам
Би Nodemcu, L298N моторт хөтөч болон бусад олон зүйлийг ашиглан Wifi робот руу хуучин CD диск хийсэн. VX Robotics & Электроникууд одоо байгаа
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ болон RFID дээр суурилсан ирцийн систем: 5 алхам
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ, RFID дээр суурилсан ирцийн систем: Энэ төслийн видео
NodeMCU болон IOT Thingspeak ашиглан агаарын хяналтын систем: 4 алхам
NodeMCU ба IOT Thingspeak ашиглан агаарын хяналтын систем: ThingSpeak нь Тоног төхөөрөмжийн төхөөрөмжүүд болон мэдрэгчүүдээс өгөгдлийг хадгалах, татаж авах нээлттэй эх сурвалжтай IoT програм ба API юм. Энэ нь интернет эсвэл LAN -ээр дамжуулан HTTP протоколыг ашигладаг. MATLAB аналитикийг шинжлэх, дүрслэн харуулах зорилгоор оруулсан болно
ATtiny болон ATmega -д зориулсан I2C автобус: 8 алхам
ATtiny болон ATmega -д зориулсан I2C автобус: Би Atmel AVR микроконтроллерт дуртай! Энэхүү зааварт тайлбарласан Гетто хөгжүүлэх системийг бий болгосноос хойш би AVR ATtiny2313 болон ATmega168 -ийг туршиж үзээд зугаацаж байсангүй. Би бүр Instr бичих хүртэл явсан