Mehdi.Aref 26781 اشتراک گذاری ارسال شده در 12 دی، ۱۳۸۸ ارتباط سریال SPI : ارتباط سریال SPI (SERIAL ERIPHERAL INTERFACE) یک پروتکل ارتبطی سریال سنکرون با سرعت بالا است که می تواند برای ارتباط میکروهای AVR با یکدیگر و یا با وسیله های دیگر که قابلیت ارتباط با این پروتکل را دارا هستند به کار برده شود. خصوصیات: • ارسال داده همزمان (SYNCHRONOUS )سه سیمه • ارتباط به صورت هایMASTER /SLAVE • ارسال ابتدای MSB یاLSB • بیت های قابل برنامه ریزی برای تنظیم سرعت • پرچم وقفه اتمام ارسال داده • بیدار شدن از حالت بیکاری طرز کار ارتباط SPI : پایه SCK خروجی کلاک برای MASTER و ورودی کلاک برای SLAVE است.با نوشتن رجیستر داده SPI (SPI DATA REGISTER) در MASTER ٬ CPU شروع به تولید کلاک SPI کرده و داده ها از پایه MOSI (MASTER OUT SLAVE IN) خارج شده و به پایه MOSI در SLAVE وارد می شوند.بعد از انتقال کامل داده توسط MASTER ٬ کلاک SPI قطع و پرچم وقفه پایان ارسال داده (SPIF) یک می شودو برنامه وقفه اجرا میگردد. دو شیفت رجیستر ۸ بیتی در MASTER و SLAVE را می توان به عنوان یک شیفت رجیستر چرخشی ۱۶ بیتی در نظر گرفت.این موضوع در شکل زیر دیده می شود.زمانی که داده ای از MASTER به SLAVE ارسال مشود می تواند در همان حال در جهت مخالف داده ای از SLAVE به MASTER انتقال یابد ٬ به این صورت که در طول هشت کلاک SPI داده های MASTER و SLAVE با هم عوض شود. طرز اتصال SLAVEو MASTER : زمانیکه SPI فعال شده باشد جهت پایه های SS ٬ SCK ٬ MISO ٬ MOSI با توجه به جدول زیر تعیین می شوند: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام SPI در حالت ارسال ٬ تک بافره و در حالت دریافت٬ دو بافره می باشد.در حالت ارسال زمانی که داده قبلی کاملا ارسال نشده باشد٬ نمی توان در رجیستر داده SPI (SPDR) نوشت.زمانی که دریافت کامل شد٬ داده بلافاصله در بافر قرار می گیرد. در حالت دریافت٬ داده پیشین قبل از اتمام دریافت بایت جدید٬ بایستی خوانده شود.در غیر اینصورت بایت جدید بر روی بایت قبلی نوشته می شود. زمانیکه SPI به عنوان MASTER استفاده می شود٬ کاربر می تواند جهت پایه SS را تعیین کند. اگر SS خروجی تعریف شده باشد٬ از ان به عنوان پایه خروجی عادی استفاده می شود و بدین صورت هیچ تاثیری در ارتباط SPI ندارد.اگر پایه SS ورودی تعریف شود بایستی حتما بالا باشد تا عملیات MASTER با اطمینان انجام شود.اگر این پایه زمانیکه به عنوان ورودی تعریف شده است به وسیله مدار جانبی دیگر(صفر)شود٬ در حالتی که SPI در مد MASTER پیکره بندی شده است سیستم دیگری را به عنوان MASTER برای خود تلقی کرده و به حالت SLAVE می رود. طرز کار پایه SS در مد SLAVE : زمانیکه SPI در مد SLAVE پیکره بندی میشود پایه SSهمیشه ورودی است.وقتی پایه SS صفر می شود٬ SPI فعال شده و پایه MISO در صورت تعریف کاربر به عنوان خروجی در نظر گرفته می شود. زمانیکه پایه SS بالا می رود٬ SPI بیکار است و هیچ گونه داده ای را دریافت یا ارسال نمی کند.اگر پایه SS در هنگان انتقال داده بالا رود٬ SPI ارسال و دریافت را بلافاصله قطع کرده واطلاعات چه دریافت وچه ارسال شده باشد از دست می رود. از پایه SS میتوان برای انتخاب SLAVE مورد نظر در سیستم هایMulty Slave استفاده کرد. برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام پیکره بندی SPI در محیط BASCOM در BASCOM پایه های SPI به و صورت نرم افزاری و سخت افزاری پیکره بندی می شوند.در پیکره بندی به صورت سخت افزاری پایه ای پیش فرض MOSI,MISO,SCK,SS به کار می روند و نمی توان انها را تغییر داد. با استفاده از پیکره بندی نرم افزاری می توان هر کدام از پایه های میکرو را به جای پایه های فوق استفاده نمود.در این پروژه از پیکره بندی سخت افزاری استفاده شده است. پیکره بندی سخت افزاری SPI CONFIG SPI=HARD,INTERRUPT=ON|OFF, DATAORDER=LSB|MSB,MASTER=YES|NO,POLARITY=HIGH|LOW, PHASE=0|1,CLOCKRATE=4|16|64|128,NOSS=0|1 INTERRUPT=ON|OFF در صورت استفاده از وقفه در ارتباط SPI از گزینه ON استفاده می شود. DATAORDER=LSB|MSB :در صورت انتخاب LSB ابتدا بایت کم ارزش و سپس بایت پر ارزش ارسال می شود. MASTER=YES|NO :اگر میکرویی که در حال برنامه ریزی ان هستیم MASTER باشد گزینه YES واگر SLAVE باشد ٬ گزینهNO انتخاب میگردد. POLARITY=HIGH|LOW :اگر بخواهیم زمانیکه SPI در حالت بیکاری است پایه کلاک بالا باشد٬ گزینهHIGH انتخاب می شود.انتخاب LOW باعث پایین قرار گرفتن پایه کلاک در مدIDLE می شود. NOSS=0|1 :انتخاب ۱ باعث می گردد که در حالت MASTER سیگنال SS ایجاد نشود. دستورات مربوط به ارتباط SPI : دستورSPIINIT : توسط ین دستور پایه های به ار برده شده در ارتباط SPI ٬ INITIAL می شوند.ین دستور باید بعداز پیکره بندی SPI نوشته شود. دستور SPIIN :SPIIN var,n توسط این دستور به تعداد n بایت از باس SPI داده دریافت می شودودر متغیرvar قرار می گیرد. دستور SPIOUT :SPIOUT var,n با این دستور تعداد n بایت داده از متغیرvar به باس SPI ارسال می شود. استفاده از وقفه SPI : برای استفاده از وقفه در ارتباط SPI ابتدا باید وقفه سراسری میکروکنترلر توسط دستور ENABLE INTERRUPTS فعال شود.سپس دستور ENABLE SPI وقفه SPI را فعال می کند.زمانیکه وقفه اتفاق می افتد٬ سیستم اجرای برنامه عادی را متوقف کرده و به برچسبی که برای وقفه تعریف شده است پرش می نماید.با استفاده از دستورON SPI lable می توان برچسب وقفه SPI را تعریف کردکه lable نام وقفه است و میتواند تا ۳۲ کاراکتر طول داشته باشد.بعد از پایان اجرای برنامه وقفه ٬ دستور RETURN موجب بازگشت به برنامه اصلی می گردد. برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 1 لینک به دیدگاه
ارسال های توصیه شده