آموزش میکروکنترلر STM32F4 – قسمت پنجم ;
در قسمت چهارم آموزش میکروکنترلر STM32F4 به ساختار باس پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4 به حافظه فلش و خواندن و نوشتن در حافظه میپردازیم. با سیسوگ همراه باشید.
سازمان دهی حافظه
حافظه برنامه، حافظه داده، رجیسترها و درگاه های ورودی/خروجی همگی در فضای 4 گیگا بایتی آدرس دهی قرار گرفتهاند. بایتها در little endian ذخیره میشوند. فضای آدرس دهی حافظه به 8 بلوک اصلی با اندازه 512 مگابایت تقسیم شده است.
SRAM تعبیه شده
این میکروکنترلر دارای 4 کیلوبایت حافظه SRAM پشتیبانی و 256 کیلوبایت حافظه SRAM سیستم است. حافظه 256 کیلوبایتی از سه SRAM و یک SRAM جفت شده با پردازنده تشکیل شده است که به ترتیب دارای 112، 16 ، 64 و 64 کیلوبایت حافظه هستند. این حافظهها در شکل زیر با کاردهای نارنجی نشان داده شده است. این حافظه به شکل بایتی، نیمواژه (16 بیتی)، یا واژه کامل (32 بیتی) در دسترس است. خواندن و نوشتن در این حافظه، با سرعت پردازنده با صفر حالت انتظار، انجام میشود. این حافظه رم را میتوان تا 3 بخش تقسیم کرد:
- 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 به وقفهها خواهیم پرداخت. با سیسوگ همراه باشید.
واقعا ممنون کارتون حرف نداره
متشکر دوست عزیز 🙂
چقدر کوتاه بود … کاش مفصل تر توضیح میدادید!!!
درود برشما
امید دارم چیبی پر پول و سلامتی کامل داشته باشید.
دو پرسش :
1- STM32 برنامه ریخته شده روی آن را قفل کامل کرد که فقط بتوان میکرو را کامل پاک کرد و دو باره برنامه ریزی کرد؟؟
۲- همین کار برای stm8 ؟
در ۳۲ ها دیدیم ۴ حالت ( ۳ ) دارد ؛ گنگ بود ؛ یا بهتر بگویم من متوجه نشدم.
اگر لطف کنید توضیحی بدهید متشکر خواهم شد.
برای هر دو برنامه ریز
j link
st link /v2
با سپاس.