مبانی ارتباط سریال همزمان

1402-11-28

بدون دیدگاه

معرفی

در این مقاله به بیان مبانی ارتباط سریال همزمان خواهیم پرداخت. ارتباط سریال پرکاربردترین رابط برای انتقال داده‌ها بین دستگاه‌های جانبی است.

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

حالت‌های انتقال در ارتباط سریال

برای برقراری ارتباط سریال، سه حالت مختلف وجود دارد که امکان ارسال و دریافت داده‌ها را فراهم می‌کند. این حالت‌ها به صورت زیر هستند:

ساده (Simplex)

در این حالت تنها یکی از دستگاه‌ها می‌تواند داده‌ها را ارسال کند، در حالی که دستگاه دیگر تنها در حالت دریافت قرار می‌گیرد.

این نوع ارتباط یک طرفه است و بیش‌تر در تلویزیون و رادیو کاربرد دارد.

نیمه دوبلکس (Half Duplex)

انتقال داده‌ها در حالت Simplex یک طرفه است. اما در نیمه دوبلکس، انتقال در دو طرف انجام می‌شود اما نه در یک زمان. همچنین اگر فرستنده‌ای در حال ارسال داده‌ها است، گیرنده می‌تواند داده‌ها را دریافت کند اما نمی‌تواند در همان لحظه داده‌ها را ارسال کند.

مثال‌های شناخته شده‌ی نیمه دوبلکس، واکی-تاکی و اینترنت هستند که کاربر در آن‌ها داده‌هایی را ارسال می‌کند و باید منتظر دریافت داده‌ها توسط گیرنده یا سرور باشد.

دوبلکس کامل (Full Duplex)

گیرنده و فرستنده می‌توانند همزمان داده‌ها را به یکدیگر ارسال کنند. این حالت برای ارتباط دو طرفه‌ی پیچیده مانند گوشی همراه مناسب است.

حالتهای انتقال داده
برای برقراری ارتباط سریال، سه حالت مختلف وجود دارد که امکان ارسال و دریافت داده‌ها را فراهم می‌کند. این حالت‌ها عبارت‌اند از : ساده، نیم دوبلکس و دوبلکس کامل

سیگنال ساعت (Clock) در ارتباط سریال

علاوه بر حالت‌های انتقال داده‌ها، سیگنال ساعت نقش مهمی را بر عهده دارد. اختلال عملکرد در این سیگنال، منجر به انتقال غیرمنتظره‌ی داده‌ها و حتی از دست رفتن داده‌ها می‌شود.

سیگنال ساعت برای دستگاه‌های مختلف، متفاوت است و به دو نوع “همزمان” و “ناهمزمان” تقسیم می‌شود. سیگنال ساعت در ارتباط سریال ناهمزمان وجود ندارد. اما در ارتباط سریال همزمان این سیگنال برای همگام سازی استفاده می‌شود.

ارتباط سریال همزمان چیست؟

ساختار این ارتباط دارای یک Master (مانند میکروکنترلر) است که سیگنال ساعت را به یک یا چند Slave (مانند دستگاه‌های جانبی) ارسال می‌کنند. هر بار با تغییر سیگنال ساعت، دستگاه‌ها داده‌ها را ارسال یا دریافت می‌کنند.

بنابراین ارتباط سریال همزمان به صورت نقطه به نقطه‌ای است. دو شکل رایج از ارتباط سریال همزمان وجود دارد: I2C (مدار یکپارچه) و SPI (رابط جانبی سریال).

از آن جایی که بیت‌های شروع و توقف وجود ندارند، امکان استفاده‌ی بهینه از پهنای باند انتقال داده را برای بیت‌های بیش‎تر وجود دارد و منجر به آسان و ساده‌تر شدن فرایند انتقال می‌شود.

با فعال شدن هر سیگنال ساعت، داده‌ها به اندازه‌ی یک بیت در رجیستر به سمت پایین جابجا (shift) می‌شوند. همه دستگاه‌های موجود در یک ارتباط سریال همزمان، داده‌ها و سیگنال ساعت مشترک را به اشتراک می‌گذارند. دستگاه‌های جانبی توسط کنترل کننده هدایت می‌شوند که چه زمانی بیت‌های جابجا شده را دریافت کنند و چه زمانی آن‌ها را رد کنند.

رابط جانبی سریال (SPI)

همان طور که در شکل زیر نشان داده شده است، دستگاه‌های SPI با چهار سیم به هم وصل می‌شوند:

  • سریال داده‌ی ورودی (SDI) که در آن کنترل کننده داده‌ها را به دستگاه‌های جانبی ارسال می‌کنند.
  • سریال داده‌ی خروجی (SDO) که در آن دستگاه‌های جانبی داده‌ها را به کنترل کننده ارسال می‌کنند.
  • سیگنال ساعت (CLK) توسط کنترل کننده به همه دستگاه‌های جانبی ارسال می‌شود.
  • یک یا چند سیگنال انتخاب تراشه (CS یا Chip Select) که کنترل کننده از آن‌ها برای فعال کردن دستگاه‌های جانبی استفاده می‌کند. به عبارتی دیگر، به کنترل کننده این امکان را می‌دهد که چه زمانی داده را دریافت یا رد کند.
ارتباط سریال همزمان spi
ساختار ارتباط سریال همزمان SPI

این نمودار، ارتباط سریال همزمان SPI بین میکروکنترلر و سه دستگاه جانبی را نشان می‌دهد. سه سیم SDI، SDO و CLK به طور مشترک به دستگاه‌های جانبی متصل هستند. سه خط CS وجود دارد که به هر دستگاه جانبی وصل می‌شود.

هنگامی که کنترل کننده می‌خواهد با یکی از دستگاه‌های جانبی ارتباط برقرار کند، باید پایه‌ی CS دستگاه جانبی مورد نظر فعال باشد. در طی هر چرخه‎ی سیگنال ساعت، انتقال داده‌ها دو طرفه انجام می‌شود.

کنترل کننده (Master) با تغییر وضعیت سیگنال ساعت، یک بیت را روی خط SDI به دستگاه جانبی (Slave) ارسال می‌کند. همچنین دستگاه جانبی با تغییر وضعیت سیگنال ساعت، یک بیت را روی خط SDO به کنترل کننده می‌فرستد.

عمل انتقال داده‌ها ممکن است در چند چرخه ادامه پیدا کند. با غیرفعال شدن پایه‌ی CS، عمل انتقال داده‌ها متوقف می‌شود و دستگاه جانبی از حالت انتخاب خارج می‌شود. شکل زیر عملکرد SPI را نشان می‌دهد.

نمودار زمانی ارتباط سریال همزمان SPI
نمودار زمانی ارتباط سریال همزمان SPI

مزیت سیستم ارتباطی SPI در سادگی و آسانی تراکنش داده‌ها نهفته است. یعنی  کافی است داده‌ها را به دستگاه جانبی مورد نظرتان، ارسال کنید. اما مشکل این است که با افزایش تعداد دستگاه‌های جانبی، تعداد سیم‌های موردنیاز نیز افزایش خواهد یافت.

توجه کنید که در صنعت الکترونیک، استانداردی برای نام‌گذاری سیم‌های رابط SPI وجود ندارد. ممکن است به هنگام طراحی با چند نوع نام‌گذاری مواجه شوید. برخی از نام‌گذاری‌های متداول با رعایت ترتیب در زیر آورده شده‌اند:

  • SDI (Serial Data In), SDO (Serial Data Out), CLK (Clock), CS (Chip Select)
  • MOSI (Master Out, Slave In), MISO (Master In, Slave Out), CLK (Clock), SS (Slave Select)
  • POCI (Peripheral Out, Controller In), PICO (Peripheral In, Controller Out), CLK (Clock), SS (Slave Select)

مثال کاربردی در مورد SPI

به عنوان مثال، شتاب سنج ADXL345 می‌تواند از طریق SPI ارتباط برقرار کند. پروتکل آن به صورت زیر عمل می‌کند: ابتدا کنترل کننده، پایه‌ی CS را در سطح Low قرار می‌دهد.

سپس دستوری بر روی خط SDI به حسگر ارسال می‌شود تا شروع به اندازه گیری کند. ADXL345 به طور مداوم از شتاب نمونه برداری می‌کند و آخرین داده‌ها را در سه رجیستر حافظه ذخیره می‌کند.

هنگامی که کنترل کننده می‌خواهد داده‌های ثبت شده توسط حسگر را بخواند، مقدار CS در Low قرار می‌گیرد و درخواستی برای خواندن رجیسترهای حافظه را ارسال می‌کند. حسگر شتاب، داده‌ها را بر خط SDO به کنترل کننده می‌فرستد و به هنگام دریافت داده‌ها توسط کنترل کننده، مقدار CS در High قرار می‌گیرد.

رابط مدار مجتمع (I2C)

I2C یکی دیگر از پرکاربردترین پروتکل‌های ارتباط سریال همزمان است و ساختار آن مشابه SPI است. با این تفاوت، I2C تنها به دو اتصال بین کنترل کننده و دستگاه‌های جانبی نیاز دارد.

  • سریال ساعت (SCL) توسط کنترل کننده به همه دستگاه‌های جانبی ارسال می‌شود.
  • سریال داده (SDA) که در آن کنترل کننده و دستگاه‌های جانبی داده‌ها را در هر دو طرف تبادل می‌کنند.
ارتباط سریال همزمان i2c
ساختار ارتباط سریال همزمان I2C

این نمودار، ارتباط سریال همزمان I2C بین میکروکنترلر و سه دستگاه جانبی را نشان می‌دهد. دو سیم SDA و SCL به طور مشترک به دستگاه‌های جانبی متصل هستند.

برخلاف رابط SPI، رابط I2C دارای خط انتخاب دستگاه جانبی نیست. بنابراین روش دیگری وجود دارد تا کنترل کننده بداند داده‌ها برای کدام دستگاه ارسال می‌شود. این کار با آدرس دهی بر خط SDA انجام می‌شود. یعنی هر دستگاه جانبی دارای یک آدرس منحصر به فرد است.

با همگام سازی سیگنال ساعت همانند عملکرد SPI، کنترل کننده آدرس دستگاه مورد نظر را دریافت می‌کند و داده‌ها را بر خط SDA می‌نویسد یا می‌خواند. از این رو، دستگاه‌های جانبی فقط در صورت درخواست کنترل کننده، از طریق آدرس خود پاسخ می‌دهند و هرگز انتقال داده‌ها را شروع نمی‌کنند.

مزیت I2C این است که برای برقراری ارتباط با دستگاه‌ها تنها به دو سیم نیاز دارید. اما نحوه‌ی آدرس دهی پیش از ارسال هر دستوری ممکن است کمی پیچیده باشد.

مثال کاربردی در مورد I2C

ACS37800 حسگر جریان محصول شرکت Allegro است. آدرس پیش فرض که توسط شرکت سازنده تنظیم شده است، بر حسب دسیمال برابر 127 است. این آدرس توسط کاربران با توجه به نیاز پروژه‌ها قابل تغییر است.

ابتدا کنترل کننده یک بایت با آدرس 127 و یک بیت “0” ارسال می‌کند که نشان می‌دهد قصد برقراری ارتباط با حسگر را دارد. همه‌ی داده‌ها با تغییر وضعیت سیگنال ساعت ارسال می‌شوند.

سپس کنترل کننده برای خواندن داده‌ها، دوباره یک بایت با همان آدرس و یک بیت “1” ارسال می‌کند. دستگاه جانبی یک یا چند بایت داده را به کنترل کننده می‌فرستد و داده‌ها را پردازش می‌کند تا جریان مورد نظر به دست آید. برای کسب اطلاعات بیش‌تر می‌توانید برگه‌ی اطلاعات ACS37800 موجود در سایت فروشگاه اسکایتک را مطالعه کنید.

نتیجه گیری

SPI و I2C پروتکل‌های پرکاربردی هستند زیرا به شما اجازه می‌دهند با طیف گسترده‌ای از تراشه‌های حسگر و بدون نیاز به استفاده از پروتکل خروجی / ورودی کنترل کننده (IO)، ارتباط برقرار کنید.

از آن جایی که هر دو رابط به صورت گذرگاه (Bus) هستند، می‌توانید بسیاری از دستگاه‌ها را در یک گذرگاه قرار دهید و فقط در صورت نیاز از طریق ارسال سیگنال CS در SPI یا آدرس دهی در I2C، دستگاه‌ها را فراخوانی کنید.

اشتراک گذاری در:

برچسب‌ها:

مقاله‌های مرتبط

نظرات

دیدگاهتان را بنویسید

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