NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4353 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 2 از 3 نخستنخست 123 آخرینآخرین
نمایش نتایج: از 21 به 40 از 45

موضوع: بررسی مد SPI در lpc2378

  1. #21
    کاربر فعال esi_52000 آواتار ها
    تاریخ عضویت
    Oct 2009
    نام
    اسماعیل طاهری
    نوشته ها
    365
    تشکر
    220
    تشکر شده 943 بار در 200 پست

    پیش فرض

    نه مهدی جان.من پیگیر پیگیرم .راستش رو بخوایی من خودم زبانم افتضاحه.واسه همین نمی نونستم دیتاشیت رو ترجمه کنم.اما این آموزشات خیلی کمکم کرده.دمت گرم داداش.خیر ببینی مادددددر
    منتظر بقیه اون هستیماااااااااااااااااا

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #22
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط esi_52000 نمایش پست ها
    منتظر بقیه اون هستیماااااااااااااااااا
    یعنی میگید قانون بند یک را اجرا نکنیم!!؟ این جوری بد میشها !

    در ضمیمه دو فایل spi.c و spi.h هست که کمک میکنه. در فایل اول چند تا تابع هست . برای روتین وقفه:
    کد:
    void SPI0Handler (void) __irq
    پیکربندی اولیه:
    کد:
    DWORD SPIInit( void )
    ارسال:
    کد:
    void SPISend( BYTE buf)
    دریافت:
    کد:
    void SPIReceive( BYTE *buf, DWORD Length )
    دریافت بایت:
    کد:
    BYTE SPIReceiveByte( void )
    که در فایل spi.h ثوابت تعریف شده اند.
    با سر در آوردن از اینها میشه یه برنامه ساده تر اجرا کرد. حالا ما یکی یکی سوال میکنیم تا اساتید جواب بدند(مثل قبلی ها که جواب دادند!)
    این دستور در پیکر بندی اولیه SPI برای چی هست:
    کد:
    IODIR0  |= 0x4000;
    فايل هاي پيوست شده فايل هاي پيوست شده

  5. کاربران : 4 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  6. #23
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    سوال:
    این دستور در پیکر بندی اولیه spi برای چی هست؟
    کد:
    iodir0  |= 0x4000;
    سلام
    مهندس من خيلي با arm كار نكردم. شما بيشتر وارد هستيد.
    اين دستور تمام پين هاي پورت 0 رو به غير از پين p0.14 رو به ورودي تبديل ميكنه. نميدونم شايد دارم اشتباه ميگم.
    _____________________________________
    _____________________________________

  7. کاربران : 2 تشکر کرده اند از شما sadmonew برای ارسال این پست سودمند:


  8. #24
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadmonew نمایش پست ها
    اين دستور تمام پين هاي پورت 0 رو به غير از پين p0.14 رو به ورودي تبديل ميكنه. نميدونم شايد دارم اشتباه ميگم.
    بله من دیباگ کردم دیدم تیک p0.14 برداشته میشه. ولی این سوالمه که این چه کارایی برای ما اینجا داره؟ ما که از 4 پایه p0.15 و p0.16 و p0.17 و p0.18 استفاده می کنیم. این چیکارس!

  9. کاربران : 3 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  10. #25
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    راستي شما براي اين فايل راه انداز(spi.h , spi.c) مثال هم داريد، نميدنم اما يه چيزي به ذهنم رسيد اول ميخوام مطمئن بشم بعد اگه درست بود عنوان ميكنم.
    _____________________________________
    _____________________________________

  11. کاربران : 3 تشکر کرده اند از شما sadmonew برای ارسال این پست سودمند:


  12. #26
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

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

  13. کاربران : 3 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  14. #27
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    فکر کنم را حل منطقیش اینه که یکی یکی بریم جلو . مثلا فقط فایل ارسال بعد ...
    بله مرحله مرحله پيش بريم. منظورتون دستور ارساله ديگه؟ يا؟
    راستي همون مثال پر از Error رو هم بذاريد، بد نيست.
    _____________________________________
    _____________________________________

  15. تشکرها از این نوشته :


  16. #28
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    بله دستور ارسال
    اصل فایل همینه که گذاشتم. فقط یه فایل اصلی داره که از اینها استفاده می کنه
    اینم فایل:
    فايل هاي پيوست شده فايل هاي پيوست شده

  17. کاربران : 3 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  18. #29
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    خوب به نظر شما چيكار كنيم؟
    شما ميگيد كه تابع ارسال رو توضيح بديم در واقع هدف اصلي اين باشه كه دقيقا كار هر كدوم از رجيستر هارو يا بگيريم و اينكه براي دستور ارسال دقيقا چه رجيسترهايي رو بايد برنامه ريزي كنيم. بعد يه مثال هم در آخر كار براش مي نويسيم.
    _____________________________________
    _____________________________________

  19. کاربران : 2 تشکر کرده اند از شما sadmonew برای ارسال این پست سودمند:


  20. #30
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadmonew نمایش پست ها
    خوب به نظر شما چيكار كنيم؟
    شما ميگيد كه تابع ارسال رو توضيح بديم در واقع هدف اصلي اين باشه كه دقيقا كار هر كدوم از رجيستر هارو يا بگيريم و اينكه براي دستور ارسال دقيقا چه رجيسترهايي رو بايد برنامه ريزي كنيم. بعد يه مثال هم در آخر كار براش مي نويسيم.
    هر کدوم ما را به هدفمون برسنه فرقی نمی کنه
    اگه اولی را بخواهیم انجام بدیم می خواهیم دستور :
    کد:
    SPISend(data)
    را راه بندازیم. در تابع اصلی از این دستور استفاده شده. تابع آن هم اینه:
    کد:
    void SPISend( BYTE buf)
    {
      BYTE Dummy;
      
      IOCLR0 |= 0x4000;
      S0SPDR = buf;
      while(0==(S0SPSR&0x80));
      IOSET0 |= 0x4000;
      Dummy = S0SPDR;        /* Flush the RxFIFO */
      Dummy = Dummy;        /* ·ÀÖ¹±àÒëÆ÷±¨´í */
    
      return; 
    }
    موارد ابهام اینهاست:
    این چیه! : BYTE Dummy
    ما با پایه 14 چیکار داریم؟ IOSET0 |= 0x4000
    اگه ارسال می کنیم چرا رجیستر داده را می خونیم؟ Dummy = S0SPDR
    البته در پست 17 کتابخونه آقای عبداللهی که گذاشتند هم مورد سوال را گفته ام.

  21. #31
    کاربر فعال esi_52000 آواتار ها
    تاریخ عضویت
    Oct 2009
    نام
    اسماعیل طاهری
    نوشته ها
    365
    تشکر
    220
    تشکر شده 943 بار در 200 پست

    پیش فرض

    داداش مهدی.به نظر من بدونیم کار رجیسترها چیه خیلی عالیه.هر چند در عمل ممکنه زیاد کاری باهاش نداشته باشیم(چون همواره از لایبری استفاده میکنیم)ولی خوب واسه کار با میکرو های دیگه کمکمون میکنه.چون بالاخره همشون از رجیسترهای مشابه استفاده میکنن.بازم میگم دمت گرم داداشی.منتظر دومیش هستییییییییییییییییم

  22. کاربران : 2 تشکر کرده اند از شما esi_52000 برای ارسال این پست سودمند:


  23. #32
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    ...موارد ابهام اینهاست:
    این چیه! : Byte dummy
    ما با پایه 14 چیکار داریم؟ ioset0 |= 0x4000
    ...
    نميدونم شايد اين راه انداز رو براي سخت افزار خاصي نوشتن كه تو اون سخت افزار لازمه از پين 14 پورت صفر استفاده كنن.
    _____________________________________
    _____________________________________

  24. تشکرها از این نوشته :


  25. #33
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    ...موارد ابهام اینهاست:
    این چیه! : Byte dummy
    اگه ارسال می کنیم چرا رجیستر داده را می خونیم؟ dummy = s0spdr
    ...
    البته فكر ميكنم اين خط از برنامه براي اينه كه به ما بگه ديتا درست ارسال شده يا نه؟!
    _____________________________________
    _____________________________________

  26. تشکرها از این نوشته :


  27. #34
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    حالا پایه 14 مهم نیست. اصل مطلب نحوه ارسال است که چگونه باید انجام شود.

  28. تشکرها از این نوشته :


  29. #35
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    سلام علیکم خوبی بهتره شما روی مبحث بافر 8 بایتی دریافت و ارسال رابط ssp هم کار کنی...
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  30. #36
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    ببخشید سوالم ناشیانه س ولی این سیمولینک کیل ار کجا باز میشه ؟ تو کدوم قسمتشه؟

  31. #37
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    پیکربندی:
    از پایه p0.15 برای کلاک SCK و از پایه p0.16 برای انتخاب اسلیو (SSEL) و از پایه p0.17 و p0.18 به ترتیب برای MISO و MOSI استفاده می کنیم:
    کد:
       /* Port 0.15 SPI SCK, port0.16 uses GPIO SPI_SEL, port0.17 MISO, port0.18 MOSI */
      PINSEL0 |= 0xC0000000;    // 1100 0000 0000 0000 0000 0000 0000 0000
      PINSEL1 |= 0x0000003C;    // 0000 0000 0000 0000 0000 0000 0011 1100


    دقت شود که این جا پایه p0.16 در مد GPIO می باشد. برای همین 00 قرار می گیرد. اگر می خواستیم در حالت SSEL باشد 11 قرار می دادیم که بدین ترتیب داشتیم :
    کد:
      PINSEL1 |= 0x0000003F;    // 0000 0000 0000 0000 0000 0000 0011 1111
    خوب حالا یک سوال: کی پایه 16 را در مد GPIO و چه موقع در مد SSEL قرار می دهیم؟


    میشه بگید چرا پایه های P0.15 و P0.16 v رو در حالت GPIO قرار دادین ؟

    مگه اولی پایه 15 نباید به عنوان SCK به کار بره ؟ و مقدار PINSEL0 براش 11 باشه ؟
    همین طور برای پایه 16 که باید در حالت SSEL باشه و مقدار 11 رو بریزیم توی PINSEL0 مربوطه؟

  32. #38
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    استفاده از رجیستر وضعیت (SPSR) :
    برای ارسال و دریافت باید از این رجیستر استفاده کنیم. دو کار می توانیم انجام دهیم . یا از بیت وقفه استفاده نکنیم و یا استفاده بکنیم. برنامه هایی که من دیدم اینهاست:
    اگه استفاده بکنیم :
    کد:
      unsigned int SPI0(unsigned int val)
      {
      unsigned int received=0;
      S0SPDR=val;
      while( !(S0SPSR & SPIF)); //wait for transfer to be completed
      received=S0SPDR;
      return(received);
      }

    آقای عبدالهی یه توضیحی میدید این ارسال میکنه یا دریافت!؟ آخه هم یه چیزی میریزه در S0SPDR هم از S0SPDR میخونه.
    و اگه از بیت وقفه نکنیم:
    کد:
                while(1)
                {
                         for(i=0;i<8;i++){
                         S0SPDR = x[i];
                         while(!(S0SPSR & 0x80)); //wait for transfer to be compeleted
                         for(j=0;j<1000000;j++);
                         }
                }

    خوب یکی میگه اون 0x80 کارش چیه؟ (نیست سوال قبلی ها را جواب دادید ، اینم روش!!)


    0X80 شماره بیت SPIF در رجیستر SPSR هست که منم اول تو برنامم نوشته بود SPIF ولی خطا گرفت که با نوشتن 0X80 بر طرف شد

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

  33. #39
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    آقایون اساتید سلام

    چرا کسی جواب سوال منو نمیده ؟

    اگه پایه p0.16 رو با رجیستر pinsel0 در حالت ssel قرار بدیم ، باز هم میشه که مقدار اون رو در خروجی تغییر داد ؟

    من برای کار با آیسی صدای isd4004 این رو میپرسم

  34. #40
    کاربر فعال esi_52000 آواتار ها
    تاریخ عضویت
    Oct 2009
    نام
    اسماعیل طاهری
    نوشته ها
    365
    تشکر
    220
    تشکر شده 943 بار در 200 پست

    پیش فرض

    نقل قول نوشته اصلی توسط hamidchi نمایش پست ها
    آقایون اساتید سلام

    چرا کسی جواب سوال منو نمیده ؟

    اگه پایه p0.16 رو با رجیستر pinsel0 در حالت ssel قرار بدیم ، باز هم میشه که مقدار اون رو در خروجی تغییر داد ؟

    من برای کار با آیسی صدای isd4004 این رو میپرسم
    سلام دوست عزیز .من خوذم با 2378 کار نمیکنم و با 1768 کار میکنم.
    در حالت کلی همه سعی میکنن کار پایه ssel رو به برنامه واگذار نکنن و خوذشون اونو کنترل کنن. من خوذم هم با وجود اینکه با ذستورات cmsis کار میکنم اما بازم این پایه رو در حالت gpio نگه میدارم و خوذم کنترلش میکنم.شما میتونیذ این کار رو نکننین و کنترل ائن رو به برنامه بسپرین.انتخاب با شماست دااشم

  35. کاربران : 2 تشکر کرده اند از شما esi_52000 برای ارسال این پست سودمند:


صفحه 2 از 3 نخستنخست 123 آخرینآخرین

موضوعات مشابه

  1. RTC on LPC2378
    توسط shayanmelody در انجمن LPC series (NXP)
    پاسخ: 23
    آخرين نوشته: 02-04-2014, 18:49
  2. لطفا جواب بدید ( فوری )(lpc2378)
    توسط yamini در انجمن LPC series (NXP)
    پاسخ: 0
    آخرين نوشته: 03-01-2012, 19:56
  3. بررسی وقفه پورت سریال lpc2378
    توسط mzarkoob در انجمن LPC series (NXP)
    پاسخ: 14
    آخرين نوشته: 18-12-2011, 10:06
  4. lpc2378
    توسط hamed20200 در انجمن LPC series (NXP)
    پاسخ: 6
    آخرين نوشته: 28-07-2011, 13:39
  5. آمادگی برای lpc2378
    توسط t.o.e در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 01-07-2011, 22:40

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •