آموزش جامع میکروکنترلر AVR جلسه7
موضوع این جلسه : ارتباط سریال SPI در AVR
آموزش میکروکنترلر avr
توضیح : مبحث SPI هم کارش تقریبا مثل USART هستش فقط یه کم باهاش تفاومت داره>>>هر کدوم از این روش ها کاربرد خاص خودشون رو دارند>>>مثلا برا اتصال SD CARD به میکرو باید از روش SPI استفاده کنید و برا بیشتر ماژول ها از USART >>>در کل هر کدوم جای خودشون کاربرد هایی دارند.
منم اصلا نمیخواستم این مطلب رو بزارم>>>ولی مجبور
شدم>>>چون برا کار با LCD گرافیکی های بزرگ >>اگه بخوای
توشون تصویر نشون بدی>>>با توجه به این که میکروکنترلر حافظش
کم و محدود هستش ما میایم و به میکرو یه SD CARD وصل میکنیم و تصاویر رو
در SD CARD ذخیره میکنیم و از این طریق تصاویر رو تو LCD نشون میدیم.
و به احتمال زیاد مطلب بعدی در مورد “آموزش اتصال SD CARD به میکرو”
هستش.>>>و مطلب بعدی در مورد LCD گرافیکی های سری توشیا
>>> انشاالله.
این عکسی که مشاهده میکنید مربوطه به mega16 و اون 4 تا پایه که تو شکل مشخص کردم مربوطه به بحث ارتباط سریال SPI ، در زیر پایه ها رو مختصرا توضیح میدم.
SS : انتخاب SLAVE مورد نظر (با صفر فعال میشه.>>یعنی اگه پایه SS یه SLAVE رو صفر کنی>>به حالت انتخاب در میاد)
MOSI : پایه انتقال اطلاعات از MASTER به SLAVE
MISO : پایه انتقال اطلاعات از SLAVE به MASTER
SCK : خط کلاکی که توسط MASTER ایجاد میشه
توجه : در کد نویسی باید ورودی خروجی بودن این پایه ها رو (مثل بقیه پایه ها) تعیین کنیم.
ورودی خروجی بودن پایه ها باید بر طبق جدول زیر باشد. (اگه 4-5 خط بالا رو بخونید و تصویر زیر رو نگاه کنید و نیم ثانیه فکر کنید >>کار جدول زیر رو میفهمید.)
مبحث SPI هم زیاد با USART فرق نداره (اه اه اه دماغم چرا داره بزرگ میشه؟؟؟) >>> هر کدوم جای خودشون کار برد هایی دارند.
تو مبحث USART میگفتیم فرستنده گیرنده اما در SPI میگیم Master_slave یعنی :
دستگاهی که فرستنده هستش رو میگن Master و دستگاهی که گیرنده هست رو میگن Slave (نامردا اسم فرستنده گیرنده رو عوض کردن…^_^)
توجه : ما میتونیم با یک master شونصد تا (تعداد زیادی) slave رو کنترل کنیم و بهشون اطلاعات بدیم.
توجه : اونایی که با رنگ سبز مشخص کردم ، مهم هستن و با بقیه فعلا کاری نداریم.
بیت0 و 1 : تعیین تقسیم فرکانسی(تعیین فرکانس کاری SPI)>>>در جدول زیر بیت 0 ریجستر SPSR رو هم ابردم(اگه یک بشه>>فکانس دوبرابر میشه)
بیت2 : نمونه برداری از پایه های MOSI و MISO >>>صفر : لبه بالا رونده ___ یک : لبه پایین رونده
بیت3 : وضعیت اولیه پایه ی SCK >>> صفر : پایه SCK صفر میشه ___ یک : پایه SCK یک میشه (البته اینا در صورتی هستن که پالسی ارسال نمیشه)
بیت4 : صفر : انتخاب مد SLAVE __ یک : انتخاب مد MASTER
بیت5 : یک : ابتدا بیت LSB ارسال میشه ___ صفر : ابتدا بیت MSB ارسال میشه
بیت6 : یک : فعال کردن SPI ___ صفر : غیر فعال کردن SPI
بیت7 : فعال شدن وقفه SPI (البته به شرط فعال بودن وقفه همگانی) >>> با یک شدن بیت SPIF واقع در ریجستر SPSR
بیت 0 : با یک کردن این بیت>>فرکانس SCK در MASTER دو برابر میشه.
بیت 1تا5 : رزرو شده(یعنی شما نمیتونید از این بیت ها استفاده کنید و باید بجاشون صفر قرار بدید.)
بیت 6 : اگه در حین انقال دیتا در ریجستر SPDR ، دیتای جدیدی نوشته بشه>>این بیت یک میشه.
بیت 7 : زمانی که دیتا به طور کامل ارسال شود >> این بیت یک میشه.
خواندن و نوشتن دیتا توسط این ریجستر انجام میشود.
توجه توجه : عمل دریافت فرستادن اطلاعات(تو کد نویسی منظورمه)با تابع زیر صورت میگیره :
spi();
خدایش ساده تر از این نمیشد گفت(تازه کلی سر و تهش رو هم زدم.)
در آخر مطلب مقابل رو هم ببینید خالی از لطف نیست : ارتباط سریال SPI پیکره بندی و سخت افزاری
هم اکنون نیازمند نظرات سبزتان هستیم.(بنیاد حمایت از مدیران بدبخت و بیچاره سایت ها.)
خدایش من این همه زحمت میکشم و مطلب مینویسم برا شما دوستان>>>حالا اینقدر سخته براتون که یه نظر کوچولو بدید
در ضمن اگه جایی رو اشتباه یا برعکس گفتم لطفا ذکر کنید….
سایر منابع : سایت دمرچیلو