امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط دو میکرو از طریق spi
نویسنده پیام
belanko آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 7
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 21
( 20 تشکر در 16 ارسال )
ارسال: #1
ارتباط دو میکرو از طریق spi
با سلام
لطفا یکی با یک مثال بگه چطوری بین دومیکرو از طریقspi باید ارتباط برقرار کرد؟مطالب فروم رو خوندم ولی زیاد متوجه نشدمConfused
مثلا من میخام یک کلید رو به masterوصل کنم که با زدن اون،یک ledدرslave روشن بشه!دستوراتش چطوریه؟

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

[تصویر:  7142856ed0dce7f5a52360bab7054ed3.jpg]
۲۳-شهریور-۱۳۸۹, ۱۷:۵۹:۵۵
ارسال‌ها
پاسخ
WhiteNoise آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 941
موضوع‌ها: 21
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 8104
( 7796 تشکر در 3061 ارسال )
ارسال: #2
RE: ارتباط دو میکرو از طریق spi
اول sck ,mosi , miso رو وصل میکنیم (ُssمال استفاده از چند slave هست)
بعد از دستور زیر استفاده میکنیم
کد:
config spi=hard, interrupt=on\off,dataorder=lsb/msb,master =yes/no,polarity=high/low,phase=0/1,clockratr=4/16/64/128,noss=1/0
interrupt:همون طور که از اسمش معلومه برای استفادهاز وقفه spiفعال میشه
data order:برای فرستادن یه دیتا شما میتونی انتخواب کنی که اول lsbرو بفرسته یا msb
master:انتخواب میکنیم میکرو masterهست یا slave
polarity:در ضمان استفاده از مد sleepمثل idleمیتونید پایه کلاک (sck)رو صفر یا یک کنید
phase:گزینه صفر زمان استفاده دیتا تو فاز مثبت وصحیح و گزینه 1فاز ارسال رو معکوس میکنه
clock rate:فرکانس کلاک spiرو مشخص میکنه و گزینه ها در حقیقت ضریب فرکانس کار میکرو هستن
noss :اگر slave یکیه لازم به این گزینه نیست
خوب دستور بالا دستور کامل و مرجع هست ولی اگر میخوای ساده کار کنین میتونین فقط بنویسین
کد:
config spi=hard
برای دریافت دیتا از پروت سریال از دستور
کد:
spiin var , n
تو این دستور میایم میگیم به تعداد n بایت از متغیر varرو دریافت کن کن که مثلا تو متغیرای بایت اگه بخوایم کل متغیرو بفرسته از 8 استفاده میکنیم
برای ارسال هم دستور اینه:
کد:
spiout var,n
اینم دقیقا مثل قبلیه فقط متغیرو ارسال میکنه
حالا اینم یه مدار و برنامه ساده برای spi
[تصویر:  8916e906edd848c3b9fb.bmp]
فرستنده:
کد:
$regfile = "m32def.dat"
$crystal = 1000000
Config Portd = Input
Config Spi = Hard
Dim S1 As Byte
Dim Mehrdad As Bit
Mehrdad = 1
S1 = Pind.2
Do
If S1 = 1 Then
Spiout S1 , 1
End If
Loop
End                                                         'end program
گیرنده:
کد:
$regfile = "m32def.dat"
$crystal = 1000000
Config Portd = Output
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = No , Polarity = High , Phase = 0 , Clockrate = 4 , Noss = 0
Dim Mehrdad As Bit
Do
Spiin Mehrdad , 1
If Mehrdad = 1 Then
Set Portd.2
End If
Loop
End                                                         'end
موفق باشید



(آخرین ویرایش در این ارسال: ۲۴-شهریور-۱۳۸۹, ۲۰:۱۷:۵۸، توسط WhiteNoise.)
۲۴-شهریور-۱۳۸۹, ۲۰:۱۶:۲۵
ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, belanko
belanko آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 7
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 21
( 20 تشکر در 16 ارسال )
ارسال: #3
RE: ارتباط دو میکرو از طریق spi
مهندس من برنامتو شبیه سازی کردم ولی جواب نمیده!!!!!!!
پورت های مربوطه برای اتصال دو میکرو موقع شبیه سازی خاموشن ووقتی کلید رو میزنی هیچ کاری انجام نمیشه ExclamationWhistle!!!!!!!!!

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

[تصویر:  7142856ed0dce7f5a52360bab7054ed3.jpg]
۲۵-شهریور-۱۳۸۹, ۱۸:۱۳:۰۴
ارسال‌ها
پاسخ
belanko آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 7
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 21
( 20 تشکر در 16 ارسال )
ارسال: #4
RE: ارتباط دو میکرو از طریق spi
یعنی هیچ کس دیگه نظری نداره!!!!005044005

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

[تصویر:  7142856ed0dce7f5a52360bab7054ed3.jpg]
۲۶-شهریور-۱۳۸۹, ۱۱:۲۸:۲۴
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #5
RE: ارتباط دو میکرو از طریق spi

ارتباط سريال SPI


ويژگي هاي اين ارتباط را در زير مشاهده ميکنيد:

1- ارتباط سريال سنکرون با سرعت بالا

2- از اين ارتباط ميتوان براي اتصال ميکرو هاي avr به يکديگر يا اتصال ميکرو به هر وسيله اي که اين ارتباط را پشتيباني مي کند استفاده کرد

3- ارسال و دريافت داده هم زمان

4- استفاده از 4 سيم براي انتقال اطلاعات

5- قابليت تنظيم سرعت انتقال ديتا

6- داراي منبع وقفه پايان ارسال

7- حداکثر طول کابل ارتباطي بدون سيم شيلد در يک منطقه با نويز متوسط پنجاه سانتي متر است

8- ارتباط به صورت هاي مستر يا اسليو

9- نياز به سيم گراند براي ارتباط

در اين ارتباط از چهار پايه mosi و miso و sck و ss استفاده مي شود که در ميکرو مگا 16 به ترتيب پايه 5 تا 8 ميباشد (از portb.4 تا portb.7 ).

در زير نحوه پيکر بندي spi در بسکام امده است:

دستورپيکره بندي SPI :

کد php:
Config Spi Hard,Interrupt=On/Off,Data Order Lsb/Msb,Master Yes/No,Polarity=High/Low,Phase=0/1,Clock Rate=4/16/64/128,Noss=0/

INTERRUPT=ON/OFF : در صورت استفاده از وقفه در ارتباط سريال از گزينه ON استفاده مي شود ، در اين حالت تنها زماني که داده اي ميخواهد منتقل شود ميکرو کار ميکند .

DATA ORDER = LSB/MSB: در صورت انتخاب LSB ، ابتدا LSB (بيت کم ارزش ) و سپس MSB(بيت پرارزش) داده ارسال مي شود و بالعکس.

MASTER = YES/NO: اين گزينه مشخص ميکن ميکرو master ( فرمانده) است يا slave (فرمانبردار) گه گزينه yes مشخص کننده ميکرو مستر و گزينه no مشخص کننده ميکرو اسليو است.

POLARITY=HIGH/LOW : اين گزينه و ضعيت پايه کلاک را در زمان بيکاري ميکرو مشخص ميکن که ميتواند صفر (low ) يا يک ( high) باشد .

CLOCK RATE=4/16/64/128: مشخص کننده فرکانس کلاک SPIاست .

NOSS=0/1: زماني که در حالتMASTER نمي خواهيد سيگنال /SS ايجاد شود، يک انتخاب مي شود ودر اين حالت کاربر به صورت نرم افزاري بايد پايه SLAVE مورد نظر را پايين نگه دارد.

در حالت بالا از پايه هاي پيشفرض براي انتقال ديتا استفاده مي شود ، در صورتي که ميخ.اهيد آنها را به پيه هاي ديگر تغيير دهيد بايد از دستور زير استفاده کنيد:

کد php:
CONFIG SPI=SOFTDIN=PINDOUT PIN SS PIN|NONECLOCK PIN 

DIN=PIN :نشانگر پايه MISO است و پين نام پايه دل خواه ميباشد.

DOUT = PIN : نشانگر پايه MOSI است و پين نام پايه دل خواه ميباشد.

SS = PIN|NONE نشانگر پايه SS است و پين نام پايه دلخواه ميباشد. ( در صورتي از گزينه NONE استفاده کنيد پايه تغيير نميکند

CLOCK = PIN : نشانگر پايه SCK است و پين نام پايه دلخواه ميباشد.

مانند:

کد php:
CONFIG SPI=SOFTDIN=PIND.0DOUT PIND.1 SS PIND.2CLOCK PIND.3 

ديگر دستورات مربوط به SPI :

کد php:
SPIINIT 

SPIINIT توسط اين دستور پايه هاي که براي SPI (mosi و miso و sck و ss (در ميکرو مگا 16 به ترتيب پايه 5 تا 8 ميباشد (ازportb.4 تا portb.7 ))).استفاده ميشوند ، براي اين مد فعال مي گردند و ديگر نميتوان از آنها به عنوان ورودي يا خروجي استفاده کرد.

کد php:
SPIIN VAR,BAYT 

توسط اين دستور به تعداد BAYT از درگاه SPI اطلاعات دريافت مي شود و در متغيير VAR قرار ميگيرد ، در صورتي که متغير شما از جنس WORD يا ديگر متغيير ها است ، شما بايد تعداد بايت متغيير را به جاي BAYT بنويسيد .

مانند:

کد php:
'MASTER
$regfile = "m16def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5 , Rs = Pind.0 , E = Pind.1
Config Lcd = 16 * 2
Dim A As Byte
Config Spi = Hard , Interrupt = On , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128
Spiinit
Do
Spiin A , 1
Locate 1 , 1
Lcd A
Loop
End 


کد php:
SPIOUT VAR , BAYT 

توسط اين دستور به تعداد BAYT، داده VAR به درگاه SPI اطلاعات ارسال مي شود ، در صورتي که متغير شما از جنس WORD يا ديگر متغيير ها است ، شما بايد تعداد بايت متغيير را به جاي BAYT بنويسيد.

مانند:

کد php:
'SLAVE
$regfile = "m16def.dat"
$crystal = 8000000
Dim A As Word
Config Spi = Hard , Interrupt = On , Data Order = Lsb , Master = No , Polarity = High , Phase = 0 , Clockrate = 128
Spiinit
Do
Incr A
Waitms 300
Spiout A , 1
Loop
End 

هر دو مثال بالا مربوط به ارتباط SPI بين دو ميگرو مگا 16 است که مدار آن را در زير مشاهده ميفرماييد:

[تصویر:  6bccb8d54ebf46bc85b1.PNG]


کد php:
VAR=SPIMOVE(BAYT

از اين دستور در زمان ارتباط دوطرفه استفاده مي شود ، توسط اين دستور متغيير BAYT به باس SPI ارسال شده و همزمان داده دريافت شده از باس در متغير VAR قرار ميگيرد.
مثال:

برنامه SLAVE:

کد php:
$regfile "m16def.dat"$crystal 8000000
Dim A 
As Byte,As Byte
Config Lcdpin 
Pin Db4 Pind.2 Db5 Pind.3 Db6 Pind.4 Db7 Pind.5 Rs Pind.0 Pind.1
Config Lcd 
16 2
Config Spi 
Hard Interrupt On Data Order Lsb Master No Polarity High Phase Clockrate 128
Spiinit
Do
Spimove(a)
2
Locate 1 
:Lcd "Spiout:"A
Locate 2 
1Lcd "SPIIN:" B
Waitms 300
Loop
End 

برنامه MASTER :

کد php:
$regfile "m16def.dat"$crystal 8000000
Dim A 
As Byte,As Byte
Config Lcdpin 
Pin Db4 Pind.2 Db5 Pind.3 Db6 Pind.4 Db7 Pind.5 Rs Pind.0 Pind.1
Config Lcd 
16 2
Config Spi 
Hard Interrupt On Data Order Lsb Master Yes Polarity High Phase Clockrate 128
Spiinit
Do
Spimove(a)
Incr A
Locate 1 
1Lcd "Spiout:"A
Locate 2 
:Lcd "SPIIN:" B
Waitms 300
Loop
End 

[تصویر:  ac978aa2c4f6462ebe1f.PNG]


مثال:
در اين مثال پايه هاي مربوط به ارتباط SPI تغيير کرده اند ، شما ميتوانيد آنها را به حالت پيش فرض برگردانيد:

برنامه SLAVE :

کد php:
$regfile "m16def.dat":$crystal 8000000
Dim A 
As Byte,As Byte
Config Lcdpin 
Pin Db4 Pind.2 Db5 Pind.3 Db6 Pind.4 Db7 Pind.5 Rs Pind.0 Pind.1
Config Lcd 
16 2
Config Spi 
Soft Din Pina.0 Dout Pina.1 Ss Pina.2 Clock Pina.3
Spiinit
Do
Spimove(a)
2
Locate 1 
1Lcd "Spiout:"A
Locate 2 
1Lcd "SPIIN:" B
Waitms 300
Loop
End
[/quote]

برنامه  MASTER :

[
quote]
$regfile "m16def.dat":$crystal 8000000
Dim A 
As Byte,As Byte
Config Lcdpin 
Pin Db4 Pind.2 Db5 Pind.3 Db6 Pind.4 Db7 Pind.5 Rs Pind.0 Pind.1
Config Lcd 
16 2
Config Spi 
Soft Din Pina.0 Dout Pina.1 Ss Pina.2 Clock Pina.3
Spiinit
Do
Spimove(a)
Incr A
Locate 1 
1Lcd "Spiout:"A
Locate 2 
1Lcd "SPIIN:" B
Waitms 300
Loop
End 

مدار مورد استفاده:

[تصویر:  7ca6be419c8c44e4b707.PNG]

منبع : http://www.iranled.com/forum/showthread.php?tid=10869

۰۲-مهر-۱۳۸۹, ۰۱:۳۸:۳۹
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, reza555, sharin, ali173
WhiteNoise آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 941
موضوع‌ها: 21
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 8104
( 7796 تشکر در 3061 ارسال )
ارسال: #6
RE: ارتباط دو میکرو از طریق spi
من چند وقت پیش یه سوال برام پیش اومد فرق spi , ispچیه
۱۸-مهر-۱۳۸۹, ۱۵:۱۷:۰۳
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi20
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #7
RE: ارتباط دو میکرو از طریق spi
عزیزم سرچ کن تا بفهمی هر کدوم مخفف چی هستن !!!
۱۸-مهر-۱۳۸۹, ۱۶:۴۱:۵۹
ارسال‌ها
پاسخ
WhiteNoise آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 941
موضوع‌ها: 21
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 8104
( 7796 تشکر در 3061 ارسال )
ارسال: #8
RE: ارتباط دو میکرو از طریق spi
فرقشا بگو
هی نگو سرچ کن
جان هرکی دوست میداری
این پست مارم پاک کن
۱۸-مهر-۱۳۸۹, ۱۶:۴۴:۲۵
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #9
RE: ارتباط دو میکرو از طریق spi
آی اس پی یه نوع مرکز مخابراتی واسه ارسال و دریافت دیتا هستش.

اس پی آی یه نوع پورتکل واسه ارسال و دریافت دیتا.


مهرداد جون واسه توضیح بیشتر و مفصل، همین کلمه SPI و ISP را توی گوگل همراه با یه کلمه فارسی، سرچ کن، کلی مطلب فارسی با جزییات کامله تخصصی برات میاره.

موفق باشی

[تصویر:  iran2.png]
۱۸-مهر-۱۳۸۹, ۲۲:۵۷:۵۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : reza555, t3r!p3000, رسول


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ارتباط میکرو با plc از طریق شبکه profibus nex2004 11 14,656 ۰۱-بهمن-۱۳۹۸, ۱۱:۰۰:۱۹
آخرین ارسال: d.hamidi2535
  استفاده از SIM900 برای انتقال دیتا از طریق GPRS amirtebyan 12 12,379 ۳۰-آذر-۱۳۹۸, ۱۰:۵۶:۳۷
آخرین ارسال: hadikh73
  برنامه راه اندازی رله از طریق پورت شبکه (enc28j60) haisam 15 14,252 ۲۰-آبان-۱۳۹۷, ۰۹:۵۲:۵۹
آخرین ارسال: ali3000aab
Exclamation ارتباط سريال بين دو ميكرو و نمايش روي lcd با codevision ali313 13 28,959 ۰۱-شهریور-۱۳۹۷, ۱۱:۰۸:۴۳
آخرین ارسال: farhadtavakkol
  انتقال داده از طریق اترنت (Network) iman-63 36 33,755 ۲۰-آذر-۱۳۹۶, ۲۰:۲۹:۳۱
آخرین ارسال: اکبرو
  مشکل در ارتباط بیسیم با پروتکل USART cortex-m3 5 6,012 ۰۷-آبان-۱۳۹۵, ۰۰:۱۷:۳۶
آخرین ارسال: milad15m
  هنگ کردن میکرو در ارتباط سریال nex 1 2,890 ۰۴-آبان-۱۳۹۵, ۲۰:۵۶:۵۹
آخرین ارسال: علی محد شریفی
  ارتباط avr با plc از طریق profibus nex2004 5 7,429 ۰۳-مهر-۱۳۹۵, ۰۳:۱۶:۰۸
آخرین ارسال: jalil2008
  ارتباط دو طرفه با فرستنده nrf24 sniper-70 0 2,426 ۰۹-شهریور-۱۳۹۵, ۲۲:۱۶:۴۸
آخرین ارسال: sniper-70
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS