اطلاعیه

Collapse
No announcement yet.

ایجاد eeprom در حافظه فلش stm32

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

    ایجاد eeprom در حافظه فلش stm32

    دوستان من احتیاج به استفاده از فلش به عنوان eeprom دارم و مستندات رو خوندم ولی درست دستگیرم نشده که چطور اینکار رو انجام بدم تازه کارم در آرم و با کتابخانه spl و ویرایشگر EMBitz کار میکنم. نمونه مستندات در لینک های پایین هست.
    در لینک زیر مقاله ای مبنی بر شرح چگونگی استفاده از حافظه Flash به عنوان EEPROM مجازی
    http://s5.picofile.com/file/81189289...D9%85.pdf.html
    نمونه مثال کاربردی که در مقاله بالا شرح داده شد را می توانید از لینک زیر دانلود کنید :
    http://s5.picofile.com/file/81189290...EPROM.rar.html
    اگر کسی از دوستان و اساتید میدونن و یکم میتونن تشریح کنن برای اینکار مرحله به مرحله چه کاری لازم هست ممنون میشم.
    من لازم دارم یک ارایه فرض کنیم 600 بایتی 200*3 به صورت eeprom در فلش ذخیره کنم. بعضی جاها گنگ هست یکی اینکه برای کل این 600 بایت باید ادرس تعریف بشه؟؟ راه بهتری نداره مثل AVR بشه ساده تر استفاده کرد؟؟ و دیگه اینکه این میاد اول پاک میکنه بعد مقدار مینویسه داخل حافظه؟؟؟؟ خوب ما که لازم داریم پاک نشه...!!!
    میکرو stm32f0 در دسترس دارم و stm32f103 اما در اخر لازم دارم که در stm32f030 پیاده سازی کنم.
    اساتید اگه یکم روانتر و ریزتر لطف کنن این مطلب رو توضیح بدن ممنون میشم. در اخر اگر به نتیجه برسه میشه یه مقاله که عموم میتونن استفاده کنن ممنون
    جدیدترین ویرایش توسط vahid agha; ۰۰:۵۰ ۱۳۹۵/۰۹/۱۳.

    #2
    پاسخ : ایجاد eeprom در حافظه فلش stm32

    سلام
    (برای سلامتی و تعجیل در ظهور امام زمان(عج) صلوات بفرستید)

    بفرمایید راه اندازی فلش میکروهای stm32f0xx به عنوان eeprom با IAR , KEIL , TRUE STUDIO
    امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

    دیدگاه


      #3
      پاسخ : ایجاد eeprom در حافظه فلش stm32

      نوشته اصلی توسط mahdi8866 نمایش پست ها
      سلام
      (برای سلامتی و تعجیل در ظهور امام زمان(عج) صلوات بفرستید)

      بفرمایید راه اندازی فلش میکروهای stm32f0xx به عنوان eeprom با IAR , KEIL , TRUE STUDIO
      http://s8.picofile.com/file/82724506...flash.zip.html
      خیلی ممنون دوست عزیز از پاسخ شما و ببخشید بابت دیر پاسخ دادن مشکلاتی پیش اومده بود که درگیر شده بودم.
      این مثال رو هم دیده بودم بیشتر مد نظرم بود دوستان اگر میتونن توضیح بدن که به چه صورت هست منطق کارکرد برنامه. درسته شاید واضح باشه برای دوستان یا اساتید اما خوب من دوس دارم بفهمم واقعا چیکار کرده و برچه اساسی اینکارها رو انجام داده که بعدا به راحتی بتونم در جایی اگر لازم بود استفاده کنم یا تغییری درش بدم بسته به نیاز...

      باز هم ممنون از شما

      دیدگاه


        #4
        پاسخ : ایجاد eeprom در حافظه فلش stm32

        با سلام حدمت شما

        اگر پاسخ سوالتون رو دریافت نکردید من اطلاعات کمی راجب این موضوع دارم در اختیارتون بذارم چون پست مال 20 روز پیش. من خودم چنین مشکلی داشتم شما باید بدنبال eeprom emulation باشید من کتابخونه اش رو دارم. اما بنظر من در نهایت بهتره یک حافظه eeprom تهیه کنید که با i2c هم کار میکنند.
        من در خدمتتون هستم

        دیدگاه


          #5
          پاسخ : ایجاد eeprom در حافظه فلش stm32

          نوشته اصلی توسط ma123mamad نمایش پست ها
          با سلام حدمت شما

          اگر پاسخ سوالتون رو دریافت نکردید من اطلاعات کمی راجب این موضوع دارم در اختیارتون بذارم چون پست مال 20 روز پیش. من خودم چنین مشکلی داشتم شما باید بدنبال eeprom emulation باشید من کتابخونه اش رو دارم. اما بنظر من در نهایت بهتره یک حافظه eeprom تهیه کنید که با i2c هم کار میکنند.
          من در خدمتتون هستم
          سلام خدمت شما
          یه جورایی فایلی که دوستمون معرفی کردن هم همین emulation هست فقط من در pdf های خود st که ارائه کرده تابع های بیشتری برای ارتباط با فلش با روش eeprom ارائه کرده. اما خود example رو ندیدم...
          والا خیلی مطالعه کردم ولی هنوز کلی از قسمت ها برای من گنگ هست. اگر کار کردین و واقف هستین ممنون میشم کمک کنید
          کار طوری هست که نیازی به eeprom خارجی نیست اگر این امکان از طریق فلش فراهم بشه. هرچند که درکل یادگیری و کار کردن این مسئله هم خیلی مد نظر هست.
          جدیدترین ویرایش توسط vahid agha; ۲۳:۵۲ ۱۳۹۵/۰۹/۰۱.

          دیدگاه


            #6
            پاسخ : ایجاد eeprom در حافظه فلش stm32

            سلام برای نوشتن قفل حافظه رو باز میکنی ، صفحه حافظه مورد نظر رو پاک میکنی و دوباره فلش رو قفل میکنی، تا page رو پاک نکنی اجازه نوشتن نمیده.
            برای خوندن هم ادرسی که متغییر ذخیره شده رو میخونی رو یه متغییر رو RAM میکرو انتقال میدی . چیز پیچیده ای نداره.

            دیدگاه


              #7
              پاسخ : ایجاد eeprom در حافظه فلش stm32

              نوشته اصلی توسط mohammadne نمایش پست ها
              سلام برای نوشتن قفل حافظه رو باز میکنی ، صفحه حافظه مورد نظر رو پاک میکنی و دوباره فلش رو قفل میکنی، تا page رو پاک نکنی اجازه نوشتن نمیده.
              برای خوندن هم ادرسی که متغییر ذخیره شده رو میخونی رو یه متغییر رو RAM میکرو انتقال میدی . چیز پیچیده ای نداره.
              خیلی ممنون از پاسختون...
              بله اینا رو میدونم تقریبا... جدا از مسائل کدنویسی یکی از موارد مبهم هم همینه که فرمودین....
              برای نوشتن قفل حافظه رو باز میکنی ، صفحه حافظه مورد نظر رو پاک میکنی و دوباره فلش رو قفل میکنی، تا page رو پاک نکنی اجازه نوشتن نمیده.
              ببینین فرض کنیم که ما میکرومون 16 صفحه یک کیلو بایتی داره که ما میخوایم رویه دو صفحه اون اطلاعات ذخیره کنیم مانند eeprom... وقتی میگیم مانند eeprom یعنی اون اطلاعات قراره تغییر داده بشه ثابت نیست.... اما اینجوری که گفته میشه برای نوشتن باید کل صفحه رو پاک کرد...
              خوب اینجوری که اطلاعات دیگه از بین میره؟؟؟؟!!!!!!

              دیدگاه


                #8
                پاسخ : ایجاد eeprom در حافظه فلش stm32

                نوشته اصلی توسط vahid agha نمایش پست ها
                خیلی ممنون از پاسختون...
                بله اینا رو میدونم تقریبا... جدا از مسائل کدنویسی یکی از موارد مبهم هم همینه که فرمودین....
                برای نوشتن قفل حافظه رو باز میکنی ، صفحه حافظه مورد نظر رو پاک میکنی و دوباره فلش رو قفل میکنی، تا page رو پاک نکنی اجازه نوشتن نمیده.
                ببینین فرض کنیم که ما میکرومون 16 صفحه یک کیلو بایتی داره که ما میخوایم رویه دو صفحه اون اطلاعات ذخیره کنیم مانند eeprom... وقتی میگیم مانند eeprom یعنی اون اطلاعات قراره تغییر داده بشه ثابت نیست.... اما اینجوری که گفته میشه برای نوشتن باید کل صفحه رو پاک کرد...
                خوب اینجوری که اطلاعات دیگه از بین میره؟؟؟؟!!!!!!
                دیتاشیت هم خوندم گفته بود باید صفحه کلا پاک بشه، شما دو راه دارین ، یکی اینکه دیتا رو در RAM نگه دارین به اندازه سایز page شد نوشتن انجام بدین یا اینکه محتویات page رو در یک ارایه موقت ذخیره کنین ، تغییرات رو اعمال کنین و دوباره بنویسین

                دیدگاه


                  #9
                  پاسخ : ایجاد eeprom در حافظه فلش stm32

                  نوشته اصلی توسط mohammadne نمایش پست ها
                  دیتاشیت هم خوندم گفته بود باید صفحه کلا پاک بشه، شما دو راه دارین ، یکی اینکه دیتا رو در RAM نگه دارین به اندازه سایز page شد نوشتن انجام بدین یا اینکه محتویات page رو در یک ارایه موقت ذخیره کنین ، تغییرات رو اعمال کنین و دوباره بنویسین
                  ممنون از شما
                  مشکل منم دقیقا همین هست مطالعه هم کردم ولی همین معظل پاک کردن رو داشتم...
                  اره به این روش میشه به ذهن خودم هم رسید (( البته نمیشه دیتا رو در رم نگه داشت تا به اندازه سایز صفحه برسه چون هر لحظه ممکنه تغذیه قطع بشه.... فقط میشه خوند و دوباره نوشت یعنی همون راه دوم )) اما یه مشکل داره.... اینجا قصد این رو داریم که eeprom رو شبیه سازی کنیم....
                  معمولا محدودیت نوشتن و پاک کردن فلش 0.1 محدودیت نوشتن و پاک کردن eeprom هست فرض کنید eeprom ما 100000 بار محدودیت داره و فلش ما با این اساس 10000 بار محدودیت داره...
                  باز دوباره فرض... یک صفحه فلش 1 کیلو بایت و داده های ما 4 بایت باشه که به یک باره نوشته نمیشه و به مرور نوشته میشه و تغییر میکنه یعنی 4 بایت 4 بایت بسته به عملکرد... خوب اینجوری در هر صفحه تقریبا 250 متغیر داریم ... پس به این ترتیب تا زمانی که متغیرهای ما به اندازه صفحه پر بشن ما 250 بار صفحه رو پاک کردیم و 250 بار نوشتیم یعنی 500 بار ... این تا به اینجا ... جدا از این به ازای هر بار اپدیت شدن هر متغیر کل 250 متغیر ما یک بار پاک و یک بار نوشته میشه. خوب با توجه به محدودیت پایین تر فلش نسبت به ای 2 پرام با این وضع تقریبا اصلا قابل توجیه نیست استفاده از فلش به جای eeprom ؟؟؟؟!!!! با فرض داده 4 بایتی و صفحه فلش یک کیلو بایتی و فرض محدودیت 0.1 برابری فلش نسبت به eeprom در آخر محدودیت فلش میشه (0.1/500) یعنی 0.0002 حتی اگر پاک کردن رو در نظر نگیریم (0.1/250) یعنی 0.0004 ؟؟؟؟!!!!

                  دیدگاه


                    #10
                    پاسخ : ایجاد eeprom در حافظه فلش stm32

                    نوشته اصلی توسط vahid agha نمایش پست ها
                    ممنون از شما
                    مشکل منم دقیقا همین هست مطالعه هم کردم ولی همین معظل پاک کردن رو داشتم...
                    اره به این روش میشه به ذهن خودم هم رسید (( البته نمیشه دیتا رو در رم نگه داشت تا به اندازه سایز صفحه برسه چون هر لحظه ممکنه تغذیه قطع بشه.... فقط میشه خوند و دوباره نوشت یعنی همون راه دوم )) اما یه مشکل داره.... اینجا قصد این رو داریم که eeprom رو شبیه سازی کنیم....
                    معمولا محدودیت نوشتن و پاک کردن فلش 0.1 محدودیت نوشتن و پاک کردن eeprom هست فرض کنید eeprom ما 100000 بار محدودیت داره و فلش ما با این اساس 10000 بار محدودیت داره...
                    باز دوباره فرض... یک صفحه فلش 1 کیلو بایت و داده های ما 4 بایت باشه که به یک باره نوشته نمیشه و به مرور نوشته میشه و تغییر میکنه یعنی 4 بایت 4 بایت بسته به عملکرد... خوب اینجوری در هر صفحه تقریبا 250 متغیر داریم ... پس به این ترتیب تا زمانی که متغیرهای ما به اندازه صفحه پر بشن ما 250 بار صفحه رو پاک کردیم و 250 بار نوشتیم یعنی 500 بار ... این تا به اینجا ... جدا از این به ازای هر بار اپدیت شدن هر متغیر کل 250 متغیر ما یک بار پاک و یک بار نوشته میشه. خوب با توجه به محدودیت پایین تر فلش نسبت به ای 2 پرام با این وضع تقریبا اصلا قابل توجیه نیست استفاده از فلش به جای eeprom ؟؟؟؟!!!! با فرض داده 4 بایتی و صفحه فلش یک کیلو بایتی و فرض محدودیت 0.1 برابری فلش نسبت به eeprom در آخر محدودیت فلش میشه (0.1/500) یعنی 0.0002 حتی اگر پاک کردن رو در نظر نگیریم (0.1/250) یعنی 0.0004 ؟؟؟؟!!!!
                    اره اگه هر چند ثانیه میخای به خاطر یه متغییر 4 بایتی یه صفحه رو پاک کنی و دوباره روش بنویسی که پدر میکرو در میاد، شما دو راه داری : یکی اینکه از ایپرام خارجی استفاده کنی، حافظه فلش خارجی هم نوشتن روش هم به صورت صفحه هست یعنی باید کل صفحه رو پاک کنی تا بتونی دوباره چیزی روی حافظه بنویسی
                    راه دوم استفاده از باتری بکاپ سکه ای هست، شما باتری بکاپ میکرو رو برای نگهداری رم میکرو تنظیم میکنی و قسمت RTC هم خاموش میکنی، حالا تا هر چند میلیارد باری که خاستی متغییر ها رو روی حافظه SRAM میکرو تغییر میدی و اگه از حد یک صفحه بیشتر شدن در یه حافظه فلش خارجی مینویسی .

                    دیدگاه


                      #11
                      پاسخ : ایجاد eeprom در حافظه فلش stm32

                      نوشته اصلی توسط mohammadne نمایش پست ها
                      اره اگه هر چند ثانیه میخای به خاطر یه متغییر 4 بایتی یه صفحه رو پاک کنی و دوباره روش بنویسی که پدر میکرو در میاد، شما دو راه داری : یکی اینکه از ایپرام خارجی استفاده کنی، حافظه فلش خارجی هم نوشتن روش هم به صورت صفحه هست یعنی باید کل صفحه رو پاک کنی تا بتونی دوباره چیزی روی حافظه بنویسی
                      راه دوم استفاده از باتری بکاپ سکه ای هست، شما باتری بکاپ میکرو رو برای نگهداری رم میکرو تنظیم میکنی و قسمت RTC هم خاموش میکنی، حالا تا هر چند میلیارد باری که خاستی متغییر ها رو روی حافظه SRAM میکرو تغییر میدی و اگه از حد یک صفحه بیشتر شدن در یه حافظه فلش خارجی مینویسی .
                      اره همون استفاده از eeprom خارجی بهتر هست.
                      من فک میکردم میشه مانند eeprom از فلش استفاده کرد بنا به گفته های ناقصی که اینطرف و اونطرف شده بود. گفتم از دوستان دیگه هم مشورت بگیرم. که با این اوصاف قابل اطمینان نیست این روش...

                      دیدگاه


                        #12
                        پاسخ : ایجاد eeprom در حافظه فلش stm32

                        آقا ممنون از راهنماییتون. عالیییییی بود. مختصر و مفید.

                        دیدگاه


                          #13
                          پاسخ : ایجاد eeprom در حافظه فلش stm32

                          سلام . کسی eeprom emulation رو برای stm32f030f4 انجام داده؟
                          A-Hosseini

                          دیدگاه


                            #14
                            پاسخ : ایجاد eeprom در حافظه فلش stm32

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

                            دیدگاه


                              #15
                              پاسخ : ایجاد eeprom در حافظه فلش stm32

                              سلام مهندس جان
                              میشه بیشتر درباره استفاده از باتری بکاپ برای نگهداری رم توضیح بدین
                              من می خواستم مقدار یک متغیر رو در داخل واحد RTC ذخیره کنم که مقدار متغیر در موقع قطع برق تغییر نکند .
                              خیلی بابت این موضوع سرچ کردم اما چیزی انچنانی پیدا نکردم
                              میشه در باره این موضوع توضیح بدین .
                              میکرو من stm32f103c8t6 هست و میکرو EEPROM داخلی نداره و چون متغیر دائم در حال تغییر است نمیتوان از حافظه FLASH به عنوان EEPROM استفاده کرد
                              و امکان استفاده از EEPROM خارجی نیست
                              اینم پروژه من در داخل برنامه KEIL
                              https://s16.picofile.com/file/8422670968/RTC.rar.html

                              دیدگاه

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