اتصالات در برد های مختلف
MOSI (Master Out Slave In) : خط اصلی برای ارسال داده به تجهیزات جانبی.
SCK (ساعت سریال) : پالس های کلاک که انتقال داده های تولید شده توسط برنامه را همزمان می کنند.
پیش تنظیمات SPI
SPISettings برای پیکربندی پورت SPI برای دستگاه SPI شما استفاده می شود. هر ۳ پارامتر در یک SPISettings یک به یک ترکیب می شوند که به ()SPI.beginTransaction داده می شود. زمانی که همه تنظیمات ثابت هستند، SPISettings باید مستقیما در ()SPI.beginTransaction استفاده شود. اگر هرکدام از تنظیمات شما متغیر باشد، می توانید یک آبجکت SPISettings ایجاد کنید تا ۳ تنظیم را داشته باشد. سپس می توانید نام آبجکت را به ()SPI.beginTransaction بدهید. ایجاد یک آبجکت SPISettings با نامگذاری تنظیمات ممکن است کارآمدتر باشد، به خصوص اگر حداکثر سرعت یک متغیر محاسبه شده یا پیکربندی شده باشد، نه عددی که مستقیما در برنامه خود تایپ می کنید.
به این شکل از SPI Setting استفاده خواهیم کرد و پارامتر های مدنظر در محل مورد نظر قرار خواهیم داد.
- SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0))
- SPISettings mySettting(speedMaximum, dataOrder, dataMode)
مستندات عملکرد اعضا کتابخانه
- ;()begin
SPI.begin()
- ;()end
SPI.end()
- ;()beginTransaction
SPI.beginTransaction(mySettings);
- ;()endTransaction
SPI.endTransaction()
- ;()setBitOrder
SPI.setBitOrder(LSBFIRST or MSBFIRST)
- ;()setClockDivider
- SPI_CLOCK_DIV2
- SPI_CLOCK_DIV4
- SPI_CLOCK_DIV8
- SPI_CLOCK_DIV16
- SPI_CLOCK_DIV32
- SPI_CLOCK_DIV64
- SPI_CLOCK_DIV128
SPI.setClockDivider(divider)
- ;()setDataMode
- SPI_MODE0
- SPI_MODE1
- SPI_MODE2
- SPI_MODE3
SPI.setDataMode(mode)
- ;()transfer
receivedVal = SPI.transfer(val)
- ;()usingInterrupt
SPI.usingInterrupt(interruptNumber)
نکاتی درباره SPI
به طور کلی، چهار حالت انتقال وجود دارد. این حالت ها کنترل می کنند که آیا داده ها بر روی لبه بالا یا پایین آمدن سیگنال کلاک داده (به نام فاز کلاک) به داخل و خارج منتقل می شوند، و یا اینکه آیا کلاک در حالت کم یا زیاد است (قطب ساعت نامیده می شود). چهار حالت مطابق با این جدول قطب و فاز را ترکیب می کنند.
حالت | Clock Polarity (CPOL) | Clock Phase (CPHA) | Output Edge | Data Capture |
SPI_MODE0 | ۰ | ۰ | Falling | Rising |
SPI_MODE1 | ۰ | ۱ | Rising | Falling |
SPI_MODE2 | ۱ | ۰ | Rising | Falling |
SPI_MODE3 | ۱ | ۱ | Falling | Rising |
جمع بندی
در کلام آخر باید این مورد را ذکر کنم که این پروتکل ارتباطی از موارد محبوب در امبدد است و کتابخانه های این چنینی به ما در راهاندازی این پروتکل بسیار کمک میکنند. بسیاری از ماژول ها، سنسور ها از این پروتکل پشتیبانی میکنند، برای مثال نمایشگر های Oled. این پروتکل همواره هم پای رقبای خود پیش آمده و مزایای خود را دارد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.