گذرگاه ارتباط جانبی سریال (به انگلیسی: Serial Peripheral Interface Bus) (مخفف انگلیسی: SPI) یک پیوند دادهٔ سریال هماهنگ است که توسط موتورولا نامگذاری شده و در حالت کاملا دوطرفه فعالیت میکند. این نوع ارتباط در فاصلههای کوتاه و دارای تنها یک "ارباب" مانند سامانههای نهفته، حسگرها و کارتهای اس دی کاربرد دارد.
در این نوع ارتباطات، دستگاهها به صورت ارباب/برده با هم ارتباط برقرار میکنند که در آن دستگاه ارباب فریمهای داده را به راه میاندازد. هم چنین میتوان با چند برده دارای خطهای انتخاب قطعه جدا از راه یک خط مشترک ارتباط برقرار کرد. گاهی برای جداسازی SPI از گذرگاههای سریال ۳ سیمه، دو سیمه و یک سیمه، به آن گذرگاه سریال ۴ سیمه نیز میگویند.
SPI، چهار سیگنال منطقی دارد:
|
این پورتها به نامهای زیر نیز شناخته میشوند:
|
سیگنال Chip Select کمتر به صورت Active High دیده میشود و در این صورت نشانهگذاری پایهها آن را مشخص میکند(مانند CS یا SS به جای nCS و nSS، به سطح منطقی مراجعه شود). سیگنال انتخاب برده به جای آدرس دهی استفاده میشود.
گذرگاه SPI میتواند با یک ارباب و یک یا چند دستگاه برده کار کند.
اگر از یک برده استفاده شود، ممکن است سیگنال SS روی حالت منطقی پایین ثابت باشد. بعضی بردهها به یک لبه ی سقوط سیگنال انتخاب قطعه نیاز دارند تا فعالیت خود را شروع کنند. برای نمونه مبدل آنالوگ به دیجیتال MAX1242 از شرکت مکسیم اینتگریتد، تبدیل سیگنالهای آنالوگ به دیجیتال را با تبدیل high→low شروع میکند. برای کار با چند دستگاه برده، باید از خطهای SS مستقل برای هر کدام انتخاب کرد.
بیشتر دستگاههای برده دارای خروجیهای سه حالته هستند که باعث میشود تا هنگامی که قطعه انتخاب نشده پین MISO روی حالت امپدانس بالا قرار بگیرد و از مدار حذف شود. دستگاههایی که دارای خروجیهای سه حالته نیستند برای استفاده همزمان با چند برده ی دیگر مناسب نیستند و دستگاه ارباب فقط باید به یکی از آنها وصل شده باشد.
برای شروع تبادل داده ها، دستگاه ارباب نخست پالس ساعت را با فرکانسی کمتر یا برابر با حداکثر مقداری که دستگاه برده پشتیبانی میکند تنظیم میکند که معمولاً در حد چند مگاهترس است. سپس یک سیگنال ۰ منطقی از خط انتخاب قطعه به برده می فرستد. برای این به دستگاه ۰ می فرستیم که سطح فعال آن ۰ است (Active Low) یعنی سطح خاموش آن، ۱ منطقی است. اگر نیازی به وقفه بود (مانند در قطعههای تبدیل آنالوگ به دیجیتال) دستگاه ارباب باید حداقل به آن میزان صبر کند و سپس پالس ساعت را به برده بفرستد.
در هر دوره ی پالس ساعت SPI، یک تبادل داده کاملاً دوطرفه رخ می دهد:
ارباب، علاوه بر تنظیم کردن فرکانس پالس ساعت باید قطبیت (polarity) ساعت و فاز آن را نیز نسبت به دادهها مشخص کند. راهنمای قطعات شرکت Freescale [۱]، این دو گزینه را به ترتیب CPOL و CPHA نامگذاری کرده و بیشتر شرکتها نیز آن را پذیرفتهاند.
در سمت چپ نمودار زمانی را میبینیم.
به عبارت دیگر، CPHA=0 به این معناست که دادهها روی اولین لبه ی پالس ساعت و CPHA=1 به این معناست که دادهها روی لبه ی دوم پاس ساعت بدون توجه به اینکه پالس ساعت در حال بالا رفتن است یا پایین رفتن، خوانده میشوند.
گاهی قطبیت و فاز را با هم می آمیزند و با قرار دادن CPOL به عنوان بیت با ترتیب بالاتر و CPHA به عنوان بیت با ترتیب پایینتر برای هر حالت شمارهای میدهند.
حالت | CPOL | CPHA |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
2 | 1 | 0 |
3 | 1 | 1 |