در این آموزش قصد داریم با میکروکنترلرهای PUYA از شرکت Puya Semicomctor و نحوه برنامه نویسی آنها آشنا شویم و بتوانیم یک برنامه که در آردوینو نوشته ایم را روی این میکروکنترلر آپلود کنیم. در این آموزش به طور خاص از مدل PY32f002A برای انجام پروژه استفاده شده است ولی می توان از روش گفته شده برای برنامه نویسی و بارگذاری برنامه روی سایر میکروهای این خانواده از قبیل PY32F030 و… نیز استفاده کرد. تا پایان این مطلب با ما همراه باشید تا به بررسی جزئی تر این میکرو بپردازیم. همچنین، برای آشنایی با مشخصات کلی این میکروکنترلرها می توانید به این مطلب مراجعه کنید.
همانطور که در این مطلب اشاره شد این میکروکنترلرها بسیار ارزان می باشند و برای کارهای تیراژ بالا بسیار مناسب است. همچنین، این میکروهای 32 بیتی دارای توان پردازشی مناسبی هستند. شکل زیر بلوک دیاگرام این میکروکنترلرها نشان می دهد.
همانطور که در بلوک دیاگرام بالا مشخص شده این میکرو می تواند از طریق کریستال خارجی با فرکانس بیشینه 24 مگاهرتز کار کند.
بررسی برد توسعه PY32F002A
برد استفاده شده در این آموزش PY32F002A Dev Board شامل یک کرستال خارجی 24 مگاهرتزی و دو کلید BOOT و RESET یک LED خروجی و سایر GPIOهایی که از برد به بیرون آورده شده است.
این برد شامل تغذیه 3.3 ولتی می باشد و یک کانکتور USB C که صرفا مسئولیت تامین تغذیه آن را بر عهده دارد.
نحوه برنامه نویسی و بارگذاری برنامه روی میکروی PY32F002A
برای برنامه نویسی کاربر می تواند از طریق دو روش این کار را انجام دهد.
- برنامه نویسی با استفاده از نرم افزار Arduino
- برنامه نویسی با استفاده از توابع HAL و نرم افزار Keil
ما در این آموزش به برنامه نویسی با استفاده از نرم افزار Arduino (نسخه 2.3.2) می پردازیم. برای اینکار ابتدا Arduino را باز می کنیم. و سپس از تب File گزینه Prefrences را انتخاب میکنیم.
و از قسمت Additional boards manager URLS لینک زیر که مربوط به پکیج PY32Duino می باشد را اضافه می کنیم.
1 | https://github.com/PY32Duino/Arduino-pack-json-ci/releases/download/Nightly/package_py32_index.json |
در ادامه به تب Tools رفته و گزینه Board manager را انتخاب می کنیم و عبارت PY32 Arduino
را جستجو می کنیم.
سپس در تب Files گزینه New Sketch را میزنیم تا یک برنامه جدید بنویسیم. برنامه زیر صرفا یک برنامه Blink می باشد که LED روی برد و متصل شده به پایه PA5 را به مدت یک ثانیه خاموش و روشن می کند و در ابتدا یک Hello World از طریق UART ارسال می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void setup() { Serial.begin(115200); pinMode(PA5, OUTPUT); Serial.println("Hello World!"); } void loop() { digitalWrite(PA5, HIGH); delay(1000); digitalWrite(PA5, LOW); delay(1000); } |
برای کامپایل برنامه مانند عکس در منوی Tools گزینه Board زیر شاخه PY32 Arduino و در نهایت Generic PY32F002A Series را انتخاب می کنیم.
در انتها نیز روی گزینه Verify کلیک کرده تا برنامه کامپایل شود.
بارگذاری برنامه روی میکروی PY32F002A
در مرحله بعد می توان با دو روش برنامه ای را که کامپایل کرده ایم را روی میکرو آپلود کنیم.
- روش اول با استفاده از Jlink و پروتکل JTAG و نرم افزار Jlink-SEGGER
- روش دوم با استفاده از مبدل USB به سریال و کلید بوت
در این آموزش ما از روش دوم استفاده می کنیم. در ابتدا در لینک گیت هاب زیر رفته و برنامه پایتون puyaisp.py را دانلود می کنیم. سپس آن را در نرم افزار VS Code باز می کنیم. برای اجرای برنامه پایتون در VS Code ابتدا پایتون را نصب می کنیم برای نصب پایتون میتوان از آموزش این لینک استفاده کرد. بعد از نصب پایتون می توان برنامه puyaisp.py را اجرا کرد.
قبل از اجرای برنامه ابتدا میکرو باید در وضعیت بوت روشن شود تا بتواند از طریق USB پروگرام شود. برای اینکار می توان کلید بوت روی برد را نگه داشت و سپس تغذیه برد را روشن کرد.
بعد از اتصال USB ابتدا باید فایل کامپایل شده .bin را که از طریق آردوینو کامپایل شده پیدا کرد برای اینکار باید در قسمت Prefrences تیک گزینهی compile را بزنیم تا در قسمت output مسیر فایل کامپایل شده نمایش داده شود.
سپس با کپی کردن این فایل در مسیر برنامه پایتون و اجرای دستور زیر می توان برنامه را روی میکرو پروگرام کرد.
1 | python puyaisp.py -f py32test.ino.bin |
توجه داشته باشید که بعضی مواقع باید در ابتدای آپلود کلید ریست را یکبار فشار دهیم.
اکنون LED روی برد باید شروع به چشمک زدن کند.
✅دانلود کد پروگرامر PY32F002
سلام عالی بود
فقط سوالم اینه که نیازی به بوت لودر نداره که ابتدا بریزیم روی میکرو؟
سپاس
سلام. نه. هیچ چیزی نیاز نداره