اطلاعیه

Collapse
No announcement yet.

آموزش اولیه stm32f405-407

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

    آموزش اولیه stm32f405-407

    با سلام
    من تازه با میکرو lpc1768 کنار اومده بودم و همدیگرو درک میکردیم و کار میکردیم که توسط دوست خوبم سامان اسدی با میکرو stm32f407 آشنا شدم . و بقدری قابلیت های این میکرو زیاد بود که بکل از خیر lpc1768 گذشتم و شروع کردم به برسی کامل stm32f407 .

    6 مورد در این میکرو با معماری کورتکس ام 4 بیشتر نظرم رو جلب کرد که در معماری کورتکس ام 3 واقعا احساس نیاز میکردم . القصه تونستم از خیر 1768 بگذرم

    1- فرکانس 168 مگ
    2- بوت لودر usb
    3- adc با سرعت 7.2 مگ
    4- واحد محاسبات اعشاری fpu
    5- واحد تولید اعداد رندوم
    6-واحد تولید اعداد یونیک 96 بیتی

    امکانات جالب دیگه هم داره که برا من خیلی مهم نیست . مثلا میشه ولتاژ هسته رو بصورت نرم افزاری با رگلاتور داخلی تغییر داد .که جهت کاهش مصرف توان است .یا مثلا میتونید بغیر از حافظه فلش داخلی از حافظه خارجی هم بوت بشه . احتمالا بدرد کسایی بخوره که مشکل حافظه فلش دارن .

    ایرادات نسبت به 1768

    شاید بشه گفت یک ایراد که به نظر میرسه اینکه پهنای پورت GPIO ها رو از 32 بیت به 16 بیت کاهش دادن عوضش تعداد پورت رو افزابش دادن . نمی دونم این یک مزیت حساب میشه یا یک ایراد ؟ پورت های A B C D E F G الان موجوده .
    البته یکم ایراد های دیگه هم هست مثلا 1768 یک واحد Quadrature Encoder interface (واحد شفت اینکودر )کامل و درست و حسابی داره ولی 407 چهار واحد داره عوضش هر چهار تا نصفه نیمه است (چون میگه ایندکس اینکودر رو وصل کنید به اینتراپت که دیگه شد کلک رشتی ).

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

    الان میخوام سریع چند تا پروژه کوچیک با توضیحات کامل تو محیط IDE محبوب و صاف و ساده IAR و تو زبان c++ و اسمبلی بزارم . فعلا این pdf رو مطالعه کنید تا بعد

    http://www.fmf.uni-lj.si/~ponikvar/STM32F407%20project/Ch3%20-%20Programming.pdf


    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    #2
    پاسخ : آموزش اولیه stm32f405-407

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

    دیدگاه


      #3
      پاسخ : آموزش اولیه stm32f405-407

      خیلی خوبه، اتفاقا جزو برنامه های من هست که کار با این میکرو رو شروع کنم.
      فقط اینکه اگر با KEIL کار کنید برای یادگیری من یکی بهتره. البته بازم خود شما میدونید.
      ---------
      .
      .
      ...........

      دیدگاه


        #4
        پاسخ : آموزش اولیه stm32f405-407

        جهت شروع STM32F4-Discovery بخرید .




        قیمتش فقط 90 هزار تومنه . تقریبا مفته .چون
        1- پروگرمر usb st-link سر خود داره که قیمتش به تنهایی 30-40 هزار تومنه .
        2- آمپلی فایر استریو کلاس d و میکروفن داره و مبدل adc خارجی جهت پردازش سیگنال صوت داره .
        3-واحد نویز گیر EMI / RFI روی otg usb داره تا به سرعت فول اسپید 480 مگ میرسه .
        4- سنسور شتاب سنج سه محور داره .
        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زيادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : آموزش اولیه stm32f405-407

          نوشته اصلی توسط ajapyy
          خیلی خوبه، اتفاقا جزو برنامه های من هست که کار با این میکرو رو شروع کنم.
          فقط اینکه اگر با KEIL کار کنید برای یادگیری من یکی بهتره. البته بازم خود شما میدونید.
          ببین یک مقایسه کن لیست میکرو های IAR رو با Keil







          حالا گذشته از این مورد که کیل اصلا 407 رو تولیستش نداره .بصورت کلی واقعا IAR قویتر - ساده تر و حرفه ای تره . درسته اصلا ویزارد نداره و فکر کنم این هم یکی از نقاط قوتشه . چون کاربر از همون اول ورزیده بار میاد . عین سایت گوگل میمونه در برابر سایت یاهو . عین تراکتور میمونه . کلا فقط یک صندلی و یک موتور پرقدرت داره .سوسول بازی هم تو کارش نیست .
          تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
          داشتن عقله زيادتر از دیگر آدم ها است

          دیدگاه


            #6
            پاسخ : آموزش اولیه stm32f405-407

            اتفاقا من از ویزارد اصلا استفاده نکردم :biggrin:
            شنیده بودم که IAR حرفه ای تر از کیل هستش ما وجد منابع آموزشی برای کار با نرم افزار و از اون مهم تر وجود کتابخونه ها و برنامه های نمونه هم مهمه.
            ---------
            .
            .
            ...........

            دیدگاه


              #7
              پاسخ : آموزش اولیه stm32f405-407

              مطالب رو در آینده بصورت pdf کامل قرار خواهم داد ولی چون به مرور انتشار پیدا میکنن اینجا هم قرار میدم


              general-purpose I/O (GPIO) ports
              پورت های همه منظوره ورودی خروجی

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



              مثلا پورت C پین 3 با 5 ما جول زیر مالتی پلکس شده که با خودش میشه مالتی پلکس 6 در یک .
              Port C, pin 3 is also mapped to the following alternative functions:
              • SPI2 MOSI
              • I2S2 SD
              • OTG HS ULPI NXT
              • ETH MI TX Clk
              • EVENTOUT




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






              بنا بر این هر پین از هر پورت این میکرو با توجه به نوع ماجول انتخاب شده ( تابع های مالتی پلکس شده ) در هر پرژه می تواند یک از نوع (type )زیر را داشته باشد

              • ورودی شناور
              • ورودی Pull-Up
              • ورودی-PULL-DOWN
              • آنالوگ
              • خروجی open-drain با مقاومت with pull-up or pull-down
              • خروجی push-pull با مقاومت with pull-up or pull-down
              • ماجول پریفریال open-drain با مقاومت with pull-up or pull-down
              • ماجول پریفریال push-pull با مقاومت with pull-up or pull-down

              بعد از ریست (حتی دراثنائ ریست ) تمامی پین های میکرو بصورت پیش فرض بصورت ورودی و از نوع شناور و از تابع صفر (یعنی همون سیستم یا IO ) کانفیگ میشوند .به اثتثنای موارد زیر که اگر دقت کنید مربوط به واحد دیباگ و لودر سورس کد است .

              The debug pins are in AF pull-up/pull-down after reset:
              • PA15: JTDI in pull-up
              • PA14: JTCK/SWCLK in pull-down
              • PA13: JTMS/SWDAT in pull-up
              • PB4: NJTRST in pull-up
              • PB3: JTDO in floating state



              القصه


              GPIO introduction
              Each general-purpose I/O port has four 32-bit configuration registers (GPIOx_MODER,
              GPIOx_OTYPER, GPIOx_OSPEEDR and GPIOx_PUPDR), two 32-bit data registers
              (GPIOx_IDR and GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 32-bit locking
              register (GPIOx_LCKR) and two 32-bit alternate function selection register (GPIOx_AFRH
              and GPIOx_AFRL).

              برای کار با پین های هر پورت باید موارد ذکر شده در بالا رو برای هر پورت کانفیگ کرد . این عمل در معماری آرم با ریجستر ها یا در حقیقت آدرس های خاص از فضای رم ( باس آدرس و داده و کنترل ) صورت میگیرد . با اعداد باینری یعنی صفر و یک که در این آرس های خاص مینویسیم پروسسور می فهمد که کدام پین را ورودی کدام پین رو آنالوگ و کدام پین رو خروجی کند و همچنین برای کدام پین مقاومت پول پ رو فعال کند. و همانطوری که مستحضر هستید فضای رم در میکرو های کورتکس M4 32 بیتی است. بنا بر این ریجستر های زیر همگی 32 بیتی هستند.


              1- این پین از نظر شناور بودن و روردی بودن و خروجی بودن و پوش پول و اپن درین بودن و آنالوگ بودن و فرکانس کلاک باید کانفیگ بشه که توسط 4 تا ریجستر صورت میگیره

              • Port mode register – GPIOx_MODER
              • Output type register – GPIOx_OTYPER
              • Speed register – GPIOx_OSPEEDR
              • Pull-up/Pull-down register – GPIOx_PUPDR

              2- توسط 2 تا ریجستر مقادیر پین ها خونده و نوشته بشه
              • Input data register – GPIOx_IDR
              • Output data register – GPIOx_ODR
              3- توسط یک ریجستر ست و ریست بشه

              • set/reset register- GPIOx_BSRR
              •
              4- توسط یک ریجیستر قفل بشن
              Lock Register – GPIOx_LCKR


              5- توسط دو تا ریجستر ماجول- تابع مالتی پلکس شده انتخاب بشه
              GPIO alternate function low register (GPIOx_AFRL)
              GPIO alternate function high register (GPIOx_AFRH)

              همون ریجستر های بالا به روایت تصویر تو محیط شبیه سازی IAR



              تو این تصویر هم دومورد MODER و AFRH رو براتون باز کردم


              تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
              داشتن عقله زيادتر از دیگر آدم ها است

              دیدگاه


                #8
                پاسخ : آموزش اولیه stm32f405-407

                سلام
                میکروی خیلی خوبه
                ولی داستان های جالبی دیدم ازش
                مثلا با رجیستر اصلا پورت سریالش کار نمی کرد. با یک سمپل cmsis کار می کرد ولی در دیباگ از روی برد خط به خط کار نمی کرد!
                و ...
                در حالی که از هیچ کدام از خانواده های f0 و f1 و f2 این موارد پیش نیومده بود.
                فيلم آموزشي ميکروکنترلر LPC1768
                فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                دیدگاه


                  #9
                  پاسخ : آموزش اولیه stm32f405-407

                  بردشو کجا میشه خرید؟ :sad:
                  لینک :rolleyes:
                  http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                  دیدگاه


                    #10
                    پاسخ : آموزش اولیه stm32f405-407

                    نوشته اصلی توسط MAHDI ZAMANI
                    بردشو کجا میشه خرید؟ :sad:
                    لینک :rolleyes:
                    از سایت همسایه کویر

                    دیدگاه


                      #11
                      پاسخ : آموزش اولیه stm32f405-407

                      اولین سورس کد رو برای چشمک زنی کل پین های پورت c میگذارم
                      تمام پین های پورت c با تناوب تقریبا 4 ثانیه روشن و خاموش میشوند . پروژه هم پیوست شد . فقط دقت کنید که میکروی من 405 و 64 پایه داره است. و اونهایی که دیسکاوری خریدن از قسمت منوی پشن و تب جنرال می تونید به 407 تغیییر بدین .

                      کد:
                      #include "stm32f4xx.h"
                      
                       /*
                       GPIO->MODER  = 0x00000000;  // MODE Register: 00-in, 01-out, 10-AF, 11-analog
                       GPIOx->OTYPER =   0x0000;  // Output TYPE Register: 0-PushPull, 1-OpenDrain
                       GPIOx->OSPEEDR = 0x00000000;  // Output SPEED Register: 00-2, 01-25, 10-50, 11-100 [MHz]
                       GPIOx->PUPDR  = 0x00000000;  // PullUp PullDown Register: 00-none, 01-Pup, 10-Pdn, 11-reserved
                       GPIOx->IDR   =   0x0000;  // Input Data Register
                       GPIOx->ODR   =   0x0000;  // Output Data Register
                       GPIOx->BSRRL  =   0x0000;  // Bit Set Reset Register Hi: bit sets PortPin
                       GPIOx->BSRRH  =   0x0000;  // Bit Set Reset Register Lo: bit resets PortPin
                       GPIOx->LCKR  = 0x00000000;  // LoCK Register 
                       GPIOx->AFR[0] = 0x00000000;  // Alternative Function Register Lo - select 1of16
                       GPIOx->AFR[1] = 0x00000000;  // Alternative Function Register Hi - select 1of16
                       */
                      
                      
                      void main (void) {       // This set for LED only
                      
                       RCC->AHB1ENR |= 4;       // Enable clock for GPIOC  
                      
                       GPIOC->MODER  =0x55555555; // MODE Register  all pins of port c is 01: General purpose output mode
                       
                       /* 
                       00: Input (reset state)
                       01: General purpose output mode
                       10: Alternate function mode
                       11: Analog mode
                       */ 
                       
                      
                       while (1) {
                      
                           GPIOC->ODR  = 0xffff;  // Output Data Register turn on all port c 
                        for (int i=0; i<0x1000000; i++) {};  //delay
                         GPIOC->ODR  = 0x0;     // Output Data Register turn off all port c 
                         for (int i=0; i<0x1000000; i++) {}; //delay
                       
                       };
                      
                      }
                      این هم پروژه کامل تو IAR


                      http://aliila1359.persiangig.com/tamrin/stm32f407/blinking%20stm32f405%20%20iar%20program.rar

                      چند تا عکس از برد خودم هم میزارم .(چون حجم عکس ها زیاده لینک قرار میدم )

                      http://aliila1359.persiangig.com/tamrin/stm32f407/20150320_102033.jpg

                      http://aliila1359.persiangig.com/tamrin/stm32f407/20150320_102038.jpg

                      http://aliila1359.persiangig.com/tamrin/stm32f407/20150320_102408.jpg
                      تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                      داشتن عقله زيادتر از دیگر آدم ها است

                      دیدگاه


                        #12
                        پاسخ : آموزش اولیه stm32f405-407

                        سلام
                        ممنون از زحمتی که میکشید
                        اگر میشه فایل پروژه رو زیپ کنید و قرار بدید
                        ممنون

                        دیدگاه


                          #13
                          پاسخ : آموزش اولیه stm32f405-407

                          یه سوال ببخشید جزییه من چطوری پروگرام کنم؟!
                          http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                          دیدگاه


                            #14
                            پاسخ : آموزش اولیه stm32f405-407

                            نوشته اصلی توسط MAHDI ZAMANI
                            یه سوال ببخشید جزییه من چطوری پروگرام کنم؟!
                            اگر از همین دیسکاوری استفاده میکنی به راحتی توی IDE که استفاده میکنی (keil , iar ,...) پروگرامر یا دیباگر رو
                            روی ST-Link تنظیم کن و وقتی برد رو به کامپیوتر وصل میکنی به صورت پروگرمر ST-Link شناسایی میکنه و میتونی
                            پروگرم کنی در غیر این صورت به برد و پروگرمر شما بستگی داره

                            دیدگاه


                              #15
                              پاسخ : آموزش اولیه stm32f405-407

                              از دانشکده http://www.fmf.uni-lj.si/en/faculty/ فزیک و ریاضی دانشگاه Ljubljana چندتا ده سورس کد آموزشی خوب ( به قول معروف perfect ) برای stm32f407 پیدا کردم البته استادان این دانشگاه این پروژه ها رو شناور درست نکرده بودن و وقتی دانلود کردم و کامپایل کردم 30000 تا ارور میداد و باید امعا و احشای پروژه رو تو فلدر های تو در توی دراز پخش و پلا میکردی تا ارور ها برطرف میشدن که من همشون رو باز سازی کردم (دو روز جون کندم ) و الان مستقل از فولدر های ویندوز است
                              اینجا قرارمیدم

                              1394.1.1

                              http://aliila1359.persiangig.com/tamrin/stm32f407/STM32F407%20project%20in%20IAR.rar/dl


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





                              فلش نارنجی نشون میده که ما برای کار کردن با پورت C چطوری GPIOC انتخاب می کنیم و مثلا فلش قرمز نشون میده که نتیجه واقعی دستور
                              کد:
                               GPIOC->MODER  |= 0x04000000;
                              چطوری پین 13 از ریجستر MODER رو تغییر میده و همینطور به فلش آبی دقت کنید .

                              مثال های بالا درست نیستند .مجموعه پروژه اصلاح شده رو اینجا میزارم .


                              https://doc-14-7o-docs.googleusercontent.com/docs/securesc/02bbf4tgksmg7lr49gga2rjb0j3ari68/8hrbodbvqfv9fsd1c53qcgsol8j4jjma/1438862400000/04673399834582353196/04673399834582353196/0B-jaSWX4UpyBaW5rcnpnRXlkSG8?e=download

                              یک مجموعه مثال خوب دیگر

                              http://www.mytutorialcafe.com/microcontroller%20ARM%20STM32F4%20Tutorial%20and%2 0Project.htm
                              تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                              داشتن عقله زيادتر از دیگر آدم ها است

                              دیدگاه

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