فهرست مطالب:

TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU: 11 Step
TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU: 11 Step

تصویری: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU: 11 Step

تصویری: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU: 11 Step
تصویری: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU 2024, ژوئن
Anonim
Image
Image

آیا تا به حال در موقعیتی قرار گرفته اید که مجبور شوید دو ، سه یا چند سنسور I2C را به آردوینو خود متصل کنید تا متوجه شوید که سنسورها دارای آدرس I2C ثابت یا یکسان هستند. علاوه بر این ، شما نمی توانید دو دستگاه با آدرس یکسان در پین های SDA/SCL یکسان داشته باشید!

بنابراین گزینه های شما چه هستند؟ همه آنها را روی چندضلعی TCA9548A 1 تا 8 I2C قرار دهید تا همه آنها در یک اتوبوس با یکدیگر صحبت کنند! TCA9548A Breakout امکان برقراری ارتباط با چندین دستگاه I2C که آدرس آنها یکسان است را برای شما آسان می کند.

مرحله 1: الزامات سخت افزاری

موضوعات تحت پوشش
موضوعات تحت پوشش

برای این آموزش به موارد زیر نیاز داریم:

- تخته نان

- چند منظوره TCA9548A I2C

- Arduino Uno/Nano هر آنچه که مفید است

- NodeMCU

- چند صفحه نمایش OLED 0.91 و 0.96 I2C

- کابل های جامپر ، و

- کابل USB برای بارگذاری کد

مرحله 2: موضوعات تحت پوشش

ما بحث خود را با درک اصول اولیه فناوری I2C آغاز می کنیم

سپس ما در مورد TCA9548A Multiplexer و نحوه ارسال و دریافت داده های master و slave با استفاده از فناوری I2C آشنا می شویم و سپس نحوه برنامه نویسی و استفاده از مالتی پلکسر در پروژه خود را با استفاده از Arduino و NodeMCU خواهیم آموخت ، سپس سریع به شما نشان خواهم داد. نسخه نمایشی با استفاده از 8 صفحه نمایش OLED I2C و در نهایت ما آموزش را با بحث در مورد مزایا و معایب TCA9548A Multiplexer به پایان می بریم

مرحله 3: اصول اولیه گذرگاه I2C

اصول اولیه I2C Bus
اصول اولیه I2C Bus
اصول اولیه I2C Bus
اصول اولیه I2C Bus
اصول اولیه I2C Bus
اصول اولیه I2C Bus

مدار مجتمع I-squared-C (I²C) یا I2C یک فناوری دو سیمه است (در واقع 4 سیم است زیرا شما همچنین به VCC و Ground احتیاج دارید) که برای ارتباط بین چندین پردازنده و حسگر استفاده می شود.

این دو سیم عبارتند از:

* SDA - داده های سریال (خط داده) و

* SCL - ساعت سریال (خط ساعت)

به یاد داشته باشید ، هر دو خط "همزمان" ، "دو طرفه" ، "تخلیه باز" هستند و "با مقاومت" کشیده شده اند.

فناوری گذرگاه I2C در ابتدا توسط Philips Semiconductors در اوایل دهه 80 طراحی شد تا امکان ارتباط آسان بین اجزای روی یک برد مدار را فراهم کند.

با I2C ، می توانید چندین برده را به یک master واحد متصل کنید (مانند SPI) یا می توانید چندین master را کنترل کنید که تک یا چند برد را کنترل می کنند. هر دو ارباب و بردگان می توانند داده ها را ارسال و دریافت کنند. بنابراین ، یک دستگاه در گذرگاه I2C می تواند در یکی از این چهار حالت باشد:

* ارسال اصلی - گره اصلی در حال ارسال داده به یک برده* دریافت اصلی - گره اصلی دریافت داده از یک برده است

* انتقال برده - گره برده داده ها را به اصلی ارسال می کند

* دریافت برده - گره برده داده ها را از استاد دریافت می کند

I2C یک "پروتکل ارتباطی" کوتاه "است ، بنابراین داده ها" بیت به بیت "در امتداد سیم یا خط SDA منتقل می شوند. خروجی بیت ها با نمونه برداری از بیت ها توسط سیگنال ساعت "مشترک" بین استاد و برده همزمان می شود. سیگنال ساعت همیشه توسط استاد کنترل می شود. Master ساعت را تولید می کند و ارتباط با برده ها را آغاز می کند.

بنابراین ، برای خلاصه کردن آن>

تعداد سیم های استفاده شده: 2 عدد

همزمان یا ناهمزمان: همزمان

سریال یا موازی: سریال

سیگنال ساعت توسط: Master Node کنترل می شود

ولتاژهای مورد استفاده: +5 ولت یا +3.3 ولت

حداکثر تعداد کارشناسی ارشد: نامحدود

حداکثر تعداد برده: 1008

حداکثر سرعت: حالت استاندارد = 100 کیلوبیت بر ثانیه

حالت سریع = 400kbps

حالت سرعت بالا = 3.4 مگابیت بر ثانیه

حالت فوق سریع = 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.

Multiplexer به خطوط VIN ، GND ، SDA و SCL میکرو کنترلر متصل می شود. برد شکست VIN را از 1.65 ولت تا 5.5 ولت می پذیرد. هر دو خط ورودی SDA و SCL از طریق یک مقاومت کششی 10K به VCC متصل می شوند (اندازه مقاومت کشش بر اساس میزان ظرفیت در خطوط I2C تعیین می شود). مالتی پلکسر از پروتکل های I2C معمولی (100 کیلوهرتز) و سریع (400 کیلوهرتز) پشتیبانی می کند. همه پین های ورودی/خروجی TCA9548A 5 ولت تحمل دارند و همچنین می توانند برای ترجمه از ولتاژ بالا به پایین یا کم به زیاد استفاده شوند.

ایده خوبی است که مقاومتهای کششی را روی همه کانالهای TCA9548A قرار دهید ، حتی اگر ولتاژها یکسان باشد. دلیل این امر سوئیچ NMOS داخلی است. ولتاژ بالا را به خوبی منتقل نمی کند ، از سوی دیگر ولتاژهای پایین را به خوبی منتقل می کند. TCA9548A همچنین ممکن است برای ترجمه ولتاژ استفاده شود ، و اجازه می دهد تا از ولتاژهای مختلف گذرگاه در هر جفت SCn/SDn استفاده شود به طوری که قطعات 1.8-V ، 2.5-V ، یا 3.3-V می توانند با قطعات 5V ارتباط برقرار کنند. این امر با استفاده از مقاومتهای کششی خارجی برای رساندن گذرگاه به ولتاژ مورد نظر برای اصلی و هر کانال برده به دست می آید.

اگر میکروکنترلر یک ناسازگاری گذرگاه یا سایر عملکردهای نامناسب را تشخیص دهد ، 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. اگر استاد بخواهد داده ها را از یک برده دریافت یا بخواند (READS):

-گیرنده اصلی یک شرط START به دنبال آدرس آدرس برده گیرنده و R/W را روی 1 تنظیم می کند.

-گیرنده اصلی ثبت درخواست شده را برای خواندن به برده فرستنده ارسال می کند

-گیرنده اصلی داده ها را از فرستنده برده دریافت می کند

- پس از دریافت همه بایت ها ، Master سیگنال NACK را به برده می فرستد تا ارتباطات را متوقف کرده و اتوبوس را رها کند

- گیرنده اصلی انتقال را با شرط STOP متوقف می کند

اگر هر دو خط SDA و SCL پس از یک وضعیت STOP بالا باشند ، یک اتوبوس بیکار تلقی می شود.

مرحله 7: کد

کد
کد

اکنون ، کد Int اجازه می دهد تا با قرار دادن کتابخانه "Wire" و با تعیین آدرس چند پلکسر شروع کنید.

#شامل "Wire.h"

#شامل "U8glib.h"

#آدرس MUX_Address 0x70 // آدرس رمزگذار TCA9548A را تعریف کنید

سپس باید پورت مورد نظر خود را انتخاب کرده و داده های مربوط به آن را با استفاده از این تابع ارسال کنیم:

void 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

در صورتی که از آدرس دستگاه سپر I2C خود مطمئن نیستید ، سپس کد ضمیمه 'I2C Scanner' را اجرا کنید تا آدرس hex دستگاه خود را بیابید. هنگامی که در Arduino بارگیری می شود ، این طرح شبکه I2C را اسکن می کند و آدرس هایی را که پاسخ می دهند نشان می دهد.

مرحله 9: سیم کشی و نمایشی

سیم کشی و نمایشی
سیم کشی و نمایشی
سیم کشی و نمایشی
سیم کشی و نمایشی

سیم کشی:

اجازه دهید با اتصال مالتی پلکسر به برد NodeMCU شروع کنیم. اتصال:

VIN تا 5V (یا 3.3V)

GND به زمین

SDA تا D2 و

پین های SCL تا D1 به ترتیب

برای برد برد آردوینو متصل شوید:

VIN تا 5V (یا 3.3V)

GND به زمین

SDA تا A4 و

به ترتیب پین های SCL تا A5

هنگامی که MUX به میکرو کنترلر متصل می شود ، فقط باید سنسورها را به جفت های SCn / SDn وصل کنید.

اکنون ، اجازه دهید این نسخه نمایشی سریع را بررسی کنم که در آن 8 صفحه نمایش OLED را به TCA9548A Multiplexer متصل کرده ام. از آنجا که این نمایشگرها از ارتباط I2C استفاده می کنند ، تنها با 2 پین با آردوینو ارتباط برقرار می کنند.

مرحله 10: مزایا و معایب

مزایا و معایب
مزایا و معایب

مزایای

* ارتباطات تنها به دو خط اتوبوس (سیم) نیاز دارد

* یک رابطه ساده بین استاد و برده بین همه اجزا وجود دارد

* بدون الزامات شدید نرخ باود مانند RS232 ، استاد ساعت اتوبوس تولید می کند

* سخت افزار نسبت به UART ها پیچیدگی کمتری دارد

* پشتیبانی از چندین استاد و برده های متعدد

* بیت ACK/NACK تأیید می کند که هر فریم با موفقیت منتقل شده است

* I2C یک "گذرگاه چند استاد اصلی" است که داوری و تشخیص برخورد را ارائه می دهد

* هر دستگاهی که به گذرگاه متصل است با یک آدرس منحصر به فرد قابل نرم افزار است

* اکثر دستگاه های I2C می توانند با سرعت 100kHz یا 400kHz ارتباط برقرار کنند

* I²C برای لوازم جانبی مناسب است که سادگی و هزینه تولید پایین از سرعت مهمتر است

* پروتکل معروف و پرکاربرد

معایب

* سرعت انتقال داده ها کندتر از SPI است

* اندازه فریم داده محدود به 8 بیت است

* سخت افزار پیچیده تری نسبت به فناوری SPI مورد نیاز است

توصیه شده: