0

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

اگر پروژه های نسبتا پیچیده میکروکنترلری را انجام داده باشید احتمالا با مشکل کمبود پورت های ارتباطی برای اتصال ماژول ها و میکروکنترلر های مختلف به یکدیگر مواجه شده اید. اینجاست که پروتکل ارتباطی I2C می تواند کار شما را ساده کند. اگر دوست دارید بدانید پروتکل I2C چیست ؟ و I2C چه کاربردی دارد در ادامه این مطلب با من همراه باشید.

شرکت فیلیپس (NXP) در سال ۱۹۸۲ یک پروتکل برای ارتباط بین تراشه های الکترونیکی در فواصل کوتاه معرفی کرد که به سرعت مورد استقبال شرکت های تولید کننده تجهیزات و قطعات الکترونیکی قرار گرفت و توسعه دهندگان بسیاری در طراحی مدار های خود از این پروتکل استفاده کردند. این پروتکل در حالی ارائه شد که پیش از آن پروتکل هایی مانند UART و SPI برای متصل کردن IC های مختلف به یکدیگر وجود داشتند و مورد استفاده قرار می گرفتند اما هر یک محاسن و معایبی داشتند که طراحان I2C سعی کردند پروتکلی را توسعه دهند که به طور نسبی مزیت های هر دو پروتکل را در کنار هم داشته باشد.

این پروتکل I²C نامیده شد که به معنی Inter-Integrated Circuit است و در میان توسعه دهندگان الکترونیک دیجیتال به نام I2C ( آی تو سی ) شناخته می شود. ممکن است بپرسید I2C چه قابلیت ویژه ای داشته که توانسته در این حد موفق عمل کند؟!

مزیت و کاربرد پروتکل I2C چیست ؟

پس از ارائه اولین آی سی ها در دهه ۶۰ میلادی و ساخته شدن نخستین میکروکنترلر ها در دهه ۷۰، تعداد آی سی ها و سنسور های دیجیتال به سرعت رو به افزایش رفت. معمولا در ساخت اغلب برد های الکترونیکی دیجیتال از چندین IC استفاده می شود که اغلب اوقات نیاز است این IC ها با یکدیگر تبادل اطلاعات کنند. Universal Synchronous/Asynchronous Receiver/Transmitter یا USART یکی از پروتکل های رایج ارتباطی است که برای اتصال تراشه های دیجیتال به یکدیگر مورد استفاده می شود و SPI نیز پروتکل دیگری است که به این منظور استفاده می شود. هر یک از این پروتکل ها دارای نقاط قوت و محدودیت ها و معایب خاص خود هستند. اما با اینکه نمی توان گفت I2C بهتر از این پروتکل هاست اما توانسته بخشی از مزایای این دو پروتکل را به صورت همزمان در کنار هم داشته باشد. در ادامه پروتکل UART و SPI که دو پروتکل بسیار رایج برای تبادل اطلاعات بین تراشه های دیجیتال در فواصل نزدیک هستند را بررسی می کنیم و در ادامه ویژگی های پروتکل I2C را برای شما تشریح خواهم کرد.

نگاهی کلی به پروتکل ارتباط سریال UART

ارتباط نامتقارن سریال UART از دو سیم به نام های RX و TX برای اتصال بین دستگاه ها یا قطعات استفاده می کند که باید به صورت ضربدری به یکدیگر متصل شوند.

نحوه اتصال دستگاه ها در پروتکل سریال UART

همان طور که در تصویر بالا مشاهده می کنید در حالت معمول دستگاه هایی که می خواهند از طریق پروتکل سریال UART به یکدیگر متصل شوند باید مطابق تصویر به یکدیگر متصل شوند. در هر یک از دستگاه هایی که مجهز به UART هستند پین RX اطلاعات را دریافت می کند و پین TX اطلاعات را ارسال می کند. به علت اینکه ارتباط سریال UART یک ارتباط Asynchronous یا آسنکرون یا نامتقارن است هیچ کلاک مشترکی برای ارسال و دریافت اطلاعات استفاده نمی شود. بنابراین برای اینکه دستگاه ها بتوانند به صورت درست اطلاعات را دریافت کنند باید قبل از شروع ارتباط هر دو دستگاه از یک نرخ یکسان برای ارسال و دریافت اطلاعات استفاده کنند که به آن Baud Rate گفته می شود. Baud Rate که به آن Symbol Rate نیز گفته می شود در واقع نشان می دهد چه تعداد نشانه (Symbol) در هر ثانیه بین دو دستگاه تبادل می شوند. نرخ تبادل اطلاعات در این روش می تواند در حالت پیشفرض از ۹۶۰۰ تا ۱۱۵۲۰۰ نشانه بر ثانیه باشد.

پیاده سازی Bus ارتباط UART نیازمند سخت افزار پیچیده است و شبیه سازی نرم افزاری این ارتباط نیاز به نوشتن کد های زیاد و نسبتا پیچیده ای دارد تا از بروز خطا جلوگیری شود. از طرف دیگر همان طور در تصویر می بینید این نوع ارتباط برای اتصال ۲ وسیله به یکدیگر طراحی شده است و در حالت معمول و استاندارد از طریق این پروتکل تنها می توانید دو وسیله را به هم وصل کنید. هرچند می توان چندین وسیله را از طریق این باس به هم وصل کرد اما این کار استاندارد نیست و در صورتی که دو وسیله بخواهند به صورت همزمان اطلاعات ارسال کنند باعث بروز خطا در باس می شود.

پروتکل ارتباطی SPI

علاوه بر UART یکی دیگر از روش های ارتباط سریال آی سی ها و ماژول های الکترونیکی با یکدیگر SPI یا Serial Peripheral Interface است. برخلاف UART پروتکل SPI یک پروتکل ارتباطی متقارن یا Synchronous است. بنابراین در این پروتکل علاوه بر سیم های انتقال داده یک سیم کلاک نیز به نام SCK دیده می شود. در این پروتکل شما می توانید با استفاده از باس SPI شبکه ای ایجاد کنید تا بیش از ۲ دستگاه بتوانند با یکدیگر تبادل اطلاعات کنند. اما در این شبکه شما حتما باید یک دستگاه Master داشته باشید که مدیریت تبادلات اطلاعات را بر عهده دارد و بقیه دستگاه ها صرفا می توانند به این دستگاه اطلاعات ارسال کنند یا اطلاعات دریافت کنند. در پروتکل SPI شما می توانید چندین دستگاه را به باس SPI وصل کنید اما در شبکه SPI می تواند فقط یک Master داشته باشد و بقیه دستگاه ها به عنوان Slave شناخته می شوند.

در این پروتکل دو سیم برای انتقال داده به کار می رود که به نام های MOSI و MISO شناخته می شوند. لاین MOSI یا Master Out Slave In سیمی است که دستگاه Master از طریق آن اطلاعات ارسال می کند و Slave ها از طریق آن اطلاعات دریافت می کنند. لاین MISO یا Master In Slave Out سیمی است که دستگاه های Slave از طریق آن داده ارسال می کنند و دستگاه Master از طریق آن داده ها را دریافت می کند.

رابط سریال SPI
نحوه هم بندی رابط سریال بین ۴ دستگاه

بنابراین برای داشتن یک ارتباط بر اساس پروتکل SPI حداقل به ۳ سیم نیاز است. تا اینجا همه ی ویژگی های شبکه SPI جذاب به نظر می رسد و سرعت بالای انتقال اطلاعات که به راحتی به بیش از ۱۰ مگابیت بر ثانیه می رسد این پروتکل را برای انتقال داده های حجیم بسیار مطلوب می کند. اما یکی از معایب یا محدودیت های پروتکل SPI این است که در حالت پیشفرض به ازای هر دستگاه Slave باید یک سیم برای فعال سازی هر یک از دستگاه های Slave در نظر بگیرید. در واقع ۳ سیم قبلی بین تمام دستگاه ها مشترک هستند اما سیم مربوط به انتخاب تراشه یا Chip Select که با علامت CS نمایش داده می شود باید برای هر یک از دستگاه های Slave به صورت مستقل در نظر گرفته شود. در واقع هر زمان دستگاه Master می خواهد با یکی از دستگاه های Slave تبادل اطلاعات کند باید پین CS مربوط به آن دستگاه را فعال کند تا آن دستگاه بتواند اطلاعات روی شبکه را دریافت یا اطلاعات ارسال کند. این ویژگی باعث می شود تا حجم سیم کشی بین دستگاه ها با افزایش تعداد دستگاه ها افزایش چشم گیری داشته باشد.

بنابراین SPI بر خلاف ویژگی های جذابی که دارد دارای ۲ محدودیت اصلی است که شبکه SPI نمی تواند بیش از یک Master داشته باشد و با افزایش تعداد دستگاه ها حجم سیم کشی روی برد افزایش می یابد.

آنچه خوبان همه دارند تو یکجا داری!

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

از طرف دیگر رابط سریال SPI سرعت بیش از ۱۰ مگابیت بر ثانیه را برای انتقال اطلاعات در اختیار تراشه ها قرار می دهد و می تواند برای اتصال بیش از دو وسیله به کار گرفته شود. پیاده سازی سخت افزاری و نرم افزاری SPI ساده تر از UART است اما با این حال در این پروتکل فقط یک Master می تواند وجود داشته باشد و بقیه دستگاه ها فقط می توانند Slave باشند و برای هر دستگاه که به باس متصل می شود باید یک سیم فعالسازی جداگانه در نظر گرفته شود.

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

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.