فهرست مطالب:

معرفی I2C با ماژول های Zio و Qwiic: 6 مرحله
معرفی I2C با ماژول های Zio و Qwiic: 6 مرحله

تصویری: معرفی I2C با ماژول های Zio و Qwiic: 6 مرحله

تصویری: معرفی I2C با ماژول های Zio و Qwiic: 6 مرحله
تصویری: معرفی پرتوکل I2C وSPI در تحلیل مدارات و نقشه خوانی موبایل (عیب یابی حرفه ای 2024, نوامبر
Anonim
معرفی I2C با ماژول های زیو و Qwiic
معرفی I2C با ماژول های زیو و Qwiic

رابین شارما گفت: "پیشرفتهای روزانه کوچک در طول زمان منجر به نتایج خیره کننده می شود". ممکن است به این فکر کنید که "اوه ، یک پست دیگر I2C؟". خوب ، مطمئناً هزاران اطلاعات در مورد I2C وجود دارد. اما با ما همراه باشید ، این فقط یک مقاله دیگر I2C نیست. قطعاً Qwiic Connect System و Zio بردهای بریکت محیطی تغییر دهندگان بازی I²C هستند!

معرفی

اگر پروژه های الکترونیکی می سازید و کارهای خارق العاده ای انجام می دهید ، ممکن است متوجه شده باشید که با بزرگتر شدن پروژه های شما ، تخته نان شما شبیه یک مار مار می شود (کمی آشفته است؟).

علاوه بر این ، اگر چندین پروژه در حال انجام دارید ، زمان زیادی را صرف تغییر سیم از پروژه به پروژه می کنید.

ما سازنده هستیم ، بنابراین مبارزه را درک می کنیم. جدیدترین مشارکت ما در جامعه OHS یک سیستم نمونه سازی مدولار به نام ZIO است که از سیستم اتصال Qwiic استفاده می کند. Qwiic یک راه بسیار مناسب برای ارتباط برد مدار قابل برنامه ریزی با حسگرها ، محرک ها و بردهای شکست از طریق I²C است.

مرحله 1: I²C چیست و چرا آن را دوست داریم

I²C چیست و چرا ما آن را دوست داریم
I²C چیست و چرا ما آن را دوست داریم

I²C پرکاربردترین گذرگاه چند استاده است ، به این معنی که تراشه های مختلف را می توان به یک گذرگاه متصل کرد. از آن در بسیاری از برنامه های کاربردی بین یک master و slave یا چندین دستگاه master و slave استفاده می شود. از میکروکنترلرها ، تلفن های هوشمند ، برنامه های صنعتی ، به ویژه برای دستگاه های ویدئویی مانند مانیتور کامپیوتر. می توان آن را به راحتی در بسیاری از طرح های الکترونیکی (و اخیراً حتی با اتصال Qwiic آسان تر) پیاده سازی کرد.

اگر مجبور باشیم I²C را در دو کلمه توصیف کنیم ، احتمالاً از سادگی و انعطاف پذیری استفاده می کنیم.

یکی از بزرگترین مزایای I²C نسبت به سایر پروتکل های ارتباطی این است که یک رابط دو سیم است یعنی تنها به دو سیم سیگنال SDA (خط داده سریال) و SCL (خط ساعت سریال) نیاز دارد. این ممکن است سریعترین پروتکل نباشد ، اما به دلیل انعطاف پذیری بسیار زیاد شناخته شده است ، که باعث انعطاف پذیری در ولتاژ گذرگاه می شود.

یکی دیگر از ویژگیهای قابل توجه که این اتوبوس را جذاب می کند ارتباط بین ارباب و برده است. چندین دستگاه را می توان به یک گذرگاه متصل کرد و نیازی به تغییر سیم بین دستگاه ها نیست زیرا هر دستگاه آدرس منحصر به فردی دارد (دستگاه دستگاه را برای برقراری ارتباط انتخاب می کند).

مرحله 2: بیایید نگاهی دقیق تر بیندازیم

بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم
بیایید نگاه نزدیک تری داشته باشیم

بنابراین ، I²C چگونه کار می کند؟ پیشتر اشاره کردیم که یکی از مهمترین ویژگی ها ، ولتاژ است ، این امکان وجود دارد زیرا I²C از یک جمع کننده باز (همچنین به عنوان تخلیه باز معروف است) برای هر دو خط ارتباطی SDA و SCL استفاده می کند.

SCL سیگنال ساعت است ، انتقال داده را بین دستگاههای گذرگاه I²C همزمان می کند و توسط استاد ایجاد می شود. در حالی که SDA داده ها را برای ارسال یا دریافت از حسگرها یا سایر دستگاه های متصل به گذر حمل می کند.

خروجی سیگنال به زمین متصل است ، به این معنی که هر دستگاه به عنوان پایین تحمیل می شود. برای بازیابی سیگنال در حالت بالا ، هر دو خط از طریق مقاومت کششی به یک ولتاژ تغذیه مثبت متصل می شوند تا خاتمه یابد.

با استفاده از ماژول های ZIO که شما را تحت پوشش قرار دادیم ، همه تخته های شکست ما مقاومت کششی لازم را در خود جای داده اند.

I²C یک پروتکل پیام را دنبال می کند تا بتواند استاد را با دستگاه های برده ارتباط برقرار کند. دو خط (SCL و SDA) در همه برده های I²C مشترک هستند ، همه بردگان در اتوبوس به پیام گوش می دهند.

پروتکل پیام از فرمت نشان داده شده در تصویر پیوست پیروی می کند:

ممکن است در نگاه اول پیچیده به نظر برسد ، اما ما کمی خبر خوب داریم. هنگام استفاده از Arduino IDE ، کتابخانه Wire.h وجود دارد ، تا همه تنظیمات مربوط به پروتکل پیام I²C ساده شود.

شرایط شروع زمانی ایجاد می شود که خط داده (SDA) پایین بیاید در حالی که خط ساعت (SCL) هنوز بالا باشد. هنگام راه اندازی پروژه در رابط کاربری آردوینو ، واقعاً نیازی به نگرانی در مورد ایجاد شرط شروع نداریم ، با یک عملکرد خاص (Wire.beginTransmission (slaveAddress)) آغاز می شود.

علاوه بر این ، این تابع همچنین انتقال را با آدرس برده خاص آغاز می کند. برای انتخاب برده برای برقراری ارتباط در گذرگاه مشترک ، استاد آدرس را به برده منتقل می کند تا ارتباط برقرار کند. پس از تنظیم آدرس برای برقراری ارتباط با برده مربوطه ، بسته به حالت انتخاب شده ، پیام پیام با یک بیت خواندن یا نوشتن همراه می شود.

Salve پاسخی با تأیید (ACK یا NACK) می دهد و سایر دستگاه های برده در اتوبوس بقیه داده ها را تا زمان کامل شدن پیام و آزاد شدن گذرگاه تخفیف می دهند. به دنبال ACK ، دنباله ای از یک آدرس آدرس داخلی برده ها انتقال را ادامه می دهد.

هنگامی که داده ها ارسال می شوند ، پیام انتقال با شرط توقف پایان می یابد. برای پایان دادن به انتقال ، خط داده به بالا تغییر می کند و خط ساعت بالا می ماند.

مرحله 3: I²C و ZIO

I²C و ZIO
I²C و ZIO

ما به این نتیجه رسیدیم که بهتر است تمام اطلاعات بالا را در مکالمه بین یک استاد (معروف به Zuino ، میکرو ما) و برده ها (مانند تخته های شکست ZIO) برنامه ریزی کنم.

در این مثال اساسی ما از سنسور فاصله ZIO TOF و صفحه نمایش ZIO OLED استفاده می کنیم. TOF اطلاعات فاصله را می دهد در حالی که ZIO Oled داده ها را نمایش می دهد. اجزا و دستگاه های مورد استفاده:

  • ZUINO M UNO - استاد
  • صفحه نمایش ZIO OLED - Slave_01
  • سنسور فاصله ZIO TOF - Slave_02
  • کابل Qwiic - اتصال آسان برای دستگاه های I²C

در اینجا نحوه اتصال تخته ها به یکدیگر با استفاده از Qwiic ، بدون نیاز به تخته نان ، کابلهای اضافی وصل شده یا پین های ZUINO بسیار آسان است. سریال سریال ساعت و داده ZUINO با استفاده از اتصال Qwiic به طور خودکار به سنسور فاصله و OLED متصل می شود. دو کابل دیگر 3V3 و GND هستند.

در ابتدا ، اجازه دهید نگاهی به اطلاعات مورد نیاز بیندازیم ، برای برقراری ارتباط بین استاد و برده ها ، باید آدرسهای منحصر به فرد را بدانیم.

دستگاه: سنسور فاصله ZIO

  • شماره قسمت: RFD77402
  • آدرس I2C: 0x4C
  • پیوند داده

دستگاه: صفحه نمایش ZIO OLED

  • شماره قسمت: SSD1306
  • آدرس: 0x3C
  • پیوند داده

برای یافتن آدرس منحصر به فرد برای دستگاه های برده ، برگه داده ارائه شده را باز کنید. برای سنسور فاصله آدرس در قسمت رابط ماژول ارائه شده است. هر سنسور یا م componentلفه دارای یک برگه داده متفاوت با اطلاعات مختلف ارائه شده است. گاهی اوقات یافتن آن در یک برگه اطلاعات 30 صفحه ای می تواند چالش برانگیز باشد (نکته: ابزار یافتن را در نمایشگر PDF باز کنید و "آدرس" یا "شناسه دستگاه" را برای جستجوی سریع تایپ کنید).

اکنون که آدرس منحصر به فرد برای هر دستگاه مشخص است ، برای خواندن/ نوشتن داده ها ، آدرس ثبت داخلی باید مشخص شود (همچنین از برگه داده). با نگاهی به برگه اطلاعات سنسور فاصله ZIO ، آدرس برای دریافت فاصله با 0x7FF مطابقت دارد.

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

مرحله بعدی ، کد را تحویل دهید. ZUINO M UNO با Arduino IDE سازگار است ، که راه اندازی آن را بسیار ساده تر می کند. کتابخانه های مورد نیاز برای این پروژه به شرح زیر است:

  • سیم. ساعت
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h یک کتابخانه آردوینو است ، دو کتابخانه Adafruit برای OLED و آخرین آنها برای سنسور فاصله استفاده می شود. این آموزش نحوه اتصال کتابخانه های *.zip به Arduino IDE را بررسی کنید.

با نگاهی به کد ، ابتدا باید کتابخانه ها و همچنین آدرس OLED اعلام شوند.

در راه اندازی () انتقال شروع می شود و متن برای عملکرد سنسور فاصله نمایش داده می شود.

حلقه () فاصله را اندازه گیری می کند و OLED آن را چاپ می کند.

نمونه کد منبع را در پیوند github بررسی کنید.

استفاده از هر دو تخته شکست به تمام معنا بسیار آسان است. از نظر سخت افزاری ، کانکتور Qwiic تنظیم سخت افزار را سریعتر و بسیار کثیف تر از داشتن تخته نان و سیم های بلوز می کند. و برای سیستم عامل ، استفاده از کتابخانه های مربوطه برای ارتباط I2C ، سنسور و صفحه نمایش کد را بسیار ساده تر می کند.

مرحله 4: حداکثر طول کابل چقدر است؟

حداکثر طول بستگی به مقاومت های کششی مورد استفاده برای SDA و SCL و ظرفیت کابل دارد. مقاومتها همچنین سرعت گذرگاه را تعیین می کنند ، هرچه سرعت گذرگاه کمتر باشد ، حد کابل طولانی تر می شود. ظرفیت کابل تعداد دستگاه های موجود در گذرگاه و همچنین طول کابل را محدود می کند. کاربردهای معمولی طول سیم را تا 2.5-3.5 متر (9-12 فوت) محدود می کند ، اما بسته به کابل مورد استفاده ، تغییراتی وجود دارد. برای مرجع ، حداکثر طول در برنامه های I2C با استفاده از کابل های محافظ 22 جفت پیچ خورده AWG حدود 1 متر (3 فوت) در 100 kbaund ، 10 متر (30 فوت) در 10kbaud است.

برخی از سایتها مانند mogami یا WolframAlpha وجود دارند که به شما امکان می دهد طول کابل را تخمین بزنید.

مرحله 5: چگونه می توان چندین دستگاه را در یک گذرگاه متصل کرد؟

چگونه می توان چندین دستگاه را در یک گذرگاه متصل کرد؟
چگونه می توان چندین دستگاه را در یک گذرگاه متصل کرد؟
چگونه می توان چندین دستگاه را در یک گذرگاه متصل کرد؟
چگونه می توان چندین دستگاه را در یک گذرگاه متصل کرد؟

I2C یک گذرگاه سریال است که در آن همه دستگاه ها به یک گذرگاه مشترک متصل می شوند. با اتصال Qwiic می توان تخته های مختلف شکست را یکی پس از دیگری با استفاده از کانکتور Qwiic متصل کرد. هر برد حداقل 2 کانکتور Qwiic دارد.

ما تخته های مختلفی برای حل برخی از محدودیت های Qwiic و I2C ایجاد کردیم. برد آداپتور Zio Qwiic برای اتصال از طریق دستگاه های Qwiic بدون اتصال Qwiic ، با استفاده از کابل هدر مردانه Qwiic to breadboard استفاده می شود. این ترفند ساده امکانات نامحدودی ایجاد می کند.

برای اتصال دستگاه های مختلف در شبکه اتوبوس یا درخت ، با Zio Qwiic Hub آشنا شدیم.

نکته آخر اینکه Zio Qwiic MUX امکان اتصال دو یا چند دستگاه با استفاده از یک آدرس را فراهم می کند.

مرحله 6: خاتمه I2C چیست؟

I2C برای خاتمه مورد نیاز است ، بنابراین خط برای اضافه کردن سایر دستگاه ها رایگان است. این ممکن است کمی گیج کننده باشد ، زیرا اصطلاح خاتمه معمولاً برای توصیف مقاومتهای کششی گذرگاه (برای ارائه حالت پیش فرض ، در این حالت برای تغذیه جریان به مدار) استفاده می شود. برای بردهای Zuino ، مقدار مقاومت 4.7kΩ است.

اگر خاتمه حذف شود ، هیچ ارتباطی در اتوبوس وجود نخواهد داشت- استاد نمی تواند شرط شروع را ایجاد کند ، بنابراین پیام به برده ها منتقل نمی شود.

برای اطلاعات بیشتر و قابلیت های Zio جدیدترین محصولات Zio را بررسی کنید. هدف در این مقاله توضیح اصول ارتباط I²C و نحوه عملکرد آن با اتصال Zio و Qwiic است. با ما همراه باشید برای مطالب بیشتر.

توصیه شده: