اطلاعیه

Collapse
No announcement yet.

محدودیت stm32f103 تا 56 مگاهرتز

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

    محدودیت stm32f103 تا 56 مگاهرتز

    با سلام
    من تازگی ها به stm32 رو آوردم و یک عدد هدربرد سایت را تهیه کردم تا با آن شروع کنم و یک برنامه تست چشمک زن با هاش نوشتم. اما در کمال تعجب می بینم که تا فرکانس 56 مگاهرتز بیشتر کارنمی کنه! :eek: در حالی که تو دیتاشیت نوشته 72 مگاهرتز.
    تازه این فرکانس با اسیلاتور داخلی عمل می کنه با اسیلاتور کریستالی که تا 52 مگاهرتز بیشتر نمی تونم باهاش کار کنم. واقعا موندم.در حالی که این قطعه تو تامین اولین مشخصاتش مونده تو استفاده از امکانات دیگرش چه مشکلاتی پیش خواهد آمد لطفا دوستان کمک کنند.

    #2
    پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

    نوشته اصلی توسط DesignerEng
    با سلام
    من تازگی ها به stm32 رو آوردم و یک عدد هدربرد سایت را تهیه کردم تا با آن شروع کنم و یک برنامه تست چشمک زن با هاش نوشتم. اما در کمال تعجب می بینم که تا فرکانس 56 مگاهرتز بیشتر کارنمی کنه! :eek: در حالی که تو دیتاشیت نوشته 72 مگاهرتز.
    تازه این فرکانس با اسیلاتور داخلی عمل می کنه با اسیلاتور کریستالی که تا 52 مگاهرتز بیشتر نمی تونم باهاش کار کنم. واقعا موندم.در حالی که این قطعه تو تامین اولین مشخصاتش مونده تو استفاده از امکانات دیگرش چه مشکلاتی پیش خواهد آمد لطفا دوستان کمک کنند.
    چطور فرکانس کاری رو اندازه گیری کردید؟
    خروجی ها ماکزیمم میتونند با فرکانس 50 مگاهرتز کارکنند ( این ایده آل هیت و به برنامه نویسی شما هم مربوط میشه)
    هسته میتونه تا 72 مگ هم کار کنه که باید کریستال و pll رو درست تنظیم کنی

    دیدگاه


      #3
      پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

      ممنون از توجهتان
      از طریق بیت های mco تو رجیستر RCC_CFGR میشه خروجی کلاک را فعال کرد و با تنظیم PA8 می توان آن را مشاهده کرد.
      Bits 26:24 MCO: Microcontroller clock output
      Set and cleared by software.
      0xx: No clock
      100: System clock (SYSCLK) selected
      101: HSI clock selected
      110: HSE clock selected
      111: PLL clock divided by 2 selected
      کد:
       RCC_APB2ENR_bit.IOPAEN=1;
       GPIOA_CRH_bit.MODE8=3;
       GPIOA_CRH_bit.CNF8=2;
      من از بابت خروجی کلاک مشکلی ندارم حتی فرکانس های بالاتر هم از میکرو گرفتم. مشکلم اینه که با وقتی خروجی PLL را بیشتر از 56 مگاهرتز می برم دیگر هسته برنامه را اجرا نمی کند. برنامه هم برنامه خیلی ساده چشمک زن هست. خروجی را هم با اسیلوسکوپ اندازه گیری می کنم. برنامه این هست:
      کد:
       char flg='f';
       while(1){
        if(flg=='t'){
        
         GPIOC_ODR_bit.ODR1=0;
         flg='f';
        }
        else{
         GPIOC_ODR_bit.ODR1=1;
         flg='t';
        }
       }

      دیدگاه


        #4
        پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

        البته اینو بگم که تو کلاک بالاتر از 56 تا چند میلی ثانیه برنامه کار می کنه و بعد از اون دیگه کار نمی کنه.

        دیدگاه


          #5
          پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

          کریستال رو چند گذاشتی؟

          دیدگاه


            #6
            پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

            نوشته اصلی توسط ehsanbagheri
            کریستال رو چند گذاشتی؟
            کریستال همان کریستال هدربرد هستش. 8 مگاهرتز

            دیدگاه


              #7
              پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

              نوشته اصلی توسط DesignerEng
              با سلام
              من تازگی ها به stm32 رو آوردم و یک عدد هدربرد سایت را تهیه کردم تا با آن شروع کنم و یک برنامه تست چشمک زن با هاش نوشتم. اما در کمال تعجب می بینم که تا فرکانس 56 مگاهرتز بیشتر کارنمی کنه! :eek: در حالی که تو دیتاشیت نوشته 72 مگاهرتز.
              تازه این فرکانس با اسیلاتور داخلی عمل می کنه با اسیلاتور کریستالی که تا 52 مگاهرتز بیشتر نمی تونم باهاش کار کنم. واقعا موندم.در حالی که این قطعه تو تامین اولین مشخصاتش مونده تو استفاده از امکانات دیگرش چه مشکلاتی پیش خواهد آمد لطفا دوستان کمک کنند.
              دوست عزیز. با عرض سلام.
              تقریبا همه میکروکنترلر هایی که با حافظه کد (فلش) داخلی عرضه میشوند وکلاک آنها بالای 30Mhz است ، به دلیل سرعت پاسخ دهی کم این حافظه ها مجبورند از ترفند هایی برای بالاتر بردن سرعت اجرای دستورات استفاده کنند. عموما بدین صورت که یک باس اختصاصی 64 یا 128 بیتی یا حتی بیشتر به حافظه فلش متصل شده و در هر بار اجرای دستور چند دستور بعدی را نیز واکشی میکنند.
              در این حالت باید زمانی که فرکانس هسته را افزایش میدهید حتما کلاک حافظه کد در حد مجاز ( تقریبا زیر 30Mhz )باقی بماند . و گرنه حافظه فلش پاسخگوی سرعت CPU نبوده و دستورات نامعتبر خواهد شد. در STM32 برای این کار به اصطلاح چند wait state وجود دارد. یعنی به ازای هر wait state متناسب با فرکانس CPU کلاک اعمالی به حافظه فلش بر عدد خاصی تقسیم میشود.
              در دیتاشیت میکروکنترلر بخش مربوط به این بحث رو دنبال کنید.

              دیدگاه


                #8
                پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

                نوشته اصلی توسط e.fazli
                دوست عزیز. با عرض سلام.
                تقریبا همه میکروکنترلر هایی که با حافظه کد (فلش) داخلی عرضه میشوند وکلاک آنها بالای 30Mhz است ، به دلیل سرعت پاسخ دهی کم این حافظه ها مجبورند از ترفند هایی برای بالاتر بردن سرعت اجرای دستورات استفاده کنند. عموما بدین صورت که یک باس اختصاصی 64 یا 128 بیتی یا حتی بیشتر به حافظه فلش متصل شده و در هر بار اجرای دستور چند دستور بعدی را نیز واکشی میکنند.
                در این حالت باید زمانی که فرکانس هسته را افزایش میدهید حتما کلاک حافظه کد در حد مجاز ( تقریبا زیر 30Mhz )باقی بماند . و گرنه حافظه فلش پاسخگوی سرعت CPU نبوده و دستورات نامعتبر خواهد شد. در STM32 برای این کار به اصطلاح چند wait state وجود دارد. یعنی به ازای هر wait state متناسب با فرکانس CPU کلاک اعمالی به حافظه فلش بر عدد خاصی تقسیم میشود.
                در دیتاشیت میکروکنترلر بخش مربوط به این بحث رو دنبال کنید.
                تشکر فراوان
                با این حساب فکر کنم که حتی فلش میکرو را اورکلاک هم کرده بودم :biggrin:
                رفرنس منوال را نگاه کردم، رجیسترFLASH_ACR برای تنظیم wait state هستش.
                فعلا دسترسی به میکرو ندارم اما بعد از آزمایش نتیجه را می گم.
                نکته دیگری نداره؟ :redface:

                دیدگاه


                  #9
                  پاسخ : محدودیت stm32f103 تا 56 مگاهرتز

                  مشکل حل شد.برای استفاده از حداکثر کلاک(مجاز) باید latency از رجیستر flash_acr را برابر 2 قرار دهیم.

                  دیدگاه

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