اطلاعیه

Collapse
No announcement yet.

حداکثر سرعت ADC در STM32F103

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

    #16
    پاسخ : حداکثر سرعت ADC در STM32F103


    uint32_t vv1[1000];
    HAL_ADC_Start_DMA(&hadc1,(uint32_t *)vv1,1000);

    این نباید خطا داشته باشه!

    دلیل: ادغام دو پست برای جلوگیری از اسپم

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

    اون قبلی رو هم میگه
    argument of type uint_t32(^)[1000] is incompatible with parameter of type uint_t32
    منظورم این بود یعنی فعلا میانگین بیخیال!

    sprintf(str,"v1=%0.2f",((float)vv1[0]/4095)*3.3);
    جدیدترین ویرایش توسط Faateh; ۰۰:۰۵ ۱۳۹۷/۰۴/۰۹.

    دیدگاه


      #17
      پاسخ : حداکثر سرعت ADC در STM32F103

      نوشته اصلی توسط Faateh نمایش پست ها

      uint32_t vv1[1000];
      HAL_ADC_Start_DMA(&hadc1,(uint32_t *)vv1,1000);

      این نباید خطا داشته باشه!

      دلیل: ادغام دو پست برای جلوگیری از اسپم


      منظورم این بود یعنی فعلا میانگین بیخیال!

      sprintf(str,"v1=%0.2f",((float)vv1[0]/4095)*3.3);
      کار میکنه ولی اعدادی که نشون میده یه مقدار درهمه و طولانی!
      میشه توضیح بدین معنی اون uint32_t* چیه؟
      همچنین اینکه داده ها دارن چطوری توی متغیر ذخیره میشن؟
      ................Fx7SAM................

      دیدگاه


        #18
        پاسخ : حداکثر سرعت ADC در STM32F103

        اگر کار کرد و عددهای ADC درست نبود ازاین استفاده کنید!

        uint16_t vv1[1000];
        HAL_ADC_Start_DMA(&hadc1,(uint32_t *)vv1,1000);

        دیدگاه


          #19
          پاسخ : حداکثر سرعت ADC در STM32F103

          نوشته اصلی توسط Faateh نمایش پست ها
          اگر کار کرد و عددهای ADC درست نبود ازاین استفاده کنید!

          uint16_t vv1[1000];
          HAL_ADC_Start_DMA(&hadc1,(uint32_t *)vv1,1000);
          خیلی ممنونم
          الان درست نشون میده
          میشه توضیح بدین که الان چی داره میشه؟
          من خودم فکر میکنم که داره هر هزار تا خروجی میره تو این متغیر؛و هر هزار تا که رفت یه وقفه داریم
          اما چرا متغیر رو از اول اشاره گر تعریف نکردیم ؟
          و اینکه برای میانگین گیری از هزار تا داده باید چه کرد؟!
          ................Fx7SAM................

          دیدگاه


            #20
            پاسخ : حداکثر سرعت ADC در STM32F103

            نوشته اصلی توسط سیدعلی.م نمایش پست ها
            کار میکنه ولی اعدادی که نشون میده یه مقدار درهمه و طولانی!
            میشه توضیح بدین معنی اون uint32_t* چیه؟
            همچنین اینکه داده ها دارن چطوری توی متغیر ذخیره میشن؟
            کار میکنه یعنی سرعت نمونه برداری چند هست؟

            همچنین اینکه داده ها دارن چطوری توی متغیر ذخیره میشن؟

            داده اول در vv1 صفر بعد vv1 یک و ... تا به 1000 برسه و به شما اینتراپت میده و عدد بعدی رو در vv1 صفر قرار میده!

            میشه توضیح بدین معنی اون uint32_t* چیه؟
            این یک تبدیل نوع در c هست، بعضی کامپایلر ها ایراد میگیرن

            دیدگاه


              #21
              پاسخ : حداکثر سرعت ADC در STM32F103

              نوشته اصلی توسط Faateh نمایش پست ها
              کار میکنه یعنی سرعت نمونه برداری چند هست؟
              Woooooooooooooooooooooooooooooooooooooow!!!
              سرعت یک مگاسمپله!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

              دیدگاه


                #22
                پاسخ : حداکثر سرعت ADC در STM32F103

                نوشته اصلی توسط سیدعلی.م نمایش پست ها
                خیلی ممنونم
                الان درست نشون میده
                میشه توضیح بدین که الان چی داره میشه؟
                من خودم فکر میکنم که داره هر هزار تا خروجی میره تو این متغیر؛و هر هزار تا که رفت یه وقفه داریم
                اما چرا متغیر رو از اول اشاره گر تعریف نکردیم ؟
                و اینکه برای میانگین گیری از هزار تا داده باید چه کرد؟!
                در مورد
                من خودم فکر میکنم که داره هر هزار تا خروجی میره تو این متغیر؛و هر هزار تا که رفت یه وقفه داریم
                درسته

                اما چرا متغیر رو از اول اشاره گر تعریف نکردیم ؟
                طول لازم داره وگر نه سیستم به هم میریزه، در واقع ادرس به تابع پاس داده شده

                و اینکه برای میانگین گیری از هزار تا داده باید چه کرد؟!
                کد:
                int i;
                
                
                vsum = 0;
                for(i =0; i<1000; i++)
                	vsum = vv1[i]+vsum;[INDENT][FONT=inherit]vsum = vsum /1000;
                [/FONT][COLOR=#222222][FONT=Yekan][/FONT]
                کد:
                [FONT=inherit]uint32_t sum = 0;
                [/INDENT]


                [/FONT][/COLOR]

                دیدگاه


                  #23
                  پاسخ : حداکثر سرعت ADC در STM32F103

                  نوشته اصلی توسط Faateh نمایش پست ها
                  در مورد


                  کد:
                  [/FONT][/COLOR][FONT=inherit]uint32_t sum = 0;[/FONT][/INDENT]int i;
                  
                  
                  vsum = 0;
                  for(i =0; i<1000; i++)
                      vsum = vv1[i]+vsum;[INDENT][FONT=inherit]vsum = vsum /1000;
                  [/FONT][/INDENT]


                  [/FONT][/COLOR][/RIGHT]
                  درسته
                  اما راه سریعتری نداره؟
                  خیییییییلی ممنونم
                  دیگه فکر کنم بعد این پست بیشتر وقتونو نگیرم بهتره
                  ممنون
                  شب خوش
                  ................Fx7SAM................

                  دیدگاه


                    #24
                    پاسخ : حداکثر سرعت ADC در STM32F103

                    شما چطوری سرعت ADC رو در مد DMA اندازه گرفتین؟ منظورم همون یک مگاسمپل هستش

                    دیدگاه


                      #25
                      پاسخ : حداکثر سرعت ADC در STM32F103

                      نوشته اصلی توسط Hesam_M نمایش پست ها
                      شما چطوری سرعت ADC رو در مد DMA اندازه گرفتین؟ منظورم همون یک مگاسمپل هستش
                      همونطور که بالاتر گفته شده،پس از اینکه هزار بار نمونه برداری شد و به حافظه منتقل شد توسط DMA یک وقفه رخ میده
                      در این وقفه ما متغیر رو بعلاوه هزار میکنیم و روی السیدی نشون میدیم
                      ................Fx7SAM................

                      دیدگاه


                        #26
                        پاسخ : حداکثر سرعت ADC در STM32F103

                        نوشته اصلی توسط سیدعلی.م نمایش پست ها
                        همونطور که بالاتر گفته شده،پس از اینکه هزار بار نمونه برداری شد و به حافظه منتقل شد توسط DMA یک وقفه رخ میده
                        در این وقفه ما متغیر رو بعلاوه هزار میکنیم و روی السیدی نشون میدیم
                        پس چون بعد از هزار بار نمونه برداری یک وقفه DMA میده پس سرعتش یکهزارم میشه درسته؟
                        پس سرعت ماکزیمم وقتی بدست میاد که عدد 1 بجای هزار قرار داده بشه تا سرعت نمونه برداری عین دیتاشیت بشه البته من نتونستم عددی کمتر از 10 بزارم چون جواب نمی داد. اگرم مجبور باشی عدد بالا بزاری به سرعت بالا دست پیدا نمی کنی. یک جور تناقضه

                        دیدگاه


                          #27
                          پاسخ : حداکثر سرعت ADC در STM32F103

                          نوشته اصلی توسط Hesam_M نمایش پست ها
                          پس چون بعد از هزار بار نمونه برداری یک وقفه DMA میده پس سرعتش یکهزارم میشه درسته؟
                          پس سرعت ماکزیمم وقتی بدست میاد که عدد 1 بجای هزار قرار داده بشه تا سرعت نمونه برداری عین دیتاشیت بشه البته من نتونستم عددی کمتر از 10 بزارم چون جواب نمی داد. اگرم مجبور باشی عدد بالا بزاری به سرعت بالا دست پیدا نمی کنی. یک جور تناقضه
                          در کد نویسی روی میکرو ها یکی از بدترین اتفاقات اینتراپت هست، اینتراپت زیاد میکرو را از کار می اندازد. برای کاهش اینتراپت از DMA استفاده میشود.
                          DMA تعداد 1000 نمونه را دریافت و در یک بافر قرار داده و تعداد اینتراپت را در این حالت 1/1000 می کند. اینتراپت مشکلات زیادی برای سیستم ایجاد میکند سعی کنید در کاری که با سرعت بالا انجام میشود حداقل اینتراپت زده شود( در این کار عملا ADC به سرعت 1 مگا سمپل می رسد درثانیه 1000 اینتراپت که هر بار 1000 داده آمده است)
                          برای مثال پورت LAN مانند پورت سریال هیچگاه به ازای هر بایت یک اینتراپت تولید نمیکند، بلکه آن را با پکت های 1000 و خورده ای بایتی جا به جا میکنند، کلا پردازنده های با این نوع داده ها راحت تر وسریعتر کار میکنند.

                          دیدگاه


                            #28
                            پاسخ : حداکثر سرعت ADC در STM32F103

                            نوشته اصلی توسط Faateh نمایش پست ها
                            در کد نویسی روی میکرو ها یکی از بدترین اتفاقات اینتراپت هست، اینتراپت زیاد میکرو را از کار می اندازد. برای کاهش اینتراپت از DMA استفاده میشود.
                            DMA تعداد 1000 نمونه را دریافت و در یک بافر قرار داده و تعداد اینتراپت را در این حالت 1/1000 می کند. اینتراپت مشکلات زیادی برای سیستم ایجاد میکند سعی کنید در کاری که با سرعت بالا انجام میشود حداقل اینتراپت زده شود( در این کار عملا ADC به سرعت 1 مگا سمپل می رسد درثانیه 1000 اینتراپت که هر بار 1000 داده آمده است)
                            برای مثال پورت LAN مانند پورت سریال هیچگاه به ازای هر بایت یک اینتراپت تولید نمیکند، بلکه آن را با پکت های 1000 و خورده ای بایتی جا به جا میکنند، کلا پردازنده های با این نوع داده ها راحت تر وسریعتر کار میکنند.
                            اوکی پس اینطور پس خوشه ای باید دیتا رو گرفت و روش عملیات انجام داد.

                            سوالی که من دارم اینه که ADC میکرو STM32F103 طبق CubemX میتونه در مد Dual هم کار کنه. آیا در این شرایط سرعت نمونه برداریش دو برابر میشه؟
                            جدیدترین ویرایش توسط Hesam_M; ۱۳:۳۵ ۱۳۹۷/۰۴/۱۲.

                            دیدگاه


                              #29
                              پاسخ : حداکثر سرعت ADC در STM32F103

                              اصولا باید دو برایر بشود ولی تست نکردم.

                              دیدگاه


                                #30
                                پاسخ : حداکثر سرعت ADC در STM32F103

                                نوشته اصلی توسط Faateh نمایش پست ها
                                اصولا باید دو برایر بشود ولی تست نکردم.
                                یک مورد دیگه هم اینه که وقتی در مد DMA فرضا هزارتا دیتا می گیریم و اگر فرضا بخواهیم روی هر کدوم از این هزارتا حساب کنیم تک تک دیتاها زیاد از ثبات برخوردار نیستند مگر میانگین اشونو بگیریم. علت بی ثباتی در نمونه برداری چیه؟ من از برد آموزشی استفاده می کنم بنابراین نمی تونه مشکل سخت افزاری باشه

                                دیدگاه

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