اطلاعیه

Collapse
No announcement yet.

spi در بسکام

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    spi در بسکام

    سلام
    دوستان
    من می خوام توی بسکام با میکرو 128 از طریق پورتهای spi با یک ماژول ارتباز برقرار کنم می تونم به پرسم از طریق چه دستوراتی در بس کام میشه به این پورت ها دسترسی داشت ؟؟؟؟ و سوال دیگه اینکه اینجوی که من متوجه شدم توی spi باید همیشه یه مستر داشته باشیم و یک Slave آیا این درسته که همیشه مستر ارسال میکنه و Slave دریافت میکنه پس تکلیف موقعی که Slave بخواد دیتا ارسال کنه چی میشه ؟؟
    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

    #2
    پاسخ : spi در بسکام

    بهترین مثال برای SPI همون مثال BASCOM هست
    همیشه توی ارتباط SPI یه MASTER هست که دستورات رو به SLAVE میفرسته
    اگر بخوای از SLAVE دیتا دریافت کنی باید تعداد بایت ها رو بدونی
    و به ازای تعداد بایت از دستور SPIMOVE استفاده کنی
    با این دستور MASTER همزمان با فرستادن اطلاعات ، از SLAVE به تعداد بایت های فرستاده شده اطلاعات میگیره
    با این البته نیازی نست دیتای خاصی برای SLAVE بفرستی فقط کافیه بدونی چند بایت میخوای بخونی

    موفق باشی

    دیدگاه


      #3
      پاسخ : spi در بسکام

      از ژاسختون ممنونم اگه میشه همون مثال بس کام که من هم ژیداش نکردم رو اینجا با هم تحلیل کنیم استاد
      معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

      دیدگاه


        #4
        پاسخ : spi در بسکام

        مثال Master
        [pre]

        Dim B As Byte
        Dim A(10) As Byte

        Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128

        $regfile = "m128def.dat"
        Spiinit
        B = 5
        Spiout A(1) , B

        Spiin A(1) , B

        A(1) = Spimove(a(2))
        End
        [/pre]


        چند خط بیشتر نیست اگر جاییش مبهم بود بوگو تا توضیح بدم


        دیدگاه


          #5
          پاسخ : spi در بسکام

          اولا ممنون از لطف بی شمار حضرت عالی
          دوما من یه مشکل دارم باید جزء به جزء مطالب رو بفهمم و شاید شما رو تا 2-3 پست دیگه به زحمت بندازم
          اولا چرا متغیر B رو تعریف کردیم
          دوما چرا آرایه A رو تعریف کردیم
          توی کانفیگ Spi این اصطلاحات چیه و چه مقادیری به خودشون میتونن بگیرن مثل

          Spi = Hard
          Interrupt = Off
          Data Order = Msb
          Master = Yes
          Polarity = Low
          Phase = 0
          Clockrate = 128
          دقیقا می خوام بدونم که این عبارت چه معنی دارند و چه کاربردی های میشه از آنها داشت
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


            #6
            پاسخ : spi در بسکام

            اصلا زحمتی نیست دوست عزیز خوشحال میشم کمک کنم
            Spi = Hard :
            در Bascom به دو صورت میشه SPI تعریف کرد یکی با استفاده از SPI سخت افزاری خود میکرو و یکی به صورت نرم افزاری و با استفاده از تایمر
            این دستور SPI پیش فرض رو SPI سخت افزاری موجود در میکرو در نظر میگیره
            Interrupt = Off :
            این دستور برای استفاده از اینتراپت SPI هست اگر اینتراپت رو فعال کنید هنگام ارسال و دریافت اطلاعات (فقط در حالت سخت افزاری)
            یک اینتراپت دریافت میکنین
            Data Order = Msb :
            همان طورکه میدونین SPI یک ارتباط سریال هست پس باید ترتیب فرستادن اطلاعات مشخص بشه، این دستور مشخص میکنه که اول بیت با ارزش ببشتر ارسال بشه یا کمترین ارزش این دستور خیلی مهمه شما باید بدونین اطلاعاتی که دستگاه Slave میگیره و یا Master میفرسته بچه صورت هست(اول کدام بیت فرستاده میشه)
            اگر برای ارتباط دو میکرو میخواید از SPI استفاده کنید ترتیب فرستادن اطلاعات هر دو تا میکرو(MASTER و SLAVE) باید یکی باشه
            Master = Yes :
            این دستور مشخص میکنه این میکرو MASTER است یا SLAVE
            Polarity = Low :
            سطح منطقی پایه SCK را وقتی اطلاعاتی رد و بدل نمیشه مشخص میکنه (هر دو میکرو باید یکی باشه)

            Phase = 0 :
            این دستور برای مشخص کردن Latch شدن اطلاعات با لبه بالا رونده یا پایین رونده SCK است(باز هم برای هر دو میکرو باید یکی باشه)
            و Clockrate = 128 :
            این برای تعیین سرعت انتقال دیتا ست و مشخص میکنه فرکانس انتقال اطلاعات چه کسری از فرکانس نوسان ساز میکرو هست

            موفق باشی

            دیدگاه


              #7
              پاسخ : spi در بسکام

              :nerd: استاد ممنون اط لطف شما خیلی عالی بود خیلی کمکک کرد فقط این چهار خط موند


              Dim B As Byte
              Dim A(10) As Byte
              Spiinit
              B = 5
              Spiout A(1) , B

              Spiin A(1) , B

              A(1) = Spimove(a(2))


              معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

              دیدگاه


                #8
                پاسخ : spi در بسکام

                خوب دستور DIM برای معرفی یه متغیر استفاده میشه و کلمه بعد از AS نشون دهنده نوع متغیر ه اگر جلوی متغیر در دون پرانتز عدد نوشته بشه نشون دهنده یه آرایه است از جنس متغیر و به تعداد عدد نوشته شده جلوی متغیر.
                قبل از استفاده از دستورات SPI باید دستور SPIINT رو بزنین با این دستور کاپایلر پایه های میکرو برنامه و رجیستر های داخلی رو برای ارتباط SPI آماده میکنه
                دستور SPIOUT برای ارسال تعداد مشخصی بایت از طرف MASTER به SLAVE استفاده میشه
                مثلا در مثال زیر از آرایه A تعداد B بایت (5) برای MASTER فرستاده میشه اگر این دستور توی SLAVE استفاده بشه میکرو منتظر میمونه تا MASTER اونو بخونه
                دستور SPIIN برای گرفتن تعداد مشخصی بایت از طرف SLAVE به MASTER استفاده میشه
                مثلا در مثال زیر MASTER تعداد B بایت رو از SLAVE میخونه و اونو توی آرایه A قرار میده
                SPIMOVE رو هم قبلا برای دریافت و ارسال همزمان هست درمثال زیر از طرف MASTER بایت A2 برای SLAVE ارسال میشه
                و همزمان یک بایت از جانب SLAVE برای MASTER ارسال میشه و توی متغیر A1 ذخیره میشه

                همیشه دقت داشته باش ماهیت دستور های ارسال و دریافت در MASTER و SLAVE تفاوت داره
                مثلا اگر تو یه اطلاعاتی رو برای MASTER بفرستی و MASTER به جای خوندن اطلاعات روی SLAVE اطلاعات بفرسته، اونوقت اطلاعات SLAVE که برای MASTER فرستاده میشه از بین میره

                موفق باشی

                دیدگاه


                  #9
                  پاسخ : spi در بسکام

                  استاد ممنون از لطف شما واقعا کامل بود
                  یعنی روالی که توی این انجمن خیلی کم اتفاق می افته یعنی اگه یه مطلب رو آمدم می خواد بررسی کنه خیلی منحرف میشه از موضوع شما دقیقا مثل یک کتاب خوب توضیح داداد
                  خیلی چیزا یاد گرفتم حقیقتا من میخوام یه Ic هست به اسم Cs5460a می خوام اینو به یه میکرو به هم وصل کنم این هم دیتاشیت این آی سی اگه منو راهنمائی ممنون میشم خیلی خیلی ممنون میشم این بحث کامل بشه

                  www.cirrus.com/cn/pubs/proDatasheet/CS5460A_F4.pdf
                  معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                  دیدگاه


                    #10
                    پاسخ : spi در بسکام

                    استاد من چی کار کنم با این آی سی کجا رفتی فکر کنم

                    مسافرتی به هر حال من توی این موندم www.cirrus.com/cn/pubs/proDatasheet/CS5460A_F4.pdf

                    چه طور دستورات رو توی مد SPI بفرستم به این چیپ واقعا از اساتید ممنون میشم من چه طور می تونم به این چیپ دستور بفرستم و نتایج این دستورات رو از طریق SPI بخونم
                    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                    دیدگاه


                      #11
                      پاسخ : spi در بسکام

                      سلام دوست عزیز
                      عید شما مبارک
                      ببخشید چند روزی مسافرت بودم نتونستم سر بزنم
                      پست ها رو تازه دیدم

                      دیدگاه


                        #12
                        پاسخ : spi در بسکام

                        خب اول از سخت افزار شروع میکنیم


                        پایه SDI رو به MOSI
                        پایه SDO رو به MISO
                        پایه SCLK رو به SCK

                        وصل میشه


                        دستور config رو این طوری بنویس
                        Spi = Hard
                        Interrupt = Off
                        Data Order = Msb
                        Master = Yes
                        Polarity = Low
                        Phase = 1
                        Clockrate = 128

                        برای فرستادن اطلاعات هم باید از دستور Spiout استفاده کنی

                        البته Clockrate رو میتونی بالاتر هم ببری ولی برای شروع خوبه
                        یادت باشه زمان شروع کار آی سی رو رعایت کنی

                        میدونی کار این آی سی دقیقا چیه؟
                        میتونم بپرسم یخوای باهاش چکار کنی؟

                        دیدگاه


                          #13
                          پاسخ : spi در بسکام

                          مرسی استاد
                          اوال جواب سوال سما
                          این آی سی دقیقا توان مصرف شده رو خیلی دقیق محاسبه میکنه دقیقا چیزیه که توی میتر های دیجیتال ازش استفاده میشه و من هم دقیقا می خوام مقدار توان مصرف شده رو حساب کنم حالا یه سوال البته با عرض شرمندگی آدرس دیتا شیت رو که به تون دادم می دونم باعث زحمت شده ولی عکس گرفتم از صفحات مورد نیاز
                          دقیقا صفحه 39 دیتا شیت اینجوری نوشته


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



                          اگر اشتباه نکنم این دستور داره میگه محاسبات رو شروع به اندازه گیری کنه اون هم توی دو حالت
                          یکی یک سیکل و دیگری درسیکل های پیوسته
                          حالا چند تا سوال دیگه پیش میاد که این که یک بایت بود تکلیف اون چیزی که اون بالا نوشته بود چی میشکه که باید همه دستورات در 3 بایت رجیستر فرستاده شوند
                          حالا سوال دیگه این دستورات رو توی بس کام چه طوری بفرستم و چه عمکردی دارند


                          SYNC0 Command
                          SYNC1 Command
                          Power-Up/Halt
                          Calibration

                          و ارز همه مهمتر این دستوره


                          Register Read/Write


                          داستان این دستورات که به اسم رجیستر داده چیه مثلا من چه طور می تونم این مقدار P رو بخونم یعنی چه دستوری بفرسم و با چه دستوری مقدار خروجی رو بگیرم و از کجا بدونم که منتظر چند بایت باشم خصوصا در دستورات اخیر چین خیلی برام مهمه این مقدار مقدار بالا رو بخونم رو ی ای سی دی نمایش بدهم مثل مقدار P I V E








                          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                          دیدگاه


                            #14
                            پاسخ : spi در بسکام

                            دوست عزیز
                            این آی سی به صورت تخصصی برای تراس های افزاینده - کاهنده صنعتی با هسته متحرک جهت استاپلایزر استفاده میشه
                            امیدوارم بتونه اون کاری رو که میخواید براتون انجام بده

                            در مورد ارتباط SPI باید بگم که دستورات این آی سی به صورت تک بایت هست و دستوراتی که برای خواندن و نوشتن رجستر های داخلی آی سی استفاده میشه به صورت 3 بایت هست

                            مثلا برای دستوراتی مانند POWER DOWN کافی است که شما تنها یک بایت حاوی کد این دستور رو برای آی سی بفرستید

                            ولی برای دستوراتی مانند خواندن Cycle Count Register که یکی از رجیسترهای داخلی هست
                            ابتدا باید دستور آن را برای آی سی بفرستید (1 بایت) بعد میتوانید طی 3 بایت Cycle Count Register رو بخونید

                            برای نوشتن نیز مشابه بالا عمل میکنید با این تفاوت که بعد از فرستادن دستور 1 بایتی اطلاعات را طی 3 بایت برای رجیستر داخلی میفرستید

                            برای فرستادن و گرفتن اطلاعات به صورت 3 بایت پشت سر هم در BASCOM میتوانید از یک آرایه ست تایی استفاده کنید

                            dim r(3)as byte
                            spiin r(1),3
                            spiout r(1),3

                            دیدگاه


                              #15
                              پاسخ : spi در بسکام

                              واقعا از لطف شما بسیار ممنونم من دارم سعی می کنم میکرو و این آی سی رو به هم دیگه وصل کنم اگه اجازه بدید شما رو در جریان کار میگزارم
                              معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                              دیدگاه

                              لطفا صبر کنید...
                              X