آموزش میکروکنترلر STM32F4
در قسمت چهارم آموزش میکروکنترلر STM32F4 به ساختار باس پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4 به حافظه فلش و خواندن و نوشتن در حافظه میپردازیم. با ما همراه باشید.
سازماندهی حافظه
حافظه برنامه، حافظه داده، رجیسترها و درگاههای ورودی/خروجی همگی در فضای ۴گیگابایتی آدرسدهی قرارگرفتهاند. بایتها در little endian ذخیره میشوند. فضای آدرسدهی حافظه به ۸بلوک اصلی با اندازه ۵۱۲مگابایت تقسیمشدهاست.
SRAM تعبیهشده
این میکروکنترلر دارای ۴کیلوبایت حافظهSRAM پشتیبانی و ۲۵۶کیلوبایت حافظه SRAM سیستم است. حافظه ۲۵۶کیلوبایتی از سه SRAM و یک SRAM جفتشده با پردازنده تشکیلشدهاست که بهترتیب دارای ۱۱۲، ۱۶، ۶۴و ۶۴کیلوبایت حافظه هستند. این حافظهها در شکلزیر با کادرهای نارنجی نشانداده شدهست. این حافظه به شکل بایتی، نیمواژه(۱۶بیتی)، یا واژه کامل (۳۲بیتی) دردسترس است. خواندن و نوشتن در این حافظه، با سرعت پردازنده با صفرحالت انتظار، انجام میشود. این حافظه رم را میتوان تا 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 پردازنده را به حافظه فلش میدهد. امکان نوشتن و پاککردن، و سازوکارهای محافظت از خواندن و نوشتن نیز فراهماست. ساختار این حافظه به این شکل است:
- یک حافظه اصلی به دوبخش تقسیم میشود.
- حافظه سیستم که از آن دستگاه بوت میشود. (درصورت انتخاب حالت بوت از حافظه سیستم)
- ۵۱۲بایت یکبار برنامهپذیر(OTP)، برای دادههای کاربر
- بایتهای گزینهها برای تنظیم حفاظت از خواندن و نوشتن، سطح BOR، نگهبان سخت/نرمافزاری و بازنشانی وقتیکه وسیله درحالت آمادهبهکار یا ایست است.
حافظه فلش داخلی
حافظه فلش داخلی تا ۲مگابایت حجم دارد و با ساختار دو بانکه دارای ویژگی خواندن/نوشتن است. پهنای باند خواندن ۱۲۸بیت است و برای نوشتن میتوان بایتی، نیمواژه یا واژه یا دو واژهای عملکرد. امکان پاککردن برشی، بانکی و انبوه برای هر دو بانک فراهماست. حافظه فلش به شکلزیر سازماندهی شدهاست:
- برای هر بانک یک بلوک ۱مگابایتی اصلی بخششده به ۴برش ۱۶کیلوبایتی، ۱ برش ۶۴کیلوبایتی و ۷برش ۱۲۸کیلوبایتی
حافظه سیستم که از آن دستگاه بوت میشود (درحالت بوت از حافظه سیستم) - ۵۱۲بایت یکبار برنامهپذیر برای داده کاربر؛ ۱۶بایت اضافه هم وجود دارد که میتوان به کمک آن این ناحیهی داده یکبار برنامهپذیر را قفلکرد.
- بایتهای گزینه برای تنظیم حفاظت از خواندن ونوشتن، سطح BOR، نگهبان، حالت بوت دوبانکه، ویژگیهای دوبانکیبودن، سختافزار/نرمافزار و بازنشانی وقتی دستگاه درحالت آمادهبهکار یا ایست است.
در دستگاههای دارای ۱مگابایت حافظه ساختار کمیمتفاوت است.
خواندن از فلش
برای اینکه بهدرستی از فلش بخوانیم، تعداد حالتهای انتظار (یعنی پارامتر LATENCY) باید در رجیستر کنترل دسترسیبه فلش(FLASH_ACR) مطابق فرکانس ساعت پردازنده HCLK و ولتاژ تغذیه دستگاه، برنامهریزی شود. برای ولتاژهای کمتر از۱/۲ولت باید بافر پیشواکشی(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 به وقفهها خواهیم پرداخت. باما همراه باشید.
منبع: سیسوگ