در این پست قصد داریم شماتیک و PCB یک پروگرامر ST LINK به همراه فایل BIN آن راجهت ساخت و مصرف خدمت شما ارائه نماییم.
مقدمه ساخت STLINK Programmer :
در حال حاضر میکروکنترلر های آرم از محبوبیت زیادی بر خوردار هستند. شرکت های زیادی مثل :
texas instruments , analog devices , NXP® Semiconductors, STMicroelectronics و غیره امروزه تحت لیسانس شرکت ARM اقدام به تولید میکروکنترلر آرم مینمایند.
هدف ما در این مقاله ساخت یک پروگرمر برای میکروکنترلر های شرکت STMicroelectronics است و میخواهیم سخت افزار آن به همراه فایل شماتیک و PCB و نحوه ساخت آن را برای پروگرام کردن میکروهای این شرکت معرفی نماییم.
نرم افزار مخصوص پروگرامر ST LINK:
برای برنامه ریزی روی میکرو کنترلر ها از روش های مختلفی استفاده میشود. معمولا همه آنها از سیستم jtag پشتیبانی میکنند، همچنین شرکت های سازنده راههایی را برای پروگرام کردن بدون سخت افزار پروگرامر پیش بینی میکنند. شرکت STM هم برای این منظور نرم افزاری به نام Flash loader ارائه کرده است، که به کمک آن میتوانید توسط پورت سریال میکرو را پروگرام کنید. (البته یکم درد سر هم داره). راه دیگه استفاده از پروگرامر های مخصوص برای میکروکنترلر ها است.
شرکت STM برای میکروهای شرکت خود یک پروگرامر به نام ST LINK ارائه کرده که نسبت به دیگر پروگرامر ها قیمت مناسبی دارد و با آن تمام خانواده های این شرکت را میتوان دیباگ و پروگرام نمود.
نرم افزار و رابط پروگرام
برای استفاده از پروگرامر ST LINK باید درایور آن را از لینک زیر دانلود کرده و نصب کنید. سخت افزار ارائه شده توسط رابط کاربری SWD با میکرو ارتباط گرفته و برنامه را روی آن میریزد.
ملزومات ساخت پروگرامر رایگان STLINK:
ساخت این پروگرامر براحتی امکان پذیر است. قطعات آن را سفارش دهید.
برنامه میکروی آن را توسط یک پروگرامر دیگر روی چیپ PCB پروگرامر ریخته و از کار کرد آن لذت ببرید.
برای این منظور پایه های مربوطه DIO , CLK از کنار برد بیرون آمده است.
فایل شماتیک و PCB این پست با استفاده از نرم افزار PROTEL DXP-ALTIUM توسط آقای مهدی رحیمی طراحی شده است که میتوانید بصورت رایگان آن را از لینک زیر دانلود نمایید.
نکته مهم : با توجه به این که پایه ریست پروگرامر در این مدار سیم کشی نشده است امکان پروگرام کردن میکرو در حالت under reset با استفاده از این مدار وجود ندارد. این حالت در زمانی که پایه های swd یا swclk را به عنوان GPIO برنامه ریزی کرده باشید برای پرورگرام میکرو ضروری است.
لازم به ذکر است فریمور هیچ مشکلی ندارد تنها مساله همان پایه ریست است.
دانلود فایل Bin برنامه پروگرامر
سلام با تشکر مطالب مفید که اموزش میدین بسیار ارزنده وعالیه اما بنده یه پروگرمر superpru3000 دارم که نحوه ادیت فیوز بیت ها رو با ان بلد نیستم میشه یه راهنمایی بفرمایید خیلی ممنون میشم
واقعا باید تحسین کرد سیسوگ رو بسیار پر محتوا آدم غرق میشه توش واقعا مخصوصا مطالب شما جناب زئوس من واقعا طرفدار مطالبی که شما نوشتید هستم
فقط یک سوال داشتم اینکه من با خواندن کامنت ها فهمیدم که برای stm8 باید پایه های pb11و pb10با مقاومت به هم وصل شوند من سوالم اینه که چه مقاومتی باشه و به چه نحوی به هم متصل شوند ۲ پین و اگه یه توضیح بدید ممنون میشم
سلام. ممنون. جهت LED سبز رنگ ظاهرا برعکس است.
سلام خسته نباشید ممنون
یه سوال داشتم ایا فریمور از طریق پایه های swd میکرو(PA13 , PA14) با یه پروگرمر دیگه روی ان ریخته میشود؟
واینکه با کیل 5 تست شده ایا جواب میده؟ چون بعضی پروگرمر ها نمیدونم چرا با کیل 5 پروگرم نمیشه
سلام و دورد بر شما
بله از اون طریق میشه پروگرامش کرد و از طریق DFU و پورت سریال هم میشه پروگرامش کرد
بله با کیل به خوبی کار میکنه و مشکلی نیست
سلام خسته نباشید
ببخشید من میخوام با این پروگرمر stm8 رو پروگرم کنم و نیاز به پایه swim دارم
روی این پروگرمر این پایه شماره چند آیسی هست؟
ممنون از راهنماییتون
سلام دوست عزیز
خوب متاسفانه پایه SWIM که برای پروگرام کردن STM8 مورد استفاده است توی این مدار لحاظ نشده
ولی اگر قصد دارید خودتون اونو اضافه کنید فکر کنم پایه های PB10 و PB11 هستن که باید این دو پایه رو با مقاومت به هم وصل کنید و بیارید بیرون
مثل پایه SWDIO
از پایه PB10 باید خروجی بگیرم یا از پایه PB11 برای پروگرم؟
عرض کردم ظاهرا این دوتا پایه رو با مقاومت باید به هم وصل کنید و خروجی بگیرید
توی اینترنت بگردید شماتیکش هست دقیقا که چطوریه
سلام سیسوگ عزیز
من یه برم tm32f746ng discovery دارم که متاسفانه برنامه میکروکنترلر st-link روی برد پاک شده و به علت ساختار این برد عملا الان استفاده ازش غیر ممکن. فایل موجود توی این پست رو روی میکروی پروگرامر برد ریختم اما متاسفانه جواب نداده کلییییییییییییییییییی هم تو نت گشتم اما هیچی پیدا نکردم(فایل هگز و …) خواهش میکنم کمک کنید چطور دوباره بتونم از بردم استفاده کنم.
پیشاپیش خیلی ممنونم
سلام . من یدونه پروگرمر ST LINK دارم که سوخته، حالا میکزو رو تعویض کردم ، و فایل برنامه رو هم پروگرم کردن روش، برای میکروهای STM32 با SWD کار میکنه و میتونه پروگرمشون کنه اما برای میکروهای STM8 با SWIO نمیتونه ،ممنون میشم کمکم کنید این مشکل رو رفع کنم
سلام خیلی ممنون از زحمات بی دریغ همگی دوستان من این پروگرمر را کمی بزرگتر طراحی کردم و خواستم برای شما ارسال کنم تا اگر دوستان علاقمند بودند از آن استفاده کنند.من برد شما را ساختم و جواب گرفتم و سپس برد را مجددا طراحی کردم و ساختم و جواب گرفتم و خواستم در PCB آنرا در اختیار دوستا قرار بدهم.چطور برای شما ارسال کنم .با سپاس مجدد
سلام دوست عزیز
خوشحالیم که این برد جواب داده و مفید بوده و متشکر از شما که قصد دارید به اشتراک بگذارید
سورس برد را برای ادمین تلگرام سیسوگ ارسال کنید انشاله پایین پست قرار خواهیم داد
با درود فراوان
من یک عدد برد اموزشی دارم که مخصوص میکروکنترلر avr می باشد و روی ان نوشت شده stk200/300 من قبلا به راحتی کار می کردم چون مادربرد .را تعویض کردم در مادربرد جدید فقط پورت usb دارد. امروز من یک سر کابل DB9 و سر دیگر ان را usb زدم. ( روی برد اموزشی ای سی max232 دارد) با تعجب دیدم پورت usb شناسایی نمی شود. و کامپیوتر خطا می دهد.
ایا سیم بندی انرا اشتباه کردم. به نظر شما چون استاندارد را تغییر دادم باید درایو stk500 نصب نماییم. و در محیط اتمل استودیو 7 چگونه ان را معرفی کنم.
چه درایوی باید نصب شود تا با ویندوز10 64 بیتی سازگار هم سخت افزار اموزشی شناسایی شود.و هم یو اس بی کابل است.
با سپاس فراوان
😐 دوست عزیز امیدوارم که پورت usb کامپیوتر شما صدمه ندیده باشه!
چرا فکر کردید که با این کار قادر خواهید بود برد رو پروگرام کنید ؟
بذارید توضیح بدم که پروگرامر stk200/300 در واقع از پورت lpt برای برنامه ریزی استفاده میکنه (در حالت بیت بنگ)! پس شما برای این که بتونید مجددا بردتون رو پروگرام کنید نیاز به پورت lpt دارید یا یه پروگرامر دیگه که از usb پشتیبانی کنه مثل stk500 یا usbasp !!!
stk500 چیزی بیشتر از پورت سریال هست – در واقع دستورهای پروگرامر رو به شکل سریال میگیره ولی روش یه میکروکنترلر داره که فرایند پروگرام کردن رو هندل میکنه !!!!
با سلام
پس این کابل های که تو بازار هستند یک سر کابل DB9, سر دیگر USB هستش چگونه کار می کنه.
سلام
داخل اون کابل ها معمولا توی سر rs232 یه آیسی میدل usb به سریال کار شده و غیر ممکنه که مستقیم وصل کرده باشند.
بله -گفتم رو خود برد ای سی Rs232 هستش. و خود سر کابل یو اس بی هم به پورت یو اس بی کامپیوتر وصل میشود.
فقط نمیدانم چرا شناسایی نمیشود.
ایا برای شناسایی نرم افزار خاصی می خواهد.
سلام – من فکر میکنم اون آیسی که شما روی برد دیدید آیسی تغییر سطح ولتاژ هست مثل max232 یا امثال اون
در صورتی که برای تبدیل پروتکل usb به 323 نیاز به آیسیهایی مثل pl2303 یا cp2103 است
با سلام
من تصمیم دارم. یک پروگرامر مخصوص به خود را طراحی کنم.
فقط با یو اس بی کار کند. بیشتر پروگرامر ها خیلی شلوغ هستند..
نه چیز دیگر ایا این امکان وجود دارد.
ایا می شود فقط از طریق یو اس بی میکروکنترلر ای وی ار . و میکرو کنترلر های StM32 را برنامه ریزی کرد.
باسپاس
سلام دوست عزیز
خوب usb در واقع یه پروتکل نسبتا پیچیده داره که برای استفاده از اون حتما باید از رابط هایی usb استفاده کنید و مثل پورت های lpt یا com نیست که بشه مستقیم کنترلش کرد.
برای همین در ساده ترین حالت ممکن باید یک میکروکنترلر که از usb پشتیبانی کنه نیاز دارید.
ما قبلا توی سیسوگ فریمور st-link رو تغییر دادیم که هم میتونه avr و هم arm رو برنامه ریزی کنه
پروگرامر Sis-Link ساخت پروگرامر ARM و AVR: دگردیسی
با سلام.
شما اینجای پست گفتید که “نکته مهم : با توجه به این که پایه ریست پروگرامر در این مدار سیم کشی نشده است امکان پروگرام کردن میکرو در حالت under reset با استفاده از این مدار وجود ندارد. این حالت در زمانی که پایه های swd یا swclk را به عنوان GPIO برنامه ریزی کرده باشید برای پروگرام میکرو ضروری است. لازم به ذکر است فریمور هیچ مشکلی ندارد تنها مساله همان پایه ریست است.”
ینی من پایه ریست میکروی روی پروگرامر رو به میکرویی که میخوام پروگرام کنم وصل کنم؟
اگه نه پس چیکار کنم؟
ممنون میشم سریع جواب بدید
سلام دوست عزیز از پایه pb0 به عنوان ریست میکرویی که میخواید پروگرام کنید استفاده کنید.
ممنون از پاسختون
کدوم پایه میشه؟
سلام
فکر میکنم PB10 و PB11 باشه ! توی شماتکش که توی اینترنت هست نگاه کنید به خوبی مشخصه
سلام
مرسی بابت مطالبتون
نمیشه شماتیک رو دستکاری کرد(+کد) و swim رو به پروگرمر اضافه کرد؟
چرا میشه – نیازی نیست که کد دستت کاری بشه و تنها لازمه که پایه مربوط به swim رو به به یه پین هدر برسونید. 🙂
سلام من پروگرمر را ساختم و به خوبی کار میکند از زحمت شما متشکرم.فقط یک نکته اگر فریمور برد پشتوانه پایه ریست را داشته باشد و در سخت افزار حذف شده است اون پایه کدام پایه میکرو پروگرمر است با تشکر
سلام دوست عزیز
شماتیک کامل رو میتونید در لینک زیر ببینید
Design your own ST-LINK/V2
لینک مشکل داره
سلام دوست عزیز
الان چک کردم لینک ها بدون مشکل بودند
سلام وقت بخیر مهندس
سپاسگزارم از تمام مطالب خوب و مفید شما
مورد بسیار عجیبی در بین دوستان برنامه نویس برای میکروکنترلرهای
stm32
وجود داره که تقریبا وقتی با این مشکل مواجه میشن از خیر حل کردنش میگذرن
ولی چون جنابعالی عزم بسیاری در حل این مطالب دارید خواستم با شما درمیون بگذارم انشالاه که مرتفع بشه
مشکل در نوع پروگرام کردن پروگرامرهای StLink/V2
از نوع کوچک یا همون شبه فلش مموریهاست
این پروگرامرها سری F1 رو در برنامه کیل ورژن 5 به خوبی پروگرام میکنن
اما زمانی که یک میکرو سری F4 بنده خودم F407VG زدم رو بهش وصل میکنیم در همون کیل 5 اصلا میکرو رو نمیشناسه
و میکرو فقط با مبدل سریال به Usb پروگرام میشه
با stlink utility هم جواب نمیده،، یعنی پروگرامر رو میشناسه ولی میکرو رو نه
در ضمن با نرم افزار خود stlink موجود در مسیر نصب کیل این پروگرامر به ورژن آخر آپگرید شده
ورژن v2j34s7
راه حلی مد نظر حضرت عالی هست
سپاس
امم مطلب جالبیه
خوب چندین احتمال منطقی وجود داره برای این مساله ای که اشاره کردید :/
مساله اول اینه که این مدل از پروگرامر های ارزون قیمت توی خروجی از آیسی بافر استفاده نمیکنند و ممکنه به دلیل طول سیم یا امپدانس موجود روی این پایه های میکرو سیگنال درست منتقل نشه
مساله دوم اینه که خط swd پول آپ نشده باشه و همین مساله میتونه باعث بشه که میکروکنترلر پروگرام نشه ؛
برای تست میتونید از پروگرامر j-link استفاده کنید تا از کارکرد صحیح رابط swdمطمٔن بشید.
سلام
خسته نباشید
تبریک می گم بابت سایت خوبتون
لینک اول
https://sisoog.com/download/26374/
کار نمی کنه دانلود تو 70 % قطع میشه
با تشکر
ثابتی
دوست عزیز من چندین بار با چند مرورگر تست کردم مشکلی نیست اگر مشکلتون ادامه دار هست ممنون میشم با ای دی ادمین سیسوگ در تلگرام تماس بگیرید
از دانلود منیجر IDM برای دانلود استفاده نکنید !
با خود مرورگر دانلود رو انجام بدهید.
سلام من این پروگرمرو ساختم جواب نگرفتم. حتی usbuf02w6 رو هم جدا کردم مستقیم وصل کردم جواب نگرفتم. مشکل اصلی اینه که میگه نمیشه under reset پروگرم کرد. توی تنظیمات stlink utilty هم میزنم که under reset پروگرم بشه قبول نمیکنه ارور میده. و البته یه مشکل اساسی هم اینه که گاهی قطع و وصل میشه خود به خود! من روی برد blue pill (stm32f103c8t کد رو پروگرم کردم و کار کرد تبدیل شد به stlink اما این نشد!
یه سوال دیگ هم دارم اینه که فرق پروگرمری که شما گذاشتین و کلا stlink ها با پروگرمرهای برد دیسکاوری چیه؟ من برای پروگرم با stlink همیشه مجبورم boot0 رو از 0 بذارم روی 1 یه reset بزنم تا بره تو حالت boot بعد کدو رو میکرو بریزم. اما بردای دیسکاوری بدون جابجایی boot0 کد رو پروگرم میکنه. چطوری میتونم همچین خاصیتی رو به stlink اضافه کنم؟ تو دیتاشیت دیدم که پایه های uart1 میکرو و stlink برد دیسکاوری به هم وصلن. اگه منم اینکارو انجام بدم این خاصیت به پروگرمر اضافه میشه؟ یا اصلا قضیه مربوط میشه به فریمور؟ یا هر چیز دیگه ای؟
ممنون میشم جواب بدین. تشکر
اوپس در مورد مشکل اول – بله درست می فرمایید ؛ مشکل اینه که متاسفانه به دلایلی که نمیدونم (شاید عدم دقت کافی طراح) چیه پایه ریست روی کانکتورهای پروگرام حذف شده و سیم کشی نشده ؛ برای همینه که نمیتونید آندر ریست پروگرام کنید 😐
اون مود پروگرامری که شما استفاده میکنید پروگرام از طریق بوت لودر داخلی میکرو است و تا اونجایی که میدونم پروگرامر اس تی لینک این قابلیت رو نداره
سلام مجدد
و تشکر از سایت خوبتون
من این برد این مدار رو ساختم و مونتاژ کردم و سورس رو ریختم رو میکرو. اما وقتی کابل usb رو وصل میکنم فقط led قرمز چشمک میزنه و هیچ اتفاق دیگه ای نمیوفته. یعنی سیستم هیچی نمیشناسه! میشه راهنماییم کنید؟
با تشکر
اوهوم
احتمالا پایه های Data پورت USB به درستی متصل نشده است یا پول آپ روی USB انجام نشده است ؛ در غیر این صورت حتی اگر میکروکنترلر روی برد پروگرام هم نشده باشد باید روی پورت USB پیامی دریافت کنید که دستگاه جدیدی وصل شده است
سلام
فایل سورس برنامه کجاست؟
نمیتونم دانلودش کنم!!!
سلام دوست عزیز این پست مروبط به پروگرامر ST-Link هست و سورس کدش تجاریه و در اختیار شرکت ST 😐
سلام
فایل سورس برنامه کجاست؟
نمیتونم دانلودش کنم!!!
سلام دوست عزیز پایین صفحه دو تا لینک هست که میتونید دانلود کنید و مشکلی هم نداره
اگر مشکلی دارید لطفا با ای دی سیسوگ در تلگرام مرتبط بشید تا موضوع دقیق تر بررسی بشه
سلام و خسته نباشید
بلاخره این مدار کار میکنه یا نه؟
ساخته و تست شده؟
بله کار میکنه هم ساخته و هم تست شده
ممنون بابت سایت خوبتون
خواهش میکنم دوست عزیز
راستی با این پروگرامر دیباگ هم میشه انجام داد؟
بله هم امکان پروگرام کردن هست و هم دیباگ کردن – برای هیچ کدوم مشکلی نخواهید داشت.
توصیه میکنم پروگرامر رو هم ببینید
ممنونم ازتون
خواهش میکنم دوست من
سلام
چرا از میکرو f103c8t6 استفاده شده در صورتی همه STLINK V2 ها از f103cbt6 استفاده میکنند ؟!
خوب با هر دو میکرو میشه ؛ اما بهتره همون میکرویی که خودتون گفتید باشد ؛ من نمونه های چینی رو که باز کردم هر دو نمونه رو توشون دیدم که به خوبی هم کار می کنند.
با سلام
ممنون از سایت خوبتون…واقعا عالیه
لینک ها مشکل دارن میشه اصلاح بفرمایید .باتشکر
سلام دوست عزیز
بله توی قسمت دانلود ها مشکلی وجود داشت که خوشبختانه حل شد
متشکر
سلام. تشکر بابت مطالب شما.
این پروگرمر وقتی که به درگاه usb متصل میشه ولی پروگرم رو انجام ندادیم پایه ای که به led متصله، کدام led رو روشن میکنه؟ یعنی در این حالت صفره یا یک؟
سلام و درود ؛ نمی تونم بگم برای این کامنت خوشحال نیستم 🙂
در حالت پیش فرض LED سبز باید روشن باشه
با سلام
لینکها مشکل دارند.
با سلام دوست عزیز
لینک ها چک شدند ، مشکلی مشاهده نشد و به خوبی دانلود شدند.
سلام وقت بخیر.
ممنونم از شما و مهندس رحیمی
میخاستم بدونم مهندس رحیمی چطور تونستن این مدارو طراحی کنن؟؟
راهنماشون چی بوده؟؟
سلام
من درست کردم ولی کار نکرد . اصلا درایورش نصب نمیشه چرا ؟؟؟
سلام
ممون از سیات خوب شما، یه آی سی stm8s003f3 از بازار خریدم و به اون تغذیه وصل کردم(+5ولت) و سیم های پروگرامر st link v2 را هم به اون وصل کردم اما پروگرامر اونو نمیشناسه. پروگرامر من PROGRAMMER ST-LINK V2 ST است که از بازار خریدم در ضمن من این کار را با سه آی سی امتحان کردم که بازم حواب نگرفتم ممنون میشم راهنمایی کنید.
بله صحبح است ، میکرویی که شما قصد برنامه ریزی اونو داری در واقع STM8 است که با خانواده STM32 که یک میکروکنترلر ARM بیس است متفاوت پروگرام می شود .
در این نسخه از PCB فقط رایط SWD که مخصوص پروگرام کردن میکروهای آرم بیس است در دسترس قرار گرفته است.
در واقع شما برای برنامه ریزی میکرو های STM8 باید از درگاه SWIM استفاده کنید نه SWD
سلام و درود
بنده هم این مشکل رو با STM8f103 داشتم (دقت کنید که باید از پایه SWIM و RST استفاده کنید) اما نکته اش اینه که حتما و حتما باید تغذیه ای سی STM8f103 باید 3.3V باشه چون روی 5 ولت مشکل داره البته بگما با نرم افزار VScode و افزونه PlatformIO مشکلی نداره ولی با نرم افزار IAR این مشکل وجود داره و راهکارش هم استفاده از تغذیه 3.3V عه
سلام و درود
بنده هم این مشکل رو با STM8f103 داشتم (دقت کنید که باید از پایه SWIM و RST استفاده کنید) اما نکته اش اینه که حتما و حتما باید تغذیه ای سی STM8f103 باید 3.3V باشه چون روی 5 ولت مشکل داره البته بگما با نرم افزار VScode و افزونه PlatformIO مشکلی نداره ولی با نرم افزار IAR این مشکل وجود داره و راهکارش هم استفاده از تغذیه 3.3V عه.