SPI در میکروکنترلر STM8 – آموزش STM8

SPI در میکروکنترلر STM8

SPI در میکروکنترلر STM8

SPI در میکروکنترلر STM8 ، یکی از اصلی ترین روشهای ارتباطی می باشد که به منظور شبکه سازی و اتصال ابزارهای جانبی بکار برده می شود و امروزه بسیاری از سازندگان نمایشگرهای رنگی و خاص ( مانند نمایشگرهای گوشی تلفن همراه) از این استاندارد به منظور ارتباط با پردازنده استفاده می نمایند.

در این روش عمدتاً تعیین وظیفه اجزاء از اهمیت ویژه برخوردار است که این رابطه Master و Slave بودن اجزا شبکه و یا اتصال متقابل باید تحت مدیریت یک سیگنال کلاک دقیق و مدیریت شده انجام گردد که این عمل توسط پایه SCK در این ارتباط هماهنگ شده ، و در اهداف خاص و در تناسب با نوع طراحی میتوان ساختار چند حاکمی را نیز پیاده سازی نمود.

مولفههای اصلی ارتباط SPI

• امکان تبادل همزمان دوطرفه کامل ( از طریق سه خط تبادل داده)

• ارتباط یک طرفه و دوطرفه غیر همزمان با استفاده (از طریق دو خط تبادل داده.)

• قابلیت تعیین فرمانده به فرمان گیر (Master,Slave) بصورت سخت افزاری و نرم افزاری

• تبادل داده با سرعت حداکثر 10MHz

• قابلیت تعیین قطبیت و فاز سیگنال کلاک بصورت نرم افزاری

• قابلیت بررسی تبادل داده از طریق بیت علامتگذاری شده مربوطه در رجیستر تنظیم قابلیت ها.

 

در این روش ارتباطی از 4 پایه اصلی استفاده می گردد.

 

spi pins in stm8

در این روش ارتباطی سه پایه (MOSI,MISO,SCK) الزاما باید بصورت متقابل و به پایه همنام خود متصل شوند و برای تعیین وضعیت عملکرد هر جزء به صورت فرمانده یا فرمان گیر (Master و Slave)  در این شبکه حتی ارتباط یک به یک ، پایه NSS را میتوان بصورت سخت افزاری ( مانند تصویر فوق ) و یا نرم افزاری پیکربندی نمود.

شروع ارتباط همیشه از سمت Master شروع می شود ، در ارتباط دوطرفه داده از طریق MOSI ارسال توسط MISO پاسخ لازم به آن داده می شود .

مدیریت بر ارتباط و عملکرد اجزا با پایه NSS

تعیین عملکرد اجزاء در یک شبکه ارتباطی از طریق تنظیمات بیت SSM در رجیستر SPI_CR2 انجام می شود ( در حالت سخت افزاری و نرم افزاری ) در حالت تنظیم ( SSM=1) این میکروکنترولر در حالت Slave تنظیم شده و پایه مربوطه برای مصارف بعدی آزاد می ماند و در حالتی که با اتصال سخت افزاری وضعیت Slave ایجاد شده باشد ( SSM=0 ) امکان ایجاد شبکه چند فرماندهی نیز مقدور می گردد.

 

در STM8S003F3P6 پایه ی شماره 10 (SPI_NSS)

STM8S003F3 pinouts

پیکربندی Slave :

در پیکربندی بصورت Slave، کلاک سریال از طریق پایه SCK از سیستم Master دریافت می شود .

1. بیتهای CPOL , CPHA باید در هر دوسیستم بصورت یکنواخت تنظیم گردند که همزمانی بین دوسیستم مقدور گردد.

2. قالب بندی فرمت تبادل داده ( MSB-First – LSB-First) در تناسب با مقدار تنظیم شده در بیت LSBFIRST در رجیستر SPI_CR1 باید تنظیم شود .

3. در وضعیت سخت افزاری ، پایه NSS باید به یک سطح منطقی صفر در زمان تبادل داده متصل گردد و در وضعیت نرم افزاری با استفاده از بیت NSS ، این بیت را یک کرده و بیت SSI در رجیستر SPI_CR2 را پاک کنید.

4. بیت MSTR را پاک کرده و بیت SPE را فعال نمایید ، در این پیکربندی پایه MOSI ورودی اطلاعات و MISO خروجی اطلاعات است.

پیکربندی Master :

در پیکربندی Master ، کلاک ارتباط سریال در پایه SCK تولید میشود و به منظور پیکربندی صحیح مراحل زیر بایدانجام شود:

1. به منظور تعیین نرخ تبادل بیت های BR[2:0] در رجیستر SPI_CR1 باید به درستی تنظیم گردند.

2. بیت های CPOL , CPHA را بین چهار حالت ممکن برای تبادل داده در تناسب با کلاک تنظیم نمایید.

3. بیت LSBFIRST را به منظور تعیین فرمت داده تنظیم نمایید.

4. در حالت سخت افزاری پایه NSS رابه سطح منطقی یک متصل نموده و در حالت نرم افزاری بیت های SSM , SSI را در رجیستر SPI_CR2 تنظیم نمایید .

5. بیت های MSTR و SPE را تنظیم نمایید ( تنها در صورت پیکربندی سخت افزاری این حالت نیاز است)

در این حالت پایه MOSI خروجی و MISO ورودی داده است.

در ادامه رجیسترهای اصلی ارتباطی SPI را بررسی خواهیم نمود که با تنظیمات اصلی و خطوط اصلی برنامه در حالت کلی آشنا شده و چند تمرین و مثال ساده و کاربردی را به منظور آشنایی بیشتر تحلیل خواهیم نمود.

رجیسترهای SPI در میکروکنترلر STM8

SPI CONTROL REGISTER 1 (SPI_CR1)

SPI CONTROL REGISTER 1 (SPI_CR1)

بیت 7 : LSBFIRST تعیین فرمت ارسال داده

0 : ابتدا بیت های با ارزش ارسال شوند ( MSB )

1: ابتدا بیت های کم ارزش ارسال شوند ( LSB )

بیت 6 : SPE ( فعال نمودن ارتباط SPI )

0: غیر فعال نمودن واحد SPI
1: فعال نمودن واحد SPI

بیت 5-3 : BR[2:0] کنترل نرخ تبادل

بیت2 : MSTR پیکربندی وضعیت Master یا Slave

0: پیکربندی تابع
1: پیکربندی حاکم

بیت1: CPOL تعیین قطبیت سیگنال کلاک

0: سیگنال SCK در زمان بیکاری صفر منطقی می شود
1: سیگنال SCK در زمان بیکاری 1 منطقی می شود

بیت0: Clock Phase ( فاز سیگنال کلاک)

0: ارسال سیگنال کلاک در اولین گام تبادل داده ارسال می شود.
1: دومین سیگنال کلاک در اولین لبه ارسال داده.

SPI control register 2 (SPI_CR2)

SPI-CONTROL-REGISTER-2-(SPI_CR2)

در این رجیستر تنظیمات اصلی به منظور تعیین نوع ارتباط و عملکرد در ارتباطات را می توان پیکر بندی نمود.

بیت 7 – BDM : امکان تبادل داده بصورت دو طرفه مقدور می گردد. ( گزینه ها 0 , 1 )

بیت 6 – BDOE : کنترل فعالیت ورود و یا خروج داده در ارتباط دوطرفه( انتخاب این حالت که فقط دریافت داشته باشیم یا ورود ، گزینه ها 0 , 1 )

( در مد master پایه MOSI استفاده میشود و در مد slave پایه MISO استفاده می شود)

بیت 5 – CRCEN : ( گزینه ها 0 , 1 )

بیت 4 – CRCNEXT : ( گزینه ها 0 , 1 )

بیت 3 : برای کاربردی های آتی رزرو شده است .

بیت 2 – RXONLY : در صورت تنظیم این بیت تنها دریافت مقدور است گزینه ها:

0 : ارتباط دوطرفه کامل ( ارسال و دریافت )
1 : ارسال داده غیر فعال ( فقط دریافت مقدور است )

بیت 1 – SSM : مدیریت نرم افزاری سیستم تابع ( گزینه ها 0,1 )

بیت 0 – SSI : در تعامل با بیت SSM استفاده می شود و در صورت تعیین مد با این بیت اطلاعات بیت SSM نادیده گرفته می شود ، گزینه ها :

0 : تعیین میکرو به عنوان slave
1 : تعیین میکرو به عنوان master

SPI DATA REGISTER (SPI_DR)

SPI-DATA-REGISTER-(SPI_DR)

آخرین رجیستری که در این بخش بررسی خواهیم کرد (SPI_DR) می باشد که رجیستری به منظور نگهداری داده های ارسالی و یا دریافت شده استفاده می شود .

این رجیستر از دو بافر تشکیل شده که یکی برای نوشتن ( بافر ارسال ) و دیگری برای خواندن ( دریافت داده ) مورد استفاده قرار می گیرد.

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

فهرست کلی رجیسترهای موجود در ارتباط SPI را در جدول زیر مشاهده نمایید :

spi-stm8-register-map

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

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

4 پاسخ‌ها

  1. a.h گفت:

    خیلی عالی هست کارتون و خسته نباشید
    فقط یکم سرعت اموزش رو بالا ببرید 🙂

  2. احمد گفت:

    سلام خیلی عالی بود.لطفا آموزش برنامه نویسی I2C با STM8l رو هم قرار بدین با تشکر

پاسخ دهید

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

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