اطلاعیه

Collapse
No announcement yet.

STM32F103 ADC

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

    STM32F103 ADC

    لطفا در باره ADC و نحوه کار کردن با ADC و نمونه کدهای آن توضیح دهید
    میخوام سیگنالی با فرکانس 1200هرتز و 2200هرتز رو با ACD بخونم و در یه ریجیستر نگه دارم و در حافظه ذخیره کنم
    اگه ممکنه راهنمایی کنید
    ممنون
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
    فروش اسيلوسکوپ GWinstek GOS-630FC

    #2
    پاسخ : STM32F103 ADC

    سلام دوست من
    اینم یه برنامه کار با adc که مقدار رو میخونه و usart نمایش میده ... با استفاده از هدر های استاندارد ... برنامه خیلی آسونه ...

    http://s3.picofile.com/file/7385869565/adc.rar.html

    موفق باشی
    ARM....

    دیدگاه


      #3
      پاسخ : STM32F103 ADC

      ممنونم
      نگاش میکنم اگه باز مشکلی داشتم مزاحم میشم
      آخه یه پروژه برداشتم ممکنه بازم نیاز به کمکتون داشته باشم
      ممنون :wow:
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
      شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
      فروش اسيلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #4
        پاسخ : STM32F103 ADC

        آقای صادقی من برنامه نمونتونو نگاه کردم اما خیلی جاهاشو درست متوجه نمیشم و این که دقیقا نمیدونم کی ADC شروع به خوندن سیگنال آنالوگ میکنه و مقدار خروجی رو کجا میریزه
        مشکل دومم اینه که این مقدار رو چجوری توی حافظه ذخیره کنم
        ممکنه یه برنامه ساده با Keil که مثلا ADC1 رو فعال کنه دیتا رو بخونه ، توی یه رجیستر بریزه و رجیسترو یه جایی از حافظه ذخیره کنه برام بنویسید؟
        و یه سوال دیگه اینکه بدون داشتن سخت افزار آیا میتونم از امکانات دی باگ Keil ببینم که ADC داره چجوری کار میکنه و دیتا کجا میره ؟
        بازم ممنونم
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
        فروش اسيلوسکوپ GWinstek GOS-630FC

        دیدگاه


          #5
          پاسخ : STM32F103 ADC

          دوست من این برنامه همون چیزی هست که تو میخوای ....
          بذار یکم توضیح بدم ....
          ابتدای برنامه تابع ()ADC_Configuration فراخوانی شده که مربوط به پیکربندی ADC هستش ...
          حالا برو پایین برنامه تو خود تابع ...
          هر کاری که انجام شده توضیحشم داده شده مثلا :
          /* Enable ADC1 reset calibaration register */
          ADC_ResetCalibration(ADC1);
          این برای ریست کردن ADC1 ، و برای شروع به تبدیل از
          /* Start ADC1 Software Conversion */
          ADC_SoftwareStartConvCmd(ADC1, ENABLE);
          یعنی زمانی که تو خود تابع MAIN این تابع ADC_Configuration فراخانی میشه هم پیکربندی انجام میشه هم شروع به تبدیل میکنه ...

          خوب مقدار تبدیل شده هم داخل ADC_ConvertedValue که ریخته تو متغییر AD_value که از نوع FLOAT هستش

          باید توضیحاتی که داده شده رئ بیشتر بخونی ...

          موفق باشی
          ARM....

          دیدگاه


            #6
            پاسخ : STM32F103 ADC

            خیلی لطف کردی
            مرسی زیاد
            بازم مزاحمت میشم
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
            شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
            فروش اسيلوسکوپ GWinstek GOS-630FC

            دیدگاه


              #7
              پاسخ : STM32F103 ADC

              D:\Keil 420\ARM\INC\ST\STM32F10x\stm32f10x.h(80): error: #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
              Target not created

              اقا من این خطا رو میگیرم
              مشکل کجاس؟!
              چجوری باید مقدار و مدل حافظه میکرو رو برای برنامه مشخص کنم؟!
              توی Target مدل STM32F103RB رو برای میکروی STM32F103RBT6 که کار میکنم انتخاب کردم ، دیگه مشکلش چییه؟!
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
              فروش اسيلوسکوپ GWinstek GOS-630FC

              دیدگاه


                #8
                پاسخ : STM32F103 ADC

                آقای صادقی من یه مشکل دیگه هم دارم
                میخوام یه پروژه ساده (کپی قسمتی از برنامه نمونه ADC خودتون) رو توی Keil بسازم

                /**--------------File Info---------------------------------------------------------------------------------
                ** File name: main.c
                ** Descriptions: The ADC application function
                **
                **--------------------------------------------------------------------------------------------------------
                */

                /* Includes ------------------------------------------------------------------*/
                #include "stm32f10x.h"
                #include "systick.h"
                #include <stdio.h>

                /* Private define ------------------------------------------------------------*/
                #define ADC1_DR_Address ((u32)0x4001244C)

                /* Private function prototypes -----------------------------------------------*/
                void ADC_Configuration(void);

                /* Private variables ---------------------------------------------------------*/
                float AD_value;
                vu16 ADC_ConvertedValue;

                /************************************************** *****************************
                * Function Name : main
                * Description : Main program
                * Input : None
                * Output : None
                * Return : None
                * Attention : None
                ************************************************** *****************************/
                int main(void)
                {

                ADC_Configuration();
                delay_init();
                /* Infinite loop */
                while (1){
                delay_ms(1000); /* delay 1000ms */
                /* Printf message with AD value to serial port every 1 second */
                AD_value = ADC_ConvertedValue;

                }
                }

                /************************************************** *****************************
                * Function Name : ADC_Configuration
                * Description : Configure the ADC.
                * Input : None
                * Output : None
                * Return : None
                * Attention : None
                ************************************************** *****************************/
                void ADC_Configuration(void)
                {
                ADC_InitTypeDef ADC_InitStructure;
                DMA_InitTypeDef DMA_InitStructure;

                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_AFIO, ENABLE);
                /* DMA channel1 configuration ----------------------------------------------*/
                DMA_DeInit(DMA1_Channel1);
                DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
                DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;
                DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
                DMA_InitStructure.DMA_BufferSize = 1;
                DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
                DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
                DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
                DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
                DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
                DMA_InitStructure.DMA_Priority = DMA_Priority_High;
                DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
                DMA_Init(DMA1_Channel1, &DMA_InitStructure);

                /* Enable DMA1 channel1 */
                DMA_Cmd(DMA1_Channel1, ENABLE);

                /* ADC1 configuration ------------------------------------------------------*/
                ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
                ADC_InitStructure.ADC_ScanConvMode = ENABLE;
                ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
                ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
                ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
                ADC_InitStructure.ADC_NbrOfChannel = 1;
                ADC_Init(ADC1, &ADC_InitStructure);

                /* ADC1 regular channel8 configuration */
                ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_55Cycles5);

                /* Enable ADC1 DMA */
                ADC_DMACmd(ADC1, ENABLE);

                /* Enable ADC1 */
                ADC_Cmd(ADC1, ENABLE);

                /* Enable ADC1 reset calibaration register */
                ADC_ResetCalibration(ADC1);
                /* Check the end of ADC1 reset calibration register */
                while(ADC_GetResetCalibrationStatus(ADC1));

                /* Start ADC1 calibaration */
                ADC_StartCalibration(ADC1);
                /* Check the end of ADC1 calibration */
                while(ADC_GetCalibrationStatus(ADC1));

                /* Start ADC1 Software Conversion */
                ADC_SoftwareStartConvCmd(ADC1, ENABLE);
                }


                اینو توی یه فایل C. قرار میدم و همه هدر فایل ها و سوسرس ها و کلا هرچی که تو مثال شما بود رو اضافه میکنم اما کلی خطا میده و کامپایل نمیشه
                چطور میتونم یه پروژه جدید تو keil بسازم و فایل ها و هدر های مورد نیازشو اضافه کنم که خطا نداشته باشه؟!
                درایور شبکه و nRF24L01
                کاتالوگ محصولات
                کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                فروش اسيلوسکوپ GWinstek GOS-630FC

                دیدگاه


                  #9
                  پاسخ : STM32F103 ADC

                  سلام :bye
                  مطمئن شو که لایسنس کیل رو درست نصب کرده باشی .... این خطا رو نباید بگیره من حتی با ورژن 4.1 هم که تست کردم درست بود

                  برای درست کردن یه پروژه جدید باید حتما تمام کتابخونه ها رو در مسیر خاص (از همون پوشه ای که فراخوانی شده) کپی کنی ... به زبون ساده تر حتی نام پوشه ای که کتابخونه ها در اون قرار دارند نباید تغییر کنه ... و اگر هم تغییر کرد باید در داخل برنامه اعمال بشه ...
                  ARM....

                  دیدگاه


                    #10
                    پاسخ : STM32F103 ADC

                    لایسنسش درسته
                    فول کرک شده
                    مشکل از لایبرریها بود که حل شد
                    مرسی
                    درایور شبکه و nRF24L01
                    کاتالوگ محصولات
                    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                    فروش اسيلوسکوپ GWinstek GOS-630FC

                    دیدگاه


                      #11
                      پاسخ : STM32F103 ADC

                      من این برنامه را تست کردم. ورودی ADC پایهآ‌ی PB0 هست. در صورتیکه در تابع GPIO_Configuration پایهآ‌ی PB2 ورودی ADC تنظیم شده!
                      void GPIO_Configuration(void)
                      {
                      GPIO_InitTypeDef GPIO_InitStructure;

                      RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
                      /* Configure PB.02 (ADC Channel8) as analog input -------------------------*/
                      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
                      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
                      GPIO_Init(GPIOB, &GPIO_InitStructure);
                      }



                      م

                      دیدگاه


                        #12
                        پاسخ : STM32F103 ADC


                        نوشته اصلی توسط fatemehjml
                        من این برنامه را تست کردم. ورودی ADC پایهآ‌ی PB0 هست. در صورتیکه در تابع GPIO_Configuration پایهآ‌ی PB2 ورودی ADC تنظیم شده!
                        void GPIO_Configuration(void)
                        {
                        GPIO_InitTypeDef GPIO_InitStructure;

                        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
                        /* Configure PB.02 (ADC Channel8) as analog input -------------------------*/
                        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
                        GPIO_Init(GPIOB, &GPIO_InitStructure);
                        }



                        م
                        اشتباه تایپی باید باشه
                        چون هم توی پیکربندی GPIO و هم ADC پین 0 پورت B پیکربندی شده اگه توجه کنید.

                        با تشکر

                        «پشتکار» «پشتکار» «پشتکار»

                        دیدگاه


                          #13
                          پاسخ : STM32F103 ADC

                          سلام و خسته نباشید
                          من یه کد واسه میکروی stm32f103 نوشتم و میخوام با adc صدا رو بگیرم
                          کد من خیلی شبیه به کد شماست
                          در کامپایلر iar پروگرام میکنم میکرو رو
                          ولی adc مقدار نا مرتبط میده بهم
                          مثلا وقتی به زمین متصلش میکنم باید 00 بده یه سری مقادیر دیگه میده
                          میدونید مشکل از کجاست؟
                          فکر میکنم از فرکانس باشه!!
                          کمکم کنید

                          دیدگاه


                            #14
                            پاسخ : STM32F103 ADC

                            سلام
                            دوستان من این نمونه برنامه رو کامپایل کردم و روی برد تست کردم مورد نداشت
                            حالا میخوام از چنتا ورودی نمونه بگیرم باید چیکار کنم ؟
                            اگر امکانش هست همین کد رو واسه دو یا بیشتر از ورودی ادیت کنید ممنون میشم

                            اضافه شده در تاریخ :
                            سلام
                            کسی نیست کمک کنه
                            ممنون

                            دیدگاه

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