آموزش میکروکنترلر STM32F4 قسمت پنجم: حافظه فلش

آموزش میکروکنترلر STM32F4 قسمت پنجم: حافظه فلش

آموزش میکروکنترلر STM32F4 قسمت پنجم: حافظه فلش
آموزش میکروکنترلر STM32F4 قسمت پنجم: حافظه فلش

آموزش میکروکنترلر STM32F4 – قسمت پنجم ;

در قسمت چهارم آموزش میکروکنترلر STM32F4 به ساختار باس پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4 به حافظه فلش  و خواندن و نوشتن در حافظه می‌پردازیم. با سیسوگ همراه باشید.

 

سازمان دهی حافظه

حافظه برنامه، حافظه داده، رجیسترها و درگاه های ورودی/خروجی همگی در فضای 4 گیگا بایتی آدرس دهی قرار گرفته‌اند. بایت‌ها در little endian ذخیره می‌شوند. فضای آدرس دهی حافظه به 8 بلوک اصلی با اندازه 512 مگابایت تقسیم شده است.

 

SRAM تعبیه شده

این میکروکنترلر  دارای 4 کیلوبایت حافظه SRAM پشتیبانی و 256 کیلوبایت حافظه SRAM سیستم است. حافظه 256 کیلوبایتی از سه SRAM و یک SRAM جفت شده با پردازنده تشکیل شده است که به ترتیب دارای 112، 16 ، 64 و 64 کیلوبایت حافظه هستند. این حافظه‌ها در شکل زیر با کاردهای نارنجی نشان داده شده است. این حافظه به شکل بایتی، نیم‌واژه (16 بیتی)، یا واژه کامل (32 بیتی) در دسترس است. خواندن و نوشتن در این حافظه، با سرعت پردازنده با صفر حالت انتظار، انجام می‌شود. این حافظه رم را می‌توان تا 3 بخش تقسیم کرد:

 

حافظه های SRAM در حافظه

 

 

  • SRAM1 و SRAM2 که در آدرس 0x2000 0000 نگاشته شده‌اند و توسط همه مسترهای AHB قابل دسترس هستند.
  • SRAM3 در آدرس 0x2002 0000 نگاشته شده و توسط همه مسترهای AHB قابل دسترس است.
  • حافظه جفت شده با پردازنده در آدرس 0x1000 0000 نگاشته شده و تنها توسط پردازنده و از طریق باس D در دسترس است.

مسترهای AHB می‌توانند به شکل هم زمان به SRAM دسترسی داشته باشند (اترنت یا USB در راه (OTG) پرسرعت) برای مثال هم زمان که پردازنده با SRAM3 کار می‌کند اترنت می‌تواند با SRAM2 کار کند.

پردازنده می‌تواند به SRAMها از طریق باس سیستم یا کد I و D وقتی بوت از SRAM انجام می‌شود و بازنگاشت انتخاب شده است دسترسی داشته باشد.

 

نگاه کلی به حافظه فلش

رابط این حافظه، امکان دسترسی کد I و کد D باس AHB  پردازنده را به حافظه فلش می دهد. امکان نوشتن و پاک کردن، و سازوکارهای محافظت از خواندن و نوشتن نیز فراهم است. ساختار این حافظه به این شکل است:

  • یک حافظه اصلی به دو بخش تقسیم می‌شود.
  • حافظه سیستم که از آن دستگاه بوت می‌شود. (در صورت انتخاب حالت بوت از حافظه سیستم)
  • 512 بایت یک بار برنامه پذیر (OTP)، برای داده های کاربر
  • بایت‌های گزینه‌ها برای تنظیم حفاظت از خواندن و نوشتن، سطح BOR، نگهبان سخت/نرم افزاری و بازنشانی وقتی که وسیله در حالت آماده به کار یا ایست است.

حافظه فلش داخلی

حافظه فلش داخلی تا 2 مگابایت حجم دارد و با ساختار دو بانکه دارای ویژگی خواندن/نوشتن است. پهنای باند خواندن 128 بیت است و برای نوشتن می‌توان بایتی، نیم واژه یا واژه یا دو واژه‌ای عمل کرد. امکان پاک کردن برشی، بانکی و انبوه برای هر دو بانک فراهم است.

حافظه فلش به شکل زیر سازماندهی شده است:

 

  • برای هر بانک یک بلوک 1 مگابایتی اصلی بخش شده به 4 برش 16 کیلوبایتی، 1 برش 64 کیلوبایتی و 7 برش 128 کیلوبایتی
  • حافظه سیستم که از آن دستگاه بوت می‌شود (در حالت بوت از حافظه سیستم)
  • 512 بایت یک بار برنامه پذیر برای داده کاربر؛ 16 بایت اضافه هم وجود دارد که می‌توان به کمک آن این ناحیه‌ی داده یک بار برنامه پذیر را قفل کرد.
  • بایت‌های گزینه برای تنظیم حفاظت از خواندن ونوشتن، سطح BOR، نگهبان، حالت بوت دو بانکه، ویژگی‌های دو بانکی بودن، سخت افزار/نرم افزار و بازنشانی وقتی دستگاه در حالت آماده به کار یا ایست است.

 

حافظه داخلی فلش

 

در دستگاه‌های دارای یک مگابایت حافظه ساختار کمی متفاوت است.

 

حافظه داخلی فلش

 

خواندن از فلش

برای این که به درستی از فلش بخوانیم، تعداد حالت‌های انتظار (یعنی پارامتر LATENCY) باید در رجیستر کنترل دسترسی به فلش (FLASH_ACR) مطابق فرکانس ساعت پردازنده HCLK و ولتاژ تغذیه دستگاه، برنامه‌ریزی شود. برای ولتاژ‌های کم‌تر از 1/2 ولت باید بافر پیش واکشی (pre-fetch) غیرفعال شود. رابطه فرکانس ساعت و تعداد حالت‌های انتظار در جدول زیر نشان داده شده است.

 

رابطه فرکانس ساعت و تعداد حالت‌های انتظار

 

وقتی VOS[1:0] = ‘0x01’ ، بیشترین مقدار fHCLK برابر است با MHz 120

وقتی VOS[1:0] = ‘0x10’ ، بیشترین مقدار fHCLK برابر است با MHz 144. می توان با فعال کردن Over-drive تا MHz 168 هم رفت.

وقتی VOS[1:0] = ‘0x11’ ، بیشترین مقدار fHCLK برابر است با MHz 168 . می توان با فعال کردن Over-drive تا MHz 180 هم رفت.

در ولتاژ 1.8 تا 2.1  ولت نمی توان از حالت  Over-drive استفاده کرد.

 

در قسمت پنجم آموزش میکروکنترلر STM32F4 به وقفه‌ها خواهیم پرداخت. با سیسوگ همراه باشید.

 

حمایت از ه. مرادمند

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

4 دیدگاه

  • مهران
    ۶ شهریور ۱۴۰۰

    واقعا ممنون کارتون حرف نداره

  • امیرحسین
    ۱۷ مرداد ۱۳۹۹

    چقدر کوتاه بود … کاش مفصل تر توضیح میدادید!!!

  • a
    ۱۰ مرداد ۱۳۹۸

    درود برشما
    امید دارم چیبی پر پول و سلامتی کامل داشته باشید.

    دو پرسش :
    1- STM32 برنامه ریخته شده روی آن را قفل کامل کرد که فقط بتوان میکرو را کامل پاک کرد و دو باره برنامه ریزی کرد؟؟
    ۲- همین کار برای stm8 ؟

    در ۳۲ ها دیدیم ۴ حالت ( ۳ ) دارد ؛ گنگ بود ؛ یا بهتر بگویم من متوجه نشدم.

    اگر لطف کنید توضیحی بدهید متشکر خواهم شد.
    برای هر دو برنامه ریز
    j link
    st link /v2

    با سپاس.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک