پروتکل TWI در AVR

توسط | 24 آذر, 1398 | AVR, میکروکنترلر, وبلاگ | 10 دیدگاه ها

پروتکل-twi-avr

آموزش AVR یوبرد

شاهکار 8بیتی اتمل

آموزش های رایگان AVR

فیلم های آموزش AVR

آموزش خصوصی AVR

اخبار جدید یوبرد در اینستاگرام

پروتکل TWI در AVR یک واحد سخت افزاری شبیه پروتکل I2C است و تفاوت هایی با I2C دارد. TWI مخفف Two Wire Interface و به معنی رابط دو سیمه است. در این پروتکل ارتباطی که یک پروتکل Master-slaveی است، بین Master و Slaveها، دو خط وجود دارد. که یکی از آنها خط کلاک و دیگری خط داده است. TWI عملکردی بسیار مشابه با I2C استاندارد دارد. I2C ساخت شرکت فیلیپس است و یک علامت تجاری ثبت شده به نام فیلیپس است. بنابراین شرکت Atmel، نام TWI را به پروتکل ارتباطی خود داده است تا از مشکلات قانونی با فیلیپس جلوگیری کند. چند تفاوت TWI و I2C استاندارد، عبارتند از:

  • تعداد بیت های آدرس دهی Slave در TWI تنها 7 بیت است. اما در I2C استاندارد، آدرس دهی 10 بیتی نیز وجود دارد؛
  • Start byte که در TWI وجود ندارد؛
  • Slope control که در TWI وجود ندارد.

پروتکل TWI در میکروکنترلرهای AVR و پروتکل I2C در میکروکنترلرهای دیگر، از مهمترین پروتکل های ارتباطی محسوب می شوند. پروتکل TWI در AVR و پروتکل I2C در میکروکنترلرهای دیگر، مانند دیگر پروتکل ها، برای ارتباط میکروکنترلرها با یکدیگر و همچنین ارتباط میکروکنترلر با المان های جانبی به کار می روند. المان ها و ماژول های مهمی وجود دارند که ارتباط میکروکنترلر با آنها از طریق I2C و TWI است. در نوشتۀ پروتکل I2C در وبلاگ یوبرد به تاریخچۀ I2C، ویژگی ها، کاربردها، اتصالات، سیگنال ها و قالب بندی دادۀ I2C و مطالب دیگری دربارۀ آن پرداخته ایم. در این نوشته به معرفی TWI در AVR می پردازیم و ویژگی ها و مشخصات پروتکل TWI در AVR را به طور کلی بیان می کنیم.

فیلم آموزش میکروکنترلرهای AVR مقدماتی

فیلم آموزش ARM STM32 مقدماتی

فیلم آموزش آردوینو مقدماتی

بلوک-دیاگرام-atmega128a

تصویر 1 – بلوک دیاگرام پروتکل TWI در ATmega128A

پروتکل TWI چیست؟

TWI که مخفف عبارت Two Wire Interface است، یک پروتکل ارتباطی دو سیمه در میکروکنترلرهای AVR است. این ارتباط دو سیمه به صورت یک واحد سخت افزاری در AVR پیاده شده است. TWI بسیار مشابه I2C در مد استاندارد است. به طوری که گاهی به پروتکل TWI در AVR، پروتکل I2C نیز گفته می شود. در پروتکل ارتباطی TWI، بین Master و Slaveها دو خط وجود دارد که یکی از آنها خط کلاک و دیگری خط داده است. خط کلاک، SCL و خط داده، SDA نام دارد. در این پروتکل ارتباطی، یک میکروکنترلر، Master است و میکروکنترلرها و المان های دیگر، Slave هستند. Master کنترل تبادل داده را بر عهده دارد و ارتباط، تنها بین Mater و Slaveهاست. یعنی Slaveها نمی توانند با یکدیگر تبادل داده کنند. Master شرایط Start و کلاک روی SCL را ایجاد و آدرس Slave را روی SDA ارسال می کند. Slaveی که آدرس آن روی SDA قرار گرفته است، پاسخی تحت عنوان Acknowledge روی خط قرار می دهد. سپس Master با هر کلاکی که روی خط SCL ایجاد می کند، بیت های داده را برای Slave(ها) ارسال و یا داده های ارسالی Slave را دریافت می کند. در نهایت، Master ارتباط را متوقف می کند. در TWI مانند I2C، چهار مد ارتباطی وجود دارد:

  • مد Master-transmitter: که Master داده ها را برای Slave(ها) ارسال می کند؛
  • مد Master-receiver: که Master داده ها را از یک Slave دریافت می کند؛
  • مد Slave-transmitter: که Slave داده ها را برای Master ارسال می کند؛
  • مد Slave-receiver: که Slave داده ها را از Master دریافت می کند.

در یک ارتباط TWI، از مدهای مذکور تنها دو مد به صورت همزمان وجود دارند. هرگاه Master در مد Master-transmitter (فرستنده) است، Slave در مد Slave-receiver (گیرنده) است. هرگاه Master در مد Master-receiver (گیرنده) است، Slave در مد Slave-transmitter (فرستنده) است.

فرمت-تبادل-master-slave

تصویر 2 – تبادل داده در پروتکل TWI در مدهای مختلف

اهمیت پروتکل ارتباطی TWI

همان اندازه که پروتکل ارتباطی I2C در دیگر میکروکنترلرها اهمیت دارد، پروتکل TWI در AVR نیز مهم است. اهمیت پروتکل های ارتباطی I2C و TWI از ویژگی ها و کاربردهای آنها نشأت می گیرد. در بسیاری از پروژه ها نیاز است المان های جانبی را راه اندازی و با آنها ارتباط برقرار کنیم. این امر مستلزم استفاده از پروتکل های ارتباطی بین میکروکنترلر و آن المان هاست. I2C و TWI از مهمترین پروتکل های ارتباطی برای راه اندازی انواع المان های دیجیتال هستند. المان هایی مثل ماژول های فرستنده و گیرنده، حافظه های جانبی، نمایشگرها، سنسورها، ADCها، DACها و … . همچنین ممکن است نیاز باشد بین دو میکروکنترلر، از ارتباط I2C و TWI استفاده شود. دو المان مهم نیز وجود دارند که در پروژه های مبتنی بر میکروکنترلرهای AVR بسیار پر استفاده هستند. در پروژه های مبتنی بر میکروکنترلرهای AVR که RTC ندارند، لازم است از RTC خارجی استفاده کنیم. اغلب اوقات نیز به کارگیری حافظۀ EEPROM خارجی در این پروژه ها امری ضروری است. از مشهورترین آی سی های RTC، آی سی DS1307 است که ارتباط با آن از طریق I2C یا TWI است. آی سی های EEPROMی نیز وجود دارند که ارتباط I2C و TWI را پشتیبانی می کنند. این دو المان می توانند در بسیاری از پروژه های مبتنی بر میکروکنترلرهای AVR استفاده شوند. همچنین در پروژه هایی لازم است از المان هایی استفاده کنیم که با TWI و I2C راه اندازی می شوند. که در این صورت راه اندازی و استفاده از پروتکل های ارتباطی TWI و I2C اهمیت پیدا می کنند.

rtc-eeprom-atmega64pin

تصویر 3 – آی سی های RTC و EEPROM روی برد توسعۀ AVR یوبرد

ویژگی های پروتکل TWI در AVR

در این بخش ویژگی ها و مشخصات کلی TWI را در میکروکنترلر ATmega128A از روی دیتاشیت بیان می کنیم. باقی مشخصات و ویژگی ها را به نوشتۀ پروتکل I2C ارجاع می دهیم. ویژگی های TWI در میکروکنترلرهای AVR به طور کلی عبارتند از:

  • TWI در AVR دارای پنج بخش کلی است. بخش پین های SDA و SCL، بخش تولید کنندۀ Bit rate، بخش Bus interface، بخش تطابق آدرس و بخش کنترلی؛
  • پروتکل ارتباطی TWI ساده و در عین حال قدرتمند و منعطف است؛
  • پشتیبانی از مد Master و Slave که میکروکنترلر AVR هم می تواند Master باشد و هم Slave؛
  • میکروکنترلر می تواند داده ها را هم ارسال کند و هم دریافت؛
  • قابلیت آدرس دهی 7 بیتی و امکان آدرس دهی تا 128 تا Slave؛
  • سرعت تبادل اطلاعات با فرکانس کلاک تا حداکثر 400 کیلوهرتز؛
  • درایورهای خروجی با Slew-rate محدود شده؛
  • مدار حذف نویز که Spikeهای روی خطوط باس را دفع می کند؛
  • قابلیت تنظیم آدرس در میکروکنترلری که قرار است Slave باشد؛
  • پشتیبانی از فراخوانی عمومی (General Call Address)؛
  • بیرون آمدن میکروکنترلر AVR از تمامی مدهای Sleep، در زمانی که Slave است و آدرس خودش را دریافت می کند؛
  • پشتیبانی از قابلیت Multi-master که در یک شبکه می توان چند Master داشت.

قابلیت-multi-master-arbitration

تصویر 4 – قابلیت Multi-master و وجود چند Master روی باس TWI

دیگر ویژگی های پروتکل TWI در AVR

TWI بسیار مشابه I2C استاندارد است. در این بخش برخی ویژگی ها و مشخصات دیگر  TWI را بیان می کنیم. این ویژگی ها و مشخصات را می توانید با جزئیات بیشتر در نوشتۀ پروتکل I2C وبلاگ یوبرد مطالعه کنید.

  • وجود مقاومت های Pull-up روی خطوط SDA و SCL؛
  • TWI و I2C هر دو پروتکل های ارتباطی سنکرون هستند؛
  • استفاده در فواصل کوتاه؛
  • پشتیبانی از مد Multi-master و وجود حکمیت (Arbitration)؛
  • انتقال داده 8 بیتی از Master به Slave و از Slave به Master با حداکثر سرعت 400 کیلوهرتز؛
  • وابسته بودن تعداد آی سی های متصل به شبکه، به ظرفیت خازنی باس؛
  • تطابق با آی سی های سازگار با I2C استاندارد؛
  • یکسان بودن اغلب کاربردهای I2C استاندارد و TWI؛
  • یکسان بودن سیگنال های TWI و I2C استاندارد و شرایط Start و Stopو Repeated start و Acknowledge و Not acknowledge یکسان با I2C استاندارد؛
  • قابلیت گسترش شبکۀ TWI با Hubها، Repeaterها، Extenderها، سوییچ ها و مالتی پلکسرها؛
  • قالب یکسان آدرس و داده در TWI و I2C استاندارد، به غیر از ویژگی آدرس دهی 10 بیتی. در TWI تنها آدرس دهی 7 بیتی وجود دارد؛
  • مدهای ارتباطی یکسان در TWI و I2C؛
  • نحوۀ یکسان تبادل داده در TWI و I2C؛
  • قابلیت Clock stretching که در I2C و در TWI وجود دارد.

ویژگی ها و مشخصات دیگری مانند مشخصات الکتریکی و زمانی پروتکل TWI در AVR وجود دارد. این ویژگی ها و مشخصات در دیتاشیت میکروکنترلرهای AVR و در بخش های مشخصات الکتریکی آنها آمده است. همچنین در پروتکل TWI در AVR و پروتکل I2C، حین ارتباط، وضعیت های مختلفی به وجود می آیند. که این وضعیت ها در AVR از رجیستر TWSR قابل خواندن هستند. این وضعیت ها مشابه وضعیت های پروتکل I2C هستند. مثلاً این وضعیت ها در  TWI میکروکنترلر ATmega128 مشابه وضعیت های I2C در میکروکنترلرهای LPC17xx است.

قالب-آدرس-داده

تصویر 5 – سیگنال های TWI در انتقال یک بایت داده

تنظیمات TWI در کدویژن

راه اندازی TWI در کدویژن به سادگی با تیک زدن گزینه هایی در کدویزارد قابل انجام است. کافی است از قسمت Two wire interface (شمارۀ 1)، تیک Two wire enable را بزنیم (2). در این صورت می توانیم میکروکنترلر را در یکی از مدهای Master یا Slave پیکربندی کنیم (3). هنگامی که مد Master انتخاب می شود، تنها لازم است فرکانس کلاک SCL را تعیین کنیم (4). زمانی که مد Slave را انتخاب می کنیم، می توانیم آدرسی به میکروکنترلر بدهیم (5). با تیک زدن گزینۀ Match any slave address، آدرس خاصی به میکروکنترلر تعلق نمی گیرد (6). و Master هر آدرسی را که روی باس TWI بفرستد، این Slave برای تبادل داده، Acknowledge می فرستد. دو بخش دیگر، اندازۀ بافرهایی هستند که داده های Slave در آنها قرار می گیرد (7). برای Slave هم بافر ارسال وجود دارد و هم بافر دریافت. پس از ایجاد کد با کدویزارد، در مد Master کتابخانۀ twi.h و توابع twi_master_init و twi_slave_init و twi_master_trans به برنامه اضافه می شود. برای مد Slave نیز علاوه بر موارد مذکور، توابع twi_rx_handler و twi_tx_handler به برنامه اضافه می شوند. در هر دو مد Master و Slave نیز پرچم کلی وقفه های میکروکنترلر فعال می شود. در کدویزارد بخشی با نام Bit-banged I2C bus interface وجود دارد که متفاوت از پروتکل TWI در AVR است (8). این بخش مربوط به پیاده سازی پروتکل I2C نرم افزاری روی پایه های پورت IO در AVR است. توجه داشته باشید که برای راه اندازی TWI در اتمل استودیو، لازم است به صورت رجیستری برنامه نویسی کنیم. که در این صورت می توان توابعی اختصاصی برای پروتکل TWI نوشت.

ارتباط-دوسیمه-کدویژن-کدویزارد

تصویر 6 – تنظیمات پروتکل TWI در AVR در کدویزارد

نتایج پروتکل TWI در AVR

  1. پروتکل ارتباطی TWI در AVR بسیار مشابه I2C استاندارد است. به طوری که گاهی به آن پروتکل I2C در AVR گفته می شود. اما در واقع TWI و I2C تفاوت هایی با هم دارند.
  2. در TWI که یک ارتباط دو سیمه در AVR است، یک خط کلاک (SCL) و یک خط داده (SDA) وجود دارد.
  3. Atmel برای جلوگیری از مشکلات قانونی با فیلیپس، نام پروتکل ارتباطی دو سیمۀ خود را TWI قرار داده است. چرا که I2C یک علامت تجاری ثبت شده به نام فیلیپس است.
  4. TWI مانند I2C یک پروتکل ارتباطی Master-slaveی است.
  5. در باس TWI، در هر لحظه تنها یک Master وجود دارد و باقی المان ها Slave هستند.
  6. کنترل باس توسط Master انجام می شود. تبادل داده نیز تنها بین Master و Slaveهاست و Slaveها نمی توانند با هم تبادل داده کنند.
  7. در TWI و I2C چهار مد ارتباطی وجود دارد: Master-transmit و Slave-receiver که Master فرستنده و Slave(ها) گیرنده است. Master-receiver و Slave-transmitter که Master گیرنده است و Slave فرستنده.
  8. پروتکل های ارتباطی TWI و I2C از مهمترین پروتکل های ارتباطی در میکروکنترلرهاهستند.
  9. دو المان کاربردی وجود دارد که در بسیاری از پروژه های مبتنی بر میکروکنترلرهای AVR استفاده می شوند. یکی حافظۀ EEPROM خارجی و دیگری آی سی های RTC خارجی است. بسیاری از این المان ها با TWI و I2C با میکروکنترلر ارتباط برقرار می کنند.
  10. بسیاری از ویژگی ها و مشخصات TWI در AVR مشابه I2C استاندارد است.
  11. راه اندازی TWI در AVR در نرم افزار کدویژن، به راحتی با تیک زدن و مقداردهی در کدویزارد انجام می شود.

رضا اسدی

رضا اسدی

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

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های AVR

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

رله-relay

رله، سوییچ تحریک پذیر

تعریف رله، تاریخچه، طرز کار رلۀ الکترومکانیکی، اصطلاحات، انواع الکترومکانیکی، رلۀ حالت جامد، رلۀ هیبریدی، رلۀ حرارتی و انواع تحریک شونده با عوامل غیر الکتریکی، انواع موجود در صنعت برق و برق صنعتی، رلۀ ایمنی و برخی انواع حفاظتی، رلۀ دیجیتال، لزوم استفاده و راه اندازی رله، مشخصات الکتریکی

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

10 دیدگاه ها

  1. سلام. توی متن فرمودید که یک I2C نرم افزاری و یک I2C سخت افزاری وجود داره. و همچنین گفتید که وقفه برای I2C وجود داره. برداشت من اینه که این وقفه فقط توی حالتی که از I2C سخت افزاری استفاده می کنیم وجود داره. در نگاه اول شاید همین باشه اما خواستم برای اطمینان از شما سوال کنم. تشکر

    پاسخ
    • سلام. خواهش می کنم. بله این موضوع که می فرمایید درست هستش. در واقع I2C سخت افزاری (که توی AVR به اون TWI هم گفته میشه) دارای وقفه هستش. توی I2C نرم افزاری در واقع از پورت های I/O برای ایجاد پالس ها استفاده میشه، بنابراین وقفه و روتین وقفه ای هم نداریم.

      پاسخ
  2. عالی بود با تشکر
    منتظر ادمه مطلب برای میکروهای arm خواهیم بود

    پاسخ
    • خواهش میکنم. ان شاءالله

      پاسخ
  3. سلام. هر وقت چیزی سرچ میکنم و یوبرد بالا میاد سریع بازش میکنم. چون مطمئنم وبلاگتون مطالب جامعی داره که جایی دیگه نمیشه پیدا کرد. اول تشکر میکنم بابت زحماتی که برای جامعه الکترونیک می کشید. دوم پیشنهاد میکنم درباره مطالب ساده الکترونیک هم مطلب بذارید. سوم درخواست میکنم که این twi هم براش پروژه و نمونه کد بذارید. هر جایی می گردم کد قابل فهم پیدا نمیکنم. بازم ممنون

    پاسخ
    • سلام دوست عزیز. ممنون از نظرتون.خیلی خیلی لطف دارید . اولاً خواهش میکنم. ثانیاً تا جایی که بتونیم مطالب زمینۀ الکترونیک رو به زبان ساده بیان می کنیم. ثالثاً twi هم ان شاءالله در آینده براش نمونه کد و پروژه میذاریم.

      پاسخ
  4. سلام خسته نباشید میکرو avr هست که فرکانس twi اون از 400 khz بالا تر باشه؟

    پاسخ
    • سلام. خیلی ممنون. بنده AVRی با فرکانس TWI بیشتر از 400 کیلوهرتز ندیدم. سایت میکروچیپ هم یه مقدار جست و جو کردم ندیدم. ممکنه وجود داشته باشه.

      پاسخ
  5. سلام ممنون از توضیحاتتون
    اگر از پایه مربوط به twi. به عنوان خروجی دیجیتال معمولی استفاده کنیم، مشکلی پیش میاد؟

    پاسخ
    • سلام. خواهش می کنیم. اگه TWI رو فعال نکرده باشید میتونید از پایه های مربوط، به عنوان پایه های IO استفاده کنید. مشکلی نداره

      پاسخ

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دیگر آموزش های یوبرد

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش میکروکنترلرهای ARM STM32 یوبرد

شروع بازی ST

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

آموزش های شاخص

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است