توضیح : مبحث SPI هم کارش تقریبا مثل USART هستش فقط یه کم باهاش تفاومت داره>>>هر کدوم از این روش ها کاربرد خاص خودشون رو دارند>>>مثلا برا اتصال SD CARD به میکرو باید از روش SPI استفاده کنید و برا بیشتر ماژول ها از USART >>>در کل هر کدوم جای خودشون کاربرد هایی دارند.

منم اصلا نمیخواستم این مطلب رو بزارم>>>ولی مجبور شدم>>>چون برا کار با LCD گرافیکی های بزرگ >>اگه بخوای توشون تصویر نشون بدی>>>با توجه به این که میکروکنترلر حافظش کم و محدود هستش ما میایم و به میکرو یه SD CARD وصل میکنیم و تصاویر رو در SD CARD ذخیره میکنیم و از این طریق تصاویر رو تو LCD نشون میدیم.
و به احتمال زیاد مطلب بعدی در مورد “آموزش اتصال SD CARD به میکرو” هستش.>>>و مطلب بعدی در مورد LCD گرافیکی های سری توشیا >>> انشاالله.

پایه های ارتباط سریال SPI در AVR

پایه های ارتباط سریال SPI در AVR


این عکسی که مشاهده میکنید مربوطه به mega16  و اون 4 تا پایه که تو شکل مشخص کردم مربوطه به بحث ارتباط سریال SPI ، در زیر پایه ها رو مختصرا توضیح میدم.

SS : انتخاب SLAVE مورد نظر (با صفر فعال میشه.>>یعنی اگه پایه SS یه SLAVE رو صفر کنی>>به حالت انتخاب در میاد)

MOSI : پایه انتقال اطلاعات از MASTER به SLAVE

MISO : پایه انتقال اطلاعات از  SLAVE به MASTER

SCK : خط کلاکی که توسط MASTER ایجاد میشه

توجه : در کد نویسی باید ورودی خروجی بودن این پایه ها رو (مثل بقیه پایه ها) تعیین کنیم.

ورودی خروجی بودن پایه ها باید بر طبق جدول زیر باشد. (اگه 4-5 خط بالا رو بخونید و تصویر زیر رو نگاه کنید و نیم ثانیه فکر کنید >>کار جدول زیر رو میفهمید.)

ارتباط سریال SPI در AVR

 

مقدمه ای در مورد  مبحث SPI

مبحث SPI هم زیاد با USART فرق نداره (اه اه اه دماغم چرا داره بزرگ میشه؟؟؟) >>> هر کدوم جای خودشون کار برد هایی دارند.

تو مبحث USART میگفتیم فرستنده گیرنده اما در SPI میگیم Master_slave یعنی :

دستگاهی که فرستنده هستش رو میگن Master  و دستگاهی که گیرنده هست رو میگن Slave (نامردا اسم فرستنده گیرنده رو عوض کردن…^_^)

توجه : ما میتونیم با یک master شونصد تا (تعداد زیادی) slave رو کنترل کنیم و بهشون اطلاعات بدیم.

 

ریجستر های SPI

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

ریجستر SPCR

 آموزش avr

 

 

بیت0 و 1 : تعیین تقسیم فرکانسی(تعیین فرکانس کاری SPI)>>>در جدول زیر بیت 0 ریجستر SPSR رو هم ابردم(اگه یک بشه>>فکانس دوبرابر میشه)

 آموزش avr

 

 

 

 

 

 


بیت2 :
 نمونه برداری از پایه های MOSI و MISO >>>صفر : لبه بالا رونده ___ یک : لبه پایین رونده

بیت3 : وضعیت اولیه پایه ی SCK >>> صفر : پایه SCK صفر میشه ___ یک : پایه SCK یک میشه (البته اینا در صورتی هستن  که پالسی ارسال نمیشه)

بیت4 : صفر : انتخاب مد SLAVE __ یک : انتخاب مد MASTER

بیت5 : یک : ابتدا بیت LSB ارسال میشه  ___ صفر : ابتدا بیت MSB ارسال میشه

بیت6 : یک : فعال کردن SPI ___ صفر : غیر فعال کردن SPI

بیت7 : فعال شدن وقفه SPI (البته به شرط فعال بودن وقفه همگانی) >>> با یک شدن بیت SPIF واقع در ریجستر SPSR

 

ریجستر SPSR

 آموزش ساده avr

 

 

بیت 0 :  با یک کردن این بیت>>فرکانس SCK در MASTER دو برابر میشه.

بیت 1تا5 :  رزرو شده(یعنی شما نمیتونید از این بیت ها استفاده کنید و باید بجاشون صفر قرار بدید.)

بیت 6 :  اگه در حین انقال دیتا در ریجستر SPDR ، دیتای جدیدی نوشته بشه>>این بیت یک میشه.

بیت 7 :  زمانی که دیتا به طور کامل ارسال شود >> این بیت یک میشه.

 

ریجستر SPDR

 آموزش ساده avr

 

 

خواندن و نوشتن دیتا توسط این ریجستر انجام میشود.

 

توجه توجه : عمل دریافت فرستادن اطلاعات(تو کد نویسی منظورمه)با تابع زیر صورت میگیره :