در این آموزش قصد داریم روش های مختلف پروگرام کردن تراشه های STM32 را به صورت کامل توضیح دهیم تا دوستانی که به تازگی می خواهند با این تراشه شروع به کار کنند تمام اطلاعات لازم رو به صورت یکجا در دسترس داشته باشند.
میکروکنترلرهای STM32 به صورت کلی به ۳ روش قابل پروگرام شدن هستند:
۱- استفاده از بوت لودر سریال
۲- استفاده از پروتکل SWD
۳- استفاده از پروتکل Jtag
۱- استفاده از بوت لودر سریال
به صورت پیشفرض در قسمتی از حافظه تراشه های ۳۲ بیت شرکت ST یک برنامه ای قرار دارد که با استفاده از ان و بدون نیاز به دستگاه پروگرامر، کاربر توانایی پروگرام کردن تراشه را خواهد داشت.
مزیتی که این روش داره اینکه شما برای پروگرام کردن تراشه فقط نیاز به یک مبدل USB به سریال دارین و یک نرم افزار خاص جهت ارتباط و نیازی به هزینه اضافی جهت خرید پروگرامر نیست اما قطعا این روش خالی از ایراد هم نیست و بارزترین عیبش اینکه نمی تونید مستقیم از خود کامپایلر عملیات پروگرام کردن رو انجام بدین و دومین ایراد هم عدم توانایی عملیات دیباگ می باشد.
برای استفاده از این روش ابتدا باید نرم افزار ST Flash loader رو داشته باشید که برای دانلود اخرین نسخه نرم افزار اینجا کلیک کنید.
بعد از نصب برنامه حالا شما باید یک مبدل USB به سریال داشته باشید که می تونید از مبدل های اماده استفاده کنید و یا خودتون یکی بسازید مثل این.
وقتی درایو تهیه شد و درایورهای مربوطه رو نصب کردین و از صحت عملکردش مطلع شدین باید برین سراغ اتصال مبدل به میکروکنترلر.
در تراشه های مختلف این پین قطعا متفاوت خواهد بود و باید حتما برای هر تراشه به دیتاشیت مراجعه کنید. پین های مورد استفاده جهت ارتباط در تراشه STM32F030XX پین های USART1 می باشد که PA9,PA10 هستند.تصویر زیر از دیتاشیت میکروکنترلر می باشد.
نکته ای که در این مورد مونده اینکه شما باید در این حالت میکروکنترلر رو به حالت بوت ببرین. برای این کار یک پین به اسم BOOT0 در میکروکنترلر وجود دارد که با یک کردن اون و Restart میکروکنترلر در حالتی که پین مربوطه یک هست، میکروکنترلر وارد حافظه(System Memory) بوت لودر سریال میشه.
نکته: در این سری میکروکنترلر یک بیت به اسم nBOOT1 وجود داره که به صورت پیشفرض فعال شده اما در صورتی که قبلا با استفاده از پروگرامر میکروکنترلر را پروگرام کرده اید حتما به این بیت در قسمت Option Byte دقت کنید که تیک مورد نظر فعال باشد.
بعد از طی مراحل بالا و اتصال مبدل به میکروکنترلر و بوت کردن اون جهت پروگرام کردن با نرم افزار معرفی شده باید به صورت زیر عمل کنید.
مطابق شکل زیر پورت اختصاص داده شده برای مبدل USB به سریال را مشخص نمایید.
برای اطمینان از شماره پورت اختصاص یافته به بخش Device Manager ویندوز مراجعه کنید. در اینجا به عنوان مثلا پورت ۱۱ اختصاص داده شده است.
کلید Next را فشار دهید تا به صفحه بعدی منتقل شوید. در صورتی که مراحل قبلی به درستی انجام شده باشند با صفحه زیر نمایش داده خواهدشد که در آن ظرفیت حافظه Flash میکروکنترلر شناسایی شده است. در غیر این صورت برنامه را مجددا اجرا نمایید.
کلید Next را در این صفحه و صفحه بعدی فشار دهید تا به صفحه اصلی برنامه منتقل شوید.
مسیر فایل HEX مورد نظر را مطابق شکل زیر با فشردن کلید … مشخص نمائید (به عنوان مثال در اینجا از کد برنامه ی چشمک زن LED ها استفاده میکنیم) و برای بازبینی پروگرام صحیح میکروکنترلر تیک گزینه Verify after download را بزنید.
کلید Next را فشار دهید تا عملیات انتقال فایل شروع شود. درصورتیکه عملیات با موفقیت انجام شده باشد پیغام زیر ظاهر خواهد شد.
در نهایت پین BOOT0 را مجددا از حالت یک بودن خارج کرده و میکروکنترلر را ریستارت کنید.
۲- استفاده از پروتکل SWD
این پروتکل که مخصوص شرکت ST هستش فقط با ۵ پین توانایی پروگرام و دیباگ میکروکنترلر رو برای ما فراهم می کنه.
این پین ها به صورت زیر هستن.
- SWCLK
- SWDIO
- RESET
- GND
- VCC
در نتیجه فقط کافیه پین های نوشته شده که در تمام میکروکنترلرهای STM32 وجود دارد رو به پروگرامر متصل کنید و عملیات دیباگ و پروگرام رو به راحتی انجام بدین.
من برای کار با میکروکنترلرها با استفاده از این روش کابلی به صورت زیر تهیه کردم و در تمام بردها مطابق با همین استاندارد بالا پین ها رو متصل می کنم.
پین های پروگرامر هم به این صورته
در این روش نرم افزار مورد استفاده هم مشخصه که STlink هستش و همراه پروگرامر عرضه میشه. نکته مهمتر کامپایلرهای IAR و Keil مستقیما پشتیبانیش می کنن.
۳- استفاده از پروتکل Jtag
این پروتکل در همه مدل های STM32 موجود نیست. برای مثال نمونه ای که در بالا معرفی شد فاید این پروتکل می باشد.
در مورد میکروکنترلرهایی که این پروتکل رو دارن می تونید به راحتی با استفاده از پروگرامر Jlink که شاید برای کار با سری های اتمل یا فیلیپس قبلا خریداری کرده باشید، استفاده کنید.
پین ها در این پروتکل به صورت زیر می باشد.
نکته ای که باید بهش توجه کنید اینکه در این روش یک سری از پین ها به مقاومت های Pullup و Pulldown نیاز دارن که من اونها در نقشه زیر قرار دادم.(نقشه قسمت Jtag برد کاتالیست F407)
پیروز و موفق باشید