چه چیزی تعیین سرعت SPI یک راهنمای کامل

رابط سریال (SPI) برای انتقال داده های سرعتی معروف است. این قرارداد ارتباط همگامی فعال می شود

چيه؟

...واسط نقطۀ متوالی!SPI) برای معروف استانتقال دادۀ سریع. اين...قرارداد ارتباط همگامیداده های مؤثر را فعال می کندانتقالبیندستگاه هابا يکينرخ انتقال داده بيشتر از 100 مگل هاتز. خب، چرا پروژه ی تو نمیتونهاجراهميشه اين بالا رو بزنمنرخ انتقال داده؟ حقیقتتسرعت SPIو کلاًردیفبا سه منطقه اصلي محدود شده

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

حذف کلید

  • سرعت SPI شما به سه چیز اصلی بستگی دارد: محدودیت های سخت افزار شما، کیفیت ارتباطات فیزیکی شما، و چطوري نرم افزارت رو تنظيم ميکني
  • همیشه محدودیت های سرعت در صفحه داده ها را هم برای ارباب و هم دستگاه برده خود بررسی کنید. آهسته ترین دستگاه حداکثر سرعت برای اتوبوس SPI شما را تنظیم می کند.
  • طراحی پی بی خوبی مهمه سیم ها را کوتاه نگه دارید ، ردیابی کنید و از هواپیمای زمینی قوی برای جلوگیری از مشکلات سیگنال با سرعت بالا استفاده کنید .
  • استفاده از مستقیمحافظهدسترسی (DMA) به نرم افزارتان برای بهترین عملکرد. دي.ام.ا.میکرو کنترلربدون کم کردن پردازشگر اصلی سریع ارسال کنید.

نقش سخت افزار در سرعت SPI

سخت افزاری

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

محدودیتهای ساعت اصلی

دستگاه اصلی شما، معمولا یک میکرو کنترلر، ساعت SPI (SCK) را تولید می کند. این دستگاه یک فرکانس بیشینه دارد که می تواند آن را عمل کند.واسط محلی سریال. تو ميتوني اين محدوديت رو پيدا کنيبخش ویژگی های الکتریکی از صفحه داده اش. جدولها اغلب حداکثر را مشخص می کنندFSCK(فرکانس ساعت SPI) زیر ولتاژ متفاوت.

برای مثال، صفحه داده های یک میکرو کنترلر ممکن است مشخصات SPI مانند این باشد:

نماپارامترشرایطکمینهنوعیبیشینهواحدName
FSCKفرکانس ساعت SPIحالت گیرندۀ کنترلگر 2.7 V <VDD < 3.6 V- ...- ...45MHzName
حالت ارسال کنترل 2.7 V <VDD < 3.6 V- ...- ...45MHzName

یادداشت:مقادیر در جدول بالا بر اساس استFPCLKx / ۳، کجاييFPCLKxساعت محوطه است حداکثر ارزش واقعی بستگی به معماری خاص میکرو کنترلر دارد.

ساعت خود استاد هم نقش دارد. منطقه SPI اغلب بر روی ساعتی که از ساعت اصلی به دست می آید اجرا می شود.

  • معمار ساعت داخلی یک میکرو کنترلر می تواند ساعت ورودی SPI را محدود کند. برای مثال ، یک پیمانه ممکن است فقط یک ورودی بیشینه از را بپذیرد۴۸ میلی هاز.
  • سپس این ساعت ورودی برای تولید سیگنال نهایی SCK برای انتقال SPI تقسیم می شود.
  • این به این معنی است که حتی اگر منطقه ی SPI به صورت تئوری سریع تر می تواند عملکرد آن با ساعتی که شما به آن غذا داده می شود.

محدودیتهای ساعت برده

حالا دستگاه برده رو در نظر بگیرید هر برده ي اس پي، چه يکيحسگرتراشه حافظه، یا یک میکرو کنترلر دیگر، همچنین یک فرکانس بیشینه ساعتی دارد که می تواند به دست آورد. این اغلب قابل توجه ترین ضربه در یک پیکربندی ارباب/برده است.بیشتر از این محدودیت باعث می شود که برده اطلاعات غلط تعریف کنه و منجر به فساد داده طی انتقال.

💡اتوبوس SPI شما فقط به سرعت سريع ترين دستگاهشه سرعت نهایی ارتباط باید به پایین تری از دو نفر (استاد یا برده) تعیین شود.

شما باید برگه داده های برده را با دقت بررسی کنید. احتمالاً میزان انتقال داده های بیشینه متفاوت بسته به عملیات را پیدا کنید. برای مثال، ومیکرو کنترلر STM32 در حالت برده می تواند ۴۰ MHz برای دریافت داده ها پشتیبانی کند اما سرعت پایین تری مانند 24 MHz برای کامل-duplex. ارتباطی. این تفاوت ها می تواند از منطق داخلی مورد نیاز برای نمونه و ارسال داده به طور همزمان رخ دهد. برای بیشتر دستگاه های برده ی SPI قانون امن انگشت شست است که سرعت ساعت زیر نگه داردیک دهم از فرکانس ساعت سیستم بردهتا اطلاعات قابل اطمینان داشته باشه

تأخیر پردازش برده

فرکانس بالای ساعت همیشه برابر نقطه ی بالا نیست. اندازه ی واقعی عملکرد اینه که چقدر اطلاعاتی می توانید در طول زمان منتقل کنید. بسیاری از دستگاه های برده برای پردازش اطلاعات نیاز به مکث بین معاملات دارند. اين به عنوان شناخته ميشهزمان پردازش بردهیا اینکه...تأخیر تعامل.

تصور کنید که دستوری به سنسور میفرستید. سنسور به زمان احتیاج دارد تا یک اندازه گیری قبل از اینکه داده ها برای انتقال بعدی آماده شود. یک ساعت SPI سریع بی فایده است اگر ارباب باید مدت طولانی صبر کنه تا برده آماده بشه این تاخیر به طور حیاتی تاثیر می گذاره

برخی از سناری های معمولی که به این تاخیر نیاز دارند عبارتند از:

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

خب، از کجا ميدوني که برده براي انتقال بعدي آماده ست؟ دستگاه ها از روش های مختلف برای نشان دادن وضعیت خود استفاده می کنند:

  • پین مشغول:بعضی از دستگاه ها یک پین خروجی وقف شده دارند که ادعا می کنند که مشغول پردازش هستند.
  • ثبت وضعیت:می توانید ثبت وضعیت برده را بررسی کنید. این ثبت اغلب حاوی بیت هایی مثلهسعی کنید) ارسال آماده (رَدیبراي نشون دادن وضعيتش
  • وقفه ها:برده ميتونه از اين قطعه هاي وضعيت استفاده کنه تا مزاحم ارباب بشه به طور فعال علامتي که براي معامله ي بعدي آماده است.

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

لایۀ واسط نقطه ی متوالی

...

وقتي محدوديت هات رو بفهميمدارهای یکپارهبايد به ارتباط فيزيکي بينشون نگاه کني. ردیابی های مدار چاپ شده (PCB) و سیم هایی که اتوبوس SPI شما را تشکیل می دهند راهنمایی های عالی نیستند. در فرکانس بالا، این مسیر های فیزیکی مجموعه از چالش های خودشان را معرفی می کنند که می توانند کیفیت سیگنال را تضعیف کنند و عملکرد کلی شما را محدود کنند.

مسیر و طرح بندی

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

تطبیق های طول ردیابی بین ساعت (SCK) و خطوط داده ها (MOSI/MISO) موجب خطای زمانی می شود. سیگنال ساعت ممکنه در زمان متفاوتی از داده ها به گیرنده برسه اين ميتونه باعث بشه دستگاه برده ي اطلاعات اشتباه رو رد کنه و کل انتقال رو خراب کنه همونطور که فرکانس سیگنال شما افزایش میده دوره ساعت کوتاه تر میشه طراحيتون رو خيلي حساس تر ميکنه حتي تفاوت هاي کوچيک در تاخير پرتاب کردن.

ها

جدول زیر نشان می دهد که چقدر سریع تحمل تقاضای طول ردیابی را با افزایش فرکانس ساعت SPI را کوچک می کند.

فرکانسیدوره ساعت) T (تحمل بیشینۀ Skew (۲۰٪ T )تأخیر توسعه) FR4 (تطبیق بیشینه طول ردیابی
۱۰۰ مگ هوز۱۰ ننقطه۱۵۰ ساعت:#13 #
۲۰۰ مگ هوز۵ نیک نقطه۱۵۰ ساعت:6.7
۵۰۰ مگ هوزنقطه۰. ۴ ن ن۱۵۰ ساعت:~2.7
۱ گرهزیک نقطه۰. ۲ n ن۱۵۰ ساعت:۳.3
۲ گرهز۰۵ ن۰٫۰ ن ن۱۵۰ ساعت:0.67
۵ گرهز۰. ۲ n ن۰. ۰ ن ها۱۵۰ ساعت:0.27

راهنما:وقتی اتوبوس تون در محدوده ی 50-100 مگ هوز فعال می شود، باید ردیابی ها را به عنوان خطوط انتقال رفتار کنید. برای جلوگیری از انعکاس سیگنال و زنگ زدن ، می توانید پایان سری کوچک اضافه کنیدمقاوم(مثل 22-33Ω) نزدیک سنجاق های راننده. آنها را در خطوط SCK، MOSI و CS قرار دهید به ارباب و روی خط MISO در هر برده.

اتوبوس و صداقتی

هر عنصر توي پي.بي.پین های آیسبه خود ردیابی، مقدار کمی از ظرفیت ناخواسته اضافه می کنه بهش ميگنظرفیت انگیزی. بین رد سیگنال و نزدیک ترین هواپیمای مرجع آن وجود دارد، معمولاً هواپیمای زمینی. در حالی که نمیتونی از بین ببریش باید مدیریتش کنی

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

اضافه کردن دستگاه های بیشتر برده به اتوبوس SPI ظرفیت کل بار را افزایش می دهد که می تواند بیشتر صداقت سیگنال را ناتوان کند. شما می توانید این اثر انگلیسی را از طریق طراحی کنترل کنید

  • استفاده از لامهای نازکتر سطحیبراي کاهش فاصله ي هواپيماي همسايه
  • انتخاب موادهای قطعه کم) ثابت دی الکتریک (براي اينکه ظرفيت کلي کاهش بده
  • برگزیدن اجزای با اندازۀ سرب کوچکتربراي کمترين کارهاي اونها.

ضرب و صدو

"کراستالک" اتفاق ميفته وقتي انرژي الکترومغناطيسي از يک سيگنال "به رديابي همسايه مي افته. در یک PCB، این اتفاق اغلب بین دو ردیف SPI که در کنار به طرف می آید رخ می دهد. این انرژی جمع شده صدا روی ردیابی شکستگی ایجاد میکنه اگه سر و صدا به اندازه کافي بزرگ باشه ميتونه باعث انتقال سيگنال دروغي بشه و انتقال داده هات رو خراب کنه

این پدیده اصلا به دلیل پیوند شیمیایی است. بهترين راه براي مبارزه با صداهاي خارجي با يک هواپيماي زميني طراحي شده است.

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

برای بهبود طراحی شما و به دست آوردن نرخ انتقال داده های بالاتر، شما باید:

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

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

تاثیر نرم افزار بر روی اجرای SPI

سخت افزار شما وطرح بندی PCBپتانسیل ارتباطات سرعت بالا را تعیین می کند، اما نرم افزار شما تعیین می کند که آیا می توانید آن را به دست آورد. انتخاب هایی که در کد شما می کنید، از تنظیمات پروتکل ابتدایی تا روش های کنترل داده ها، مستقیماً عملکرد نهایی SPI را کنترل کنید.

حالت و زمان بندی

...قرارداد SPIيعني ارباب و دستگاه برده بايد در مورد زمان بندي موافق باشن با انتخاب حالت SPI درست این زمان بندی پیکربندی کنید. یک تطبیق اینجا باعث میشه که انتقال کاملاً شکست خورد. حالت توسط دو پارامتر در صفحه داده دستگاه برده تعریف می شود:

  • قطبیت ساعت) CPOL :این وضعیت بیکار سیگنال ساعت را تنظیم می کند.
  • فاز ساعت) CCPHA :این تعیین می کند که آیا داده را در اولین) پیشرفت ( یا دوم) دنباله دار نمونه می باشد.

این دو تنظیم ترکیب می شود تا چهار حالت SPI ممکن ایجاد شود. اگر ارباب شما به حالت ۰ (CPOL=0, CPHA= 0) تنظیم شود ، انتظار دارد که داده ها روی یک افزایش ساعت نمونه باشد. دستگاه برده شما نیز باید برای این حالت پیکربندی شود تا یک انتقال داده های موفقی باشد. دریافت این اشتباه یک منبعی از خطاهایی است که از ارتباط بین دستگاه ها جلوگیری می کند.

گرداننده

چگونه میکرو کنترلر اطلاعات حرکت میکنه تاثیر عظیمی روی عملیات داره معمولاً دو انتخاب برای رسیدگی انتقال SPI دارید: وقفه ها یا دستیابی مستقیم حافظه (DMA). استفاده از وقفه ها برای یک انتقال ابتدایی ساده تر است، اما پردازش سی پیی قابل تولید می کند که حداکثر نرخ انتقال داده های شما را محدود می کند. برای نمایش بالا، DMA روش برتری است.

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

میز زیر دو روش مقایسه می کنه:

ویژهوقفه-Driven SPINameDMA-Driven SPIName
فراز پردازشیبالا; پردازشگاه هر انتقال بایت را مدیریت می کند.پایین ؛ پردازشگاهی بعد از آغاز انتقال مجانی است.
ضررپایین; محدود با توانایی پردازشگاهی برای قطع خدمات.بالاتر: می تواند به سرعت بیشینه SPI برسد.
مورد استفادهاخوبه براي درجه پايين.حسگرهايا دستورات سادهواسه جریان سرعت بالا و بلوک های بزرگ اطلاعات مناسبه

وقتی شما نیاز دارید به بالاترین نرخ انتقال داده ها از مؤلفه هایی مانند ADC های حلزونی بالا یا حافظه فلش استفاده کنید، باید از DMA استفاده کنید. این روش تاخیر نرم افزار را کمینه می کند و اتوبوس SPI شما را به نزدیکتر به محدوده های سخت افزارش عمل می کند.


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

💡حرکت قابل عمل:برای پیدا کردن حداکثر سرعت واقعی خود، اول برگه ی داده های دستگاه برده را برای محدودیت سرعتش بررسی کنید. بعد، این سرعت را با طرح بندی PCB و نرم افزار خود آزمایش کنید. از اونجا به پايين تنظيم کنيد تا سريعترين سرعت رو براي پروژه خاص خودتون پيدا کنيد

FAQ

Related Articles