در جلسه ی گذشته مهندس علیزاده زحمت کشیدن و توضیحاتی درباره ی رجسیتر ها در STM8 دادن و به زودی مطلبی هم برای کلاک ها در ادامه ی آموزش STM8 برای عزیزان در سایت قرار میگیره.
اما این جلسه قراره توضیحاتی در زمینه ی آموزش پروگرام کردن STM8 بدم.
در توضیحات جلسات گذشته گفته شد برای پروگرام کردن این آی سی فقط نیاز به یک پین SWIM هست و راحت میشه با استفاده از یک پین میکروکنترلر رو پروگرام کرد!تفاوتی نداره شما از پروگرامر های st-link mini یا St-link v2 استفاده کنید چون هر دو از آی سی های STM8 پشتیبانی میکنن.
آموزش پروگرام کردن STM8S003F3P6
ما در اینجا از یک هدربرد stm8 استفاده کردیم که دارای میکروکنترلر STM8S003F3P6 هست. دلیل استفاده از این میکرو هم کاربرد زیادش در صنعت و مطالب آموزشی در سراسر دنیاس و این که داخل ایران به راحتی پیدا میشه و همچنین قیمت خیلی پایینی داره.
نحوه اتصال میکروکنترلر STM8 به پروگرامر St-link
در تصویر بالا مشاهده میکنید که روی پروگرامر 4 پایه وجود داره که ترتیب اون ها از راست به چپ VCC و SWIM و Gnd و RST هست که برای ارتباط و پروگرام کردن میکروکنترلر های 8 بیتی Stm قرار داده شده. فقط باید به این نکته توجه کنید که این پروگرامر پایه VCC رو فقط برای سنس کردن روی خودش داره و ولتاژ تغذیه ی میکروکنترلر باید به وسیله منبع تغذیه به میکرو وصل بشه(اگر از همین هدر برد استفاده کنید میبینید که هدر برد سوکت داره و من هم با کابل تغذیه رو بهش دادم )ما این کار رو روی هدر برد انجام دادیم ، اما اگر از میکروکنترلر دیگه ای استفاده میکنید کافیه طبق دیتاشیت میکروی خودتون، این 4 پایه ی پروگرامر رو به میکروی خودتون وصل کنید.
خب ما یک نمونه کد رو فعلا برای پروگرام کردن بر روی این میکروکنترلر در نظر میگیریم:
کد:
#include <iostm8s003f3.h>
void delay_ms(unsigned long int n)
{
unsigned long int x=0;
unsigned long fCPU=2000000; // HSI RC =16 MHz ----- HSIDIV=8 ------CPUDIV=1 fCPU=16 / 8 / 1 Mhz
x=fCPU/1000;
x=x/50;
n=n*x;
while (n-- > 0);
}
//main entry point
int main( void )
{
CLK_ICKR=1; // High-speed internal RC on = 16 Mhz
CLK_CKDIVR = 24; //fHSI RC output/8 & fCPU=fMASTER/1
PD_ODR = 0; //Turn off all pins
PD_DDR_DDR3 = 1; //PortD, Bit 3 is output (PD3 - Data Direction Register)
PD_CR1_C13 = 1; //PortD, Control Register 1, Bit 3 (PD3) set to Push-Pull
PD_CR2_C23 = 1; //PortD, Control Register 2, Bit 3 (PD3) set to Push-Pull
while (1)
{
PD_ODR_bit.ODR3 = !PD_ODR_bit.ODR3;
delay_ms(1000);
}
}
بر روی هدر برد پایه ی 3 پورت D یک LED وجود داره ، که توسط این کد قراره هر یک ثانیه چشمک بزنه.
این کد رو در نرم افزار IAR باز میکنیم و طبق توضیحاتی که در جلسه ی معرفی مقدماتی نرم افزار IAR + ایجاد پروژه داده شده تنظیمات رو انجام میدیم و build all میکنیم تا خروجی فایل HEX رو نرم افزار IAR بهمون بده.
خروجی فایل در محلی که کد رو سیو کردین در پوشه ای به اسم Exe قرار داره که در ادامه باهاش کار داریم!
آموزش پروگرام کردن STM8 با نرم افزار stvp
برای پروگرام کردن میکرو ما از نرم افزار stvp استفاده میکنیم که توسط خود شرکت st برای این کار طراحی و ایجاد شده و میتونین از خود وبسایت St هم اون رو دانلود کنید:
این نرم افزار رایگانه!
و همچنین برای شناسایی پروگرامرتون توسط کامپیوتر نیاز به درایور دارین که اون رو هم از لینک زیر میتونین دریافت کنین( این درایور با ویندوز های Windows7, Windows8, Windows10 سازگاری داره و همه ی پروگرامر های St-link رو هم ساپورت میکنه)
خب الان هم فایل HEX رو در اختیار داریم و هم میکروکنترلر رو به st-link وصل کردیم و هم نرم افزار Stvp رو نصب کردیم!
نرم افزار stvp رو باز میکنیم وفایل Exe ای رو که توسط نرم افزار IAR تولید شده رو از طریق منوی file>open به نرم افزار معرفی میکنیم.
بعد از معرفی فایل hex ، از منوی بالا و گزینه ی Configure باید میکروکنترلر خودمون رو هم پیدا کنیم و اون رو مشخص کنیم:
بعد از ok کردن و معرفی مدل میکروکنترلر ،میبینید که در نوار کناری سمت چپ مشخصات و توضیحاتی داده شده مثل بخش configuration که برای من اطلاعات زیر رو داره :
CONFIGURATION
Hardware: ST-LINK
Programming mode: SWIM
Device name: STM8S003F3
Port: USB
بعد از معرفی میکروکنترلر و برای پروگرام کردن فایل هگز کافیه که کلید programming current tab رو بزنید و در کسری از ثانیه کد معرفی شده به روی میکروکنترلر شما ریخته میشه !
موفق باشید
منبع : لوینیک - آموزش آردوینو - Stm8