خانه / آموزش میکروکنترلرهای AVR / آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

ارتباط SPI ارتباطی که مانند Uart در دو حالت سخت افزاری یا نرم افزاری قابل دسترسی است. ارتباط با پروتکل سریال – پرسرعت – سه سیمه که برای عملیات هایی همچون پروگرام و برنامه ریزی کردن حافظه های Flash و Eeprom و یا ارتباط با یک میکرو کنترلر دیگر به صورت Master – Slave مورد استفاده قرار می گیرد. پین های مورد استفاده برای این ارتباط به صورت زیر است:

 آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

Master در حقیقت سیم اصلی بئده و slave سیستم پیرو در صورتی که از چند سیستم پیرو استفاده شود. با استفاده از پایه ss سیستم مورد نظر را انتخاب می کنند.

 آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال SPI

:: پیکر بندی spi سخت افزاری

Config Spi = Hard,Interrupt= On|Off , Data Order = Lsb|Msb ,_

Master – Yes|No , Polarity = High|Low , Phase = 0|1 , _ Clockrate = 4|16|64|128 , Noss = 1|0

این ارتباط سخت افزاری بوده و پایه های نام برده مورد نیاز هستند.

Interrupt : همانطور که از نامش پیداست برای استفاده از وقفه SPI فعال می شود.

Data order : برای فرستادن یک دیتا, شما می توانید انتخاب کنید که اول LSB فرستاده شود یا MSB.

Master : نوع میکرو را انتخاب می کند. Yes برای Master و گزینه No برای Slave .

Polarity : در زمان استفاده از مد Sleep مانند Idle , می توان پایه کلاک ( Sck ) را یک یا صفر در نظر گرفت.

Phase : گزینه صفر زمان استفاده دیتا در فاز مثبت و صحیح و گزینه 1 فاز ارسال را معکوس می کند.

Clockrate : فرکانس کلاک Spi را مشخص می کند و گزینه ها در حقیقت ضریب فرکانس کار میکرو می باشد.

Noss : تعیین کننده پایه SS بوده و در صورت استفاده از یک سیستم Slave دیگر نیازی به این پایه نیست و می توان پایه SS سیستم Slave را صفر کرد.

نکته : در حالت پیش فرض دیتا به صورت MSB فرستاده شده و کلاک در مد Idle یک است و سیستم Master و با فاز مثبت و فرکانس کار میکرو تقسیم بر 4 شده و کلاک SPI تعیید می شود. پس این سیستم را می توان به صورت زیر نوشت:

Config Spi = Hard

:: پیکر بندی spi نرم افزاری

Config Spi = Soft , Din = Pin , Dout = pin , SS = pin|None , Clock = Pin

در این نوع پیکر بندی تنها پایه های ارتباط تعیین می شود. تنها گزینه پایه SS را می توان در دو حالت تعیین پایه و یا غیر فعال (None) انتخاب کرد.

نکته : در صورت غیر فعال کردن پایه SS در سیستم Slave باید پایه SS را زمین کنید.

دریافت دیتا از پورت سریال Spi

Spin var , n

با این دستور شما می توانید از پورت سریال به تعداد n بایت داده دریافت و در متغیر var قرار دهید.

:: ارسال دیتا به پورت سریال Spi

Spiout var , n

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

:: ارسال و دریافت همزمان دیتا در پورت سریال spi

Var1 = Spimove(var 2)

 با این دستور شما می توانید به طور همزمان به پورت سریال متغیر var2 را فرستاده و داده گرفته شده را در  متغیر var1 قرار داد.

$regfile = “m48def.dat”

$crystal = 8000000

Config spi = soft , din = pinb.0, dout = portb.1,ss = portb.2,_

Clock = portb.3

Dim var as byte

Dim b as byte

Dim a (10 ) as byte

B = 5

A (2) = 40

Spiout a (1) , b

Spin a (a) , b

A (1) = spimove (a(2))

End

 موسسه خیریه حمایت از کودکان مبتلا به سرطان

 دسته اصلی : زبان برنامه نویسی BASIC

 نویسنده : electronics98

 تاریخ انتشار :

2 دیدگاه

  1. سلام دوستان من برای اولین بار از مد SPI دارم کار می کنم . همه چی رو هم خوندم
    ارتباط رو هم برقرار کردم . مشکل من اینجاست که master عدد یک رو به slave
    میفرسته و اون بعد از دریافت اگه شرط برابر یک بود کاری رو انجام بده .
    ولی کار نکرد . بعد اون متغییری رو که master داره میفرسته رو روی lcd
    نمایش دادم دیدم عدد 128 رو میفرسته !!!
    الان خواستم بدونم که چرا عدد 128 فرستاده میشه به جای یک؟؟؟؟

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

پاسخ دهید

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

مطلب پیشنهادی

I2C-AVR

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C پایه های مورد استفاده پروتکل I2C …