قبل از شروع صحبت راجع به پروتکل های ارتباط سریال، این اصطلاح را به سه بخش تفکیک می نماییم. کلمه ارتباط کلمهای است که برای تبادل اطلاعات بین دو یا چند وسیله به کار میرود. در سیستمهای embedded، ارتباط به معنی تبادل داده میان دو میکروکنترلر است. تبادل بیتهای داده در میکروکنترلرها تحت یک سری قوانین تعریف شده به نام پروتکلهای ارتباطی انجام میشود. اگر داده به صورت سری یعنی یکی پس از دیگری و به صورت پی در پی ارسال شود، به آن پروتکل ارتباط سریال میگویند. به بیان دیگر، در ارتباط سریال، در هر لحظه یک بیت داده به صورت متوالی بر روی باس داده یا کانال ارتباط ارسال میشود.
انواع پروتکلهای ارتباطی
انتقال داده به صورت سری و موازی دو روش از انواع مختلف انتقال داده در الکترونیک دیجیتال است. بطور مشابه پروتکلها نیز به دو نوع پروتکل ارتباط سریال و پروتکل ارتباط موازی تقسیم میشود. ISA, ATA, SCSI, PCI وEEE-488 نمونه هایی از پروتکل ارتباط موازی هستند. برای پروتکل های ارتباطی سریال نمونه های زیادی وجود دارد که از جمله آن میتوان به CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire وSATA. اشاره کرد.
در این مقاله انواع مختلف پروتکل های ارتباط سریال بحث میشود. ارتباط سریال بهطور گسترده برای انتقال اطلاعات بین پردازشگرهای داده استفاده میشود. هر دستگاه الکترونیکی مانند کامپیوتر شخصی و موبایل از ارتباط سریال استفاده می کند.پروتکل، شکل ایمن و مطمئن ارتباط است که مشابه ارتباط موازی، دارای قوانینی است که بوسیله منبع (فرستنده) و مقصد (گیرنده) آدرس دهی میشود..
حالتهای انتقال داده در ارتباط سریال
همانطور که در بالا اشاره شد در ارتباط سریال داده به صورت بیت یعنی پالسهای باینری ارسال می شود که در آن 1 معرف منطق HIGH و 0 معرف منطق LOW است. بسته به نوع مد انتقال و ارسال داده، انواع مختلفی از پروتکل های ارتباط سریال وجود دارد. حالتهای انتقال به یک طرفه یا Simplex، نیمه دوطرفه یا Half Duplex و تمام دو طرفه یا Full Duplex طبقه بندی می شود.
روش Simplex
در این روش فرستنده و گیرنده میتواند تنها یک نقش داشته باشند. به این معنا که فرستنده فقط میتواند داده را ارسال و گیرنده تنها میتواند داده را دریافت کند. بنابراین روش Simplex تکنیک ارتباط یک طرفه است. انتقال داده در رادیو و تلویزیون دو مثال از حالت simplex است.
روش Half Duplex
در این روش فرستنده و گیرنده هر دو میتوانند داده را ارسال یا دریافت کنند، ولی نمیتوانند هر دو با هم در یک زمان فعال باشند. فرستنده داده را می فرستد و گیرنده دریافت میکند و نمیتواند تا زمانی که ارسال داده توسط فرستنده به اتمام نرسیده است داده ای ارسال کند و بالعکس. مثال معروف این حالت از ارتباط سریال، اینترنت است که کاربر درخواست برای دریافت داده را ارسال میکند و آن را از سرور دریافت مینماید.
روش Full Duplex
در این روش فرستنده و گیرنده میتوانند هر دو در یک زمان برای یکدیگر داده ارسال کنند. مثال معروف این روش تلفن همراه است.
از این گذشته، برای اینکه داده به درستی انتقال پیدا کند، کلاک نقش مهمی دارد. نقص فنی کلاک منجر به نتایج غیر منتظره در انتقال داده شده و حتی منجر به از دست دادن داده میشود. بنابراین هنگام استفاده از ارتباط سریال، سنکرون یا همزمان کردن کلاک های گیرنده و فرستنده اهمیت بسیار دارد.
سنکرون کردن کلاک
کلاک در تجهیزات سریال مختلف است و به اختصار به دو نوع واسط سریال سنکرون یا همزمان و واسط سریال آسنکرون یا غیر همزمان تقسیم میشود.
واسط سریال سنکرون
این یک اتصال نقطه به نقطه از تجهیز master یا پایه به slave یا پیرو است. در این نوع واسط همه تجهیزات برای اشتراک گذاری داده و کلاک از یک باس CPU استفاده میکنند. با باس یکسان برای اشتراک گذاری داده و کلاک، انتقال داده سریعتر انجام میشود. در این واسط عدم انطباق نرخ ارسال یا baudrate رخ نمی دهد. در سمت فرستنده، شیفت داده روی خط سریال باعث میشود کلاک بهصورت یک سیگنال مستقل عمل کند و هیچ بیت شروع و پایان و توازنی به داده اضافه نشود. در سمت فرستنده، داده با استفاده از کلاک تولید شده توسط گیرنده، استخراج میشود و داده سریال به شکل موازی برگردانده میشود. مثال معروف آن I2C و SPI است.
واسط سریال آسنکرون
در واسط سریال آسنکرون، سیگنال کلاک خارجی وجود ندارد. واسطهای سریال آسنکرون در کاربردهایی که فاصله فرستنده و گیرنده زیاد است، دیده میشود و برای مخابره پایدار کاملا مناسب است. واسط سریال آسنکرون به علت عدم وجود کلاک خارجی متکی به پارامترهایی مانند کنترل جریان داده، کنترل خطا، کنترل نرخ ارسال، کنترل ارسال و کنترل دریافت است. در سمت فرستنده، فرستنده با استفاده از کلاک خود، داده موازی را داخل خط سریال شیفت می دهد و بیتهایی برای چک کردن شروع، پایان و توازن اضافه میشود. در سمت گیرنده، گیرنده با استفاده از کلاک، داده را استخراج میکند و بعد از برداشتن بیتهای شروع، پایان و توازن؛ داده سریال را به شکل موازی تبدیل میکند. نمونه معروف آن RS-232, RS-422 و RS-485است.
دیگر اصطلاحات مربوط به ارتباط سریال
علاوه بر سنکرون کردن کلاک، هنگام انتقال داده بهصورت سریال با استفاده از یکی از پروتکل های ارتباط سریال باید چیزهای دیگری مانند نرخ ارسال، انتخاب بیت داده یا Framing، سنکرون کردن و چک کردن خطا را در نظر داشت. به اختصار به این اصطلاحات میپردازیم:
- نرخ ارسال: سرعت داده ارسال شده بین فرستنده و گیرنده به شکل بیت بر ثانیه (bps) است. مقدار نرخ ارسال معمولاً 9600 است. اما مقادیر دیگری مانند 1200، 2400، 4800، 57600 و 115200 نیز میتوان برای نرخ ارسال انتخاب کرد. هر چه نرخ ارسال بیشتر باشد داده با سرعت بیشتری انتقال می یابد. همچنین در ارتباط داده باید نرخ ارسال در فرستنده و گیرنده یکسان باشد.
- فریم بندی: فریم بندی به تعداد بیتهای داده که از فرستنده به گیرنده باید ارسال شود، اشاره دارد. تعداد بیتهای داده با توجه به کاربرد تغییر میکند. در بیشتر کاربردها تعداد بیت های داده 8 بیت است اما این تعداد میتواند 5، 6 یا 7 نیز باشد.
- سنکرون کردن: بیت های سنکرون یا همزمان سازی برای انتخاب بخش داده اهمیت زیادی دارد. این بیت ها ابتدا و انتهای بیت های داده را مشخص میکند. فرستنده بیت های شروع و پایان در یک فریم داده را تنظیم میکند و گیرنده این بیت ها را شناسایی میکند و پردازش های دیگر را روی فریم انجام میدهد تا داده را استخراج کند.
- کنترل خطا : عوامل زیادی بر ارتباط سریال اثر گذاشته و نویز به آن اضافه میکند، لذا کنترل خطا در ارتباط سریال نقش مهمی دارد. برای رهایی از این خطا، از توازن فرد و توازن زوج استفاده میشود. اگر فریم داده شامل تعداد زوج 1 باشد به عنوان توازن زوج شناخته میشود. اگر تعداد بیتها با مقدار 1، فرد باشد، بیت توازن 1 میشود تا کل بیتها با مقدار 1 زوج باقی بماند و اگر تعداد بیتها با مقدار 1، زوج باشد، بیت توازن 0 میگیرد تا کل بیتها با مقدار 1 زوج بماند. اگر فریم داده شامل تعداد فرد 1 باشد، به عنوان توازن فرد شناخته میشود. اگر تعداد بیتها با مقدار 1، فرد باشد، بیت توازن 0 میگیرد تا کل بیتها با مقدار 1 فرد باقی بماند و اگر تعداد بیتها با مقدار 1، زوج باشد، بیت توازن 1 میگیرد تا کل بیتها با مقدار 1 فرد بماند.
پروتکل در واقع یک زبان مشترک برای انتقال داده است. همانطور که در بالا گفته شد، پروتکل های ارتباط سریال به دو نوع سنکرون و آسنکرون تقسیم میشود. این دو نوع به تفصیل بررسی می شود.
پروتکلهای ارتباط سریال سنکرون
نوع سنکرون پروتکلهای سریال مانند SPI، I2C، CANو LIN جز بهترین پروتکل ها برای انتقال داده در پروژه های مختلف هستندو بسیار کاربرد دارند.
پروتکل SPI
ارتباط جانبی سریال یا SPI یک ارتباط سریال سنکرون است که امکان ارتباط چند میکروکنترلر SPI را فراهم می سازد. در SPI، سیم های خطوط داده و کلاک مجزا هستند. همچنین کلاک شامل جریان داده نیست و باید به عنوان یک سیگنال مجزا در نظر گرفته شود. SPI میتواند هم به عنوان پایه و هم پیرو پیکربندی شود. چهار سیگنال اصلی SPI(MISO, MOSI, SCK و SS) VCC و زمین برای ارتباطات داده استفاده میشود. بنابراین 6 سیم برای ارسال و دریافت داده توسط پایه و پیرو لازم است. در تئوری، SPI می تواند تعداد نامحدودی پیرو داشته باشد. ارتباطات داده در رجیسترهای SPI پیکربندی میشود. سرعت ارسال در SPI میتواند تا 10Mbps افزایش یابد. بنابراین این پروتکل برای انتقال داده با سرعت بالا ایدهآل است.
اکثر میکروکنترلرها قابلیت SPI را به صورت داخلی پشتیبانی میکنند و میتوانند مستقیماً به تجهیزاتی که این پروتکل را پشتیبانی میکنند، متصل شوند.
ارتباط سریال I2C
پروتکل I2C یک ارتباط دو سیمه بین آی سی ها و ماژول های مختلف است که از دو خط SDA (خط داده سریال) و SCL (خط کلاک سریال) استفاده میکند. هر دو خط باید با استفاده از مقاومت pull up به تغذیه مثبت وصل شود. سرعت انتقال در I2C میتواند بیش از 400Kbps باشد و از 7 یا 10 بیت آدرس برای مشخص کردن یک تجهیز خاص بر روی باس I2C استفاده میکند. بنابراین میتوان 1024 تجهیز مختلف توسط این پروتکل متصل شود. فاصله ارسال داده در این پروتکل محدود است، به گونه ای که برای ارتباطات onboard ایدهآل است. در ارتباط I2C فقط از دو سیم استفاده میشود و تجهیزات جدید به راحتی میتواند به دو خط باس مشترک I2C متصل شود، بنابراین شبکه I2C به راحتی قابل راه اندازی است.
USB
گذرگاه سریال عمومی یا USB پروتکلی با سرعت و نسخه های مختلف است. حداکثر 127 دستگاه جانبی میتواند به یک میزبان USB متصل شود. USB یک پروتکل plug and play است. USBدر اکثر تجهیزات مانند صفحه کلید، چاپگرها، دستگاه های رسانه ای، دوربین ها، اسکنرها و موس بکار میرود. USBها برای نصب آسان، نرخ داده سریعتر، استفاده از کابل کمتر و انتقال کامل داده طراحی شده است و جایگزین پورتهای سریال و موازی حجیم و کند شده است. در پروتکل USB برای کاهش تداخلات و انتقال داده با سرعت بالا در فاصله زیاد از سیگنال های تفاضلی استفاده میشود.
یک باس تفاضلی با دو سیم ساخته میشود، یک سیم داده ارسال شده را ارائه میکند و دیگری مکمل آن است. ایده کار این است که ولتاژ متوسط روی سیم ها، هیچ دادهای را منتقل نمیکند، در نتیجه تداخل کم میشود. در پروتکل USB، تجهیزات میتوانند بدون سوال از میزبان، مقدار معینی توان بکشد. پروتکل USB فقط از دو سیم برای انتقال داده استفاده میکند و سریعتر از واسطهای سریال و موازی است. نسخههای USB سرعتهای مختلف مانند 1.5Mbps (USB v1.0), 480 Mbps (USB2.0), 5Gbps (USB v3.0) را پشتیبانی میکند. طول کابل USB بدون هاب به m5 و با استفاده از هاب به m40 میرسد.
CAN
شبکه ناحیه کنترلی یا CAN برای مثال در اتومبیل استفاده میشود و ارتباطات بین ECU(واحد کنترل موتور) و حسگرها را فراهم میسازد. این پروتکل پایدار، ارزان و مبتنی بر پیام است و کاربردهای زیادی دارد. برای مثال این پروتکل در ماشینها، کامیونها، تراکتورها و رباتهای صنعتی بهکار میرود. سیستم باس CAN برای تشخیص خطای مرکزی و پیکربندی همه ECUها در نظر گرفته شده است. پیام های CAN بوسیله IDها اولویت بندی شده است. هر ECU شامل تراشهای برای دریافت همه پیامهای ارسال شده، تصمیمگیری و واکنش بر طبق آن است. بنابراین، تعداد گره ها به راحتی میتواند تغییر کند یا اضافه شود. سرعت انتقال در باس CAN میتواند تا 1Mbps افزایش یابد.
Microwire
Microwire یک واسط سریال سه سیمه دو طرفه با سرعت 3Mbps است. این پروتکل زیرمجموعه پروتکل SPI است. Microwire یک پورت سریال I/O بر روی میکروکنترلرهاست. بنابراین باس Microwire میتواند در EEPROMها و تراشه های دیگر دیده شود. SI (ورودی سریال) SO,(خروجی سریال) و SK (کلاک سریال) سه خط ارتباطی این پروتکل است. SI خط ورودی سریال به میکروکنترلر است و SO خط خروجی سریال و SK خط کلاک سریال است. داده در لبه پایین رونده SK شیفت داده میشود و در لبه بالارونده مقدار میگیرد. افزایش یک باس به میکروسیم MICROWIRE/Plus نامیده میشود. تفاوت اصلی بین این دو باس مربوط به معماری میکروکنترلرهای پیچیدهتر است. سرعت انتقال داده در این پروتکل تا 3Mbps میتواند افزایش پیدا کند.
پروتکلهای ارتباط سریال آسنکرون
نوع آسنکرون پروتکل سریال برای انتقال داده مطمئن در فواصل طولانی بسیار پرکاربرد است. ارتباط آسنکرون به کلاک مشترک در دو تجهیز نیاز ندارد. هر تجهیز به طور مستقل پالسهای داده را با یک نرخ مشخص ارسال و دریافت میکند. ارتباط سریال آسنکرون گاهی به منطق سریال ترانزیستور-ترانزیستور (TTL) اشاره دارد که سطح ولتاژ بالا منطق 1 و سطح ولتاژ پایین منطق 0 است. امروزه تقریباً هر میکروکنترلر موجود در بازار یک فرستنده / گیرنده آسنکرون عمومی یا UART برای ارتباطات سریال دارد. RS232, RS422, RS485 و غیره مثالهایی از این نوع هستند.
RS232
RS232 (استاندارد توصیه شده 232) پروتکل بسیار رایج است که برای اتصال تجهیزات مختلف مانند مانیتورها و دستگاههای CNC و غیره بکار میرود. RS232 بهصورت کانکتورهای نری و مادگی وجود دارد. RS232 یک پروتکل نقطه به نقطه است و حداکثر به یک دستگاه متصل میشود و فاصله 15 متر با نرخ ارسال bps9600 را پوشش میدهد. اطلاعات بر روی این واسط به صورت دیجیتال و با منطق 0 و 1 منتقل میشود. منطق “1” یا MARK متناظر با رنج ولتاژ V3- تاV15- و منطق “0” یا SPACE متناظر با رنج ولتاژ V3+ تا V15+ است. کانکتور DB9 با 9 پایه TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND. از این پروتکل پیروی میکند.
RS422
RS422 مشابه RS232 است که ارسال و دریافت پیام ها بهطور همزمان بر روی خطوط مجزا با استفاده از یک سیگنال تفاضلی انجام میشود. در شبکه RS422 یک فرستنده و تا 10 گیرنده میتواند وجود داشته باشد. سرعت انتقال داده در RS422 به فاصله فرستنده و گیرنده بستگی دارد و از 10 kbps (1200 متر) تا 10 Mbps (10 متر) میتواند تغییر کند.
خط RS422 از 4 سیم برای انتقال داده (2 سیم بههم تابیده برای ارسال و دو سیم بههم تابیده برای دریافت) و یک سیم GND به عنوان زمین مشترک تشکیل شده است. ولتاژ روی خطوط داده میتواند از V6- تا V6+ باشد. اگر اختلاف بین خطوط A و B از V2+ تا 6V باشد، صفر تشخیص داده میشود و اگر این اختلاف از -2V تا -6V باشد، معادل یک به حساب می آید. استاندارد RS422 یک کانکتور به خصوص ندارد اما میتواند روی یک ترمینال یا کانکتور DB9 عرضه شود.
RS485
چون RS485 یک توپولوژی چند نقطهای است و در صنعت ترجیحاً از این پروتکل استفاده میشود. 32 فرستنده و گیرنده را میتوان از طریق این پروتکل به یکدیگر متصل کرد. استاندارد RS485 یک کانکتور خاص ندارد اما معمولاً به صورت یک ترمینال یا کانکتور DB9 در بازار ارائه میشود. سرعت انتقال داده به طول خط بستگی دارد و میتواند به 10 Mbps در 10 متر برسد. ولتاژ روی خطوط داده میتواند در رنج V7- تا V12+ باشد. دو نوع RS485 وجود دارد: RS485 نیمه دو طرفه که 2 کنتاکت دارد و RS485 تمام دو طرفه که دارای 4 کنتاکت است.
نتیجهگیری
ارتباط سریال یکی از روش های انتقال داده است که در الکترونیک و سیستم های embedded بهطور گسترده استفاده میشود. نرخ ارسال داده نقش مهمی در انتقال داده دارد و برای کاربردهای مختلف، متفاوت است. بنابراین نوع پروتکل ارتباط سریال باید با توجه به کاربرد موردنظرمان انتخاب شود.