...

راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم

راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم
2 بازدید
۱۴۰۵-۰۸-۲۳
11 دقیقه
  • نویسنده: حسن معماری
  • درباره نویسنده: من حسن معماری , طراح محصول یا Product Designer هستم. و محصولات یا دستگاه های مختلف سخت افزاری بر پایه الکترونیک , کامپیوتر و هوش مصنوعی طراحی میکنم. شرکت معمار الکترونیک صنعت

در این قسمت پایانی از مجموعه بررسی میکروکنترلر CH32X035C8T6، راه‌اندازی تراشه با MounRiver Studio، نمونه‌کدهای کاربردی و نکات طراحی صنعتی و عیب‌یابی را مرور می‌کنیم. برای درک بهتر مطالب، پیشنهاد می‌شود ابتدا قسمت قبل، «راهنمای جامع پین‌اوت CH32X035C8T6 و طراحی مدار حداقلی میکروکنترلر» را مطالعه کنید.

راه‌اندازی و کدهای شروع کار

ابزارها و زنجیره توسعه

همه نمونه کدهای این سند مطابق استاندارد محیط MounRiver Studio II (نسخه ۲، رایگان و رسمی) نوشته شده اند؛ این IDE مبتنی بر Eclipse با کامپایلر GCC عرضه می‌شود و پس از انتخاب قالب پروژه CH32X035، کتابخانه استاندارد پریفرال WCH و فایل پیکربندی ch32x035_conf.h از پیش به پروژه متصل است. هر تابع کتابخانه با همان الگوی رسمی بسته EVT کار می‌کند: روشن کردن کلاک پریفرال روی باس مربوطه، پرکردن ساختار xxx_InitTypeDef و فراخوانی تابع.xxx_Init ساختار استاندارد پروژه:

قالب پروژه MounRiver Studio II برای CH32X035

IDE — MounRiver Studio II رسمی و رایگان؛ ساخت پروژه، کامپایل و فلش از همان محیط انجام می‌شود؛ WCH-Link / WCH-LinkE — پروگرامر و دیباگر دو سیمه SDI؛ متصل به هدر J2؛ بسته EVT — کتابخانه استاندارد پریفرال + ده ها مثال آماده،GPIO،EXTI،USART،ADC،TIM،SPI،I2C (،DMA،OPA/CMP،TOUCHKEY،USBFS،USBPD،PIOC،PWR IWDG و…) که همه کدهای این سند با همان سبک و همان توابع نوشته شده اند؛ WCHispTool / wchisp — برنامه ریزی از طریق بوت لودر USB داخلی بدون پروگرامر؛ پشتیبانی جامعه: هسته Arduino برای CH32، پیوند Rust (ch32-hal) و PlatformIO نیز موجود است.

نمونه ۱ — چشمک زدن LED (خروجی GPIO)

مطابق مثال رسمی GPIO_Toggle در LED EVT؛ روی PA0 (پایه ۱۰ مدار حداقلی). ساختار همه برنامه های WCH یکسان است: گروه بندی وقفه، به روزرسانی کلاک، راه اندازی Delay و در صورت نیاز پورت سریال دیباگ.

فایل main.c — خروجی پوش پول و تاگل هر ۵۰۰ میلی ثانیه

نمونه ۲ — پورت سریال و printf

سریع ترین مسیر دیباگ، تابع آماده USART_Printf_Init است که USART1 را روی TX1=PB10 راه می‌اندازد و printf را به آن متصل می‌کند. سپس یک پیکربندی کامل USART2 روی PA2/PA3 می‌بینیم که الگوی استاندارد همه پریفرال های WCH را نشان می‌دهد: کلاک APB، پیکربندی (TX GPIO به صورت AF_PP و RX شناور)، ساختار USART_InitTypeDef و فعال سازی.

printf روی + USART1 پیکربندی USART2،TX=PA2) (RX=PA3 و ارسال/دریافت Polling

به جای printf از طریق UART، تابع SDI_Printf_Init هم در کتابخانه هست که خروجی printf را از رابط دیباگ SWD (بدون اشغال هیچ UART) می‌فرستد — انتخاب مناسب بردهای نهایی که پایه UART آزاد می‌خواهند.

نمونه ۳ — Watchdog مستقل (IWDG)

ستون فقرات اطمینان پذیری در بردهای صنعتی، Watchdog است. کلاک IWDG از RC داخلی ۴۷kHz تأمین می‌شود که کاملا از کلاک اصلی مستقل است. با Prescaler=32 و Reload=4000، بازه ریست حدود ۲٫۷ ثانیه می‌شود (4000 ÷.)46.875kHz/32

راه اندازی IWDG و الگوی تغذیه سگ در حلقه اصلی

قاعده طلایی Watchdog

سگ را فقط از یک نقطه و پس از اتمام موفق کامل یک سیکل کنترلی تغذیه کنید، نه داخل تایمرهای عمومی یا وقفه ها. اگر بخشی از سیستم گیر کند ولی وقفه ها همچنان اجرا شوند، Watchdog درست کار نمی‌کند.

نمونه ۴ — مانیتور ولتاژ PVD

PVD (کاشف ولتاژ تغذیه) چهار آستانه دارد:،2.1V،2.3V 3.0V و.4.0V با وصل آن به خط وقفه EXTI، هر زمان ولتاژ VDD از آستانه عبور کند وقفه صادر می‌شود — پایۀ اصلی حفاظت در برابر افت ناگهانی تغذیه (بخش ۷.۳).

راه اندازی PVD با آستانه 3.0V و خط وقفه (مطابق مثال رسمی PVD_VoltageJudger)

نمونه ۵ — حالت Stop و بیدارباش با وقفه خارجی

در کاربردهای باتری خور یا تجهیزات Always-On، بعد از هر سیکل کاری می‌توان با فراخوانی PWR_EnterSTOPMode مصرف را تا حدود Aμ۷۵ کاهش داد؛ بیدارباش با یکی از خطوط EXTI انجام می‌شود و چون بعد از بیداری کلاک سیستم به HSI بازمی گردد، باید SystemInit دوباره فراخوانی شود (الگوی مثال رسمی Stop_Mode):

مثال MounRiver Studio II — حالت Stop و بیدارباش با EXTI روی PA0 (مبنای:EVT) Stop_Mode

طراحی صنعتی: تغذیه و حفاظت

بیشتر خرابی های میدانی بردهای میکروکنترلری ریشه در تغذیه و لبه های ورودی دارند، نه در خود چیپ. این بخش تجربه های عملی طراحی X035 برای محیط صنعتی را با تمرکز بر همان دو نقطه مرور می‌کند. اعداد مرجع، مستقیما از جداول دیتاشیت استخراج شده اند.

انتخاب ولتاژ تغذیه و بودجه جریان

دو سناریوی کلاسیک دارید: تغذیه مستقیم ۳٫۳ ولت، یا ۵ ولت با رگولاتور خطی. در سناریوی ۵ ولت، تراز منطقی پایه ها هم ۵ ولت می‌شود که اتصال به شناورهای صنعتی کلاسیک (حسگرهای ۴–۲۰mA با مقاومت بار، خروجی اپن کالکتور ۲۴V با مبدل سطح) را ساده تر می‌کند؛ در سناریوی ۳٫۳ ولت، مصرف کمتر و سازگاری با ماژول های مدرن،RF (CAN ترانسیور ۳٫۳V) بهتر است. بودجه جریان را جدی بگیرید: چیپ در ۴۸MHz با همه پریفرال ها فقط ~۴٫۲mA مصرف می‌کند، اما هر پایه تا ۳۰mA منبع ۴۰mA / سینک (مقادیر مطلق) و مجموع جریان VDD حداکثر ۱۵۰mA است؛ LEDها و درایو رله را با ترانسیور جدا کنید و از پایه MCU فقط سیگنال بگیرید.

جدول — حدود مطلق که نباید شکسته شوند (از دیتاشیت)

راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم

شبکه خازن‌گذاری و چیدمان PCB

X035 فقط یک جفت VDD/GND دارد و همین، خازن گذاری را حساس می‌کند: تمام جریان پالسی پریفرال ها (به ویژه USB) از یک مسیر می‌گذرد. ترکیب پیشنهادی 100nF X7R + Fμ4.7 تا Fμ10 است که باید در فاصله کمتر از ۵ میلی متری پایه ۴۸ و با مسیر بازگشت کوتاه به صفحه زمین قرار گیرد. قواعد چیدمان:

  • صفحه زمین یکپارچه زیر کل چیپ؛ از بریدن جزیره زمین زیر مسیرهای آنالوگ پرهیز کنید و فقط ناحیه حساس ADC/OPA را با خطوط مرجع کوتاه جدا نگه دارید؛
  • زوج −D+/D به صورت Differential 90 با طول برابر و فاصله ثابت مسیرگذاری شود؛ هیچ سیگنال سوییچینگی بین این دو خط نرود؛
  • مسیر CC1/CC2 فقط از Rd عبور کند؛ خازن یا فیلتر روی این دو خط ممنوع است (BMC خراب می‌شود)؛
  • مسیرهای آنالوگ کوتاه؛ برای ورودی ADC با منبع مقاومتی بالا (مثلا مقسّم ولتاژ) خازن نمونه برداری 100nF روی خود پایه بگذارید؛
  • بلوک رگولاتور و مسیر VBUS را از مسیر USB جدا کنید تا نویز رگولاتور به جفت دیفرانسیلی تزریق نشود؛
  • برای تخلیه ESD کانکتور: پایه های Shield و مقاومت های Rd باید مستقیم به صفحه زمین برسند، نه با مسیر باریک.

Brown-out و استراتژی PVD

POR/PDR داخلی فقط راه اندازی تمیز را تضمین می‌کند؛ اما خطر اصلی صنعتی «افت تدریجی یا نوسانی تغذیه» است که در آن چیپ روشن می‌ماند ولی فلش یا SRAM درست کار نمی‌کند. راه حل داخلی همین PVD است که چهار آستانه / ۲٫۳ / ۲٫۱ ۴٫۰ / ۳٫۰ ولت دارد. توصیه عملی:

  • در سیستم ۳٫۳ ولت، آستانه 3.0V را فعال کنید؛ در سیستم ۵ ولت برای تشخیص افت شبکه، آستانه 4.0V؛
  • روتین وقفه PVD باید در چند صد میکروثانیه کارهای حیاتی را انجام دهد: بستن رله ها به حالت امن، Set کردن فلگ «رکورد ناقص»، و در صورت نیاز ذخیره یک رکورد در فلش (۲ تا ۳ms — فقط اگر خازن Back-up کافی دارید)؛
  • روی یک خازن الکترولیت کوچک روی ورودی ۳٫۳ ولت حساب کنید تا در لحظه افت، MCU چند ده میلی ثانیه فرصت نظم دهی داشته باشد؛
  • کد  راه اندازی PVD در بخش ۶.۵ آمده است. ؛ ﺧﻮاﻧﺪن آﻧﯽ وﺿﻌﯿﺖ ﻫﻢ ﺑﺎ PWR_GetFlagStatus(PWR_FLAG_PVDO) ﻣﻤﮑﻦ اﺳﺖ.

محدوده ولتاژ ورودی‌ها — هیچ پایه‌ای 5V-Tolerant نیست

این مهم ترین تفاوت X035 با خیلی از MCUهای قدیمی تر است: ولتاژ مجاز هر پایه حداکثر VDD + 0.3V است. اگر برد با VDD=3.3V کار کند، اتصال مستقیم سیگنال ۵ ولت (حتی از طریق مقاومت سری) به پایه، دیود ESD داخلی را به صورت دائمی هدایت می‌کند و خرابی زودهنگام می‌سازد. راهکارهای عملی:

  • مقسّم مقاومتی: برای سیگنال های کند (ورودی دیجیتال ۲۴V صنعتی: مقسّم 10k/15k به همراه TVS و خازن فیلتر)؛
  • درایوهای منطقی دو ترازه: برای I2C/SPI بین دو دامنه از مبدل های دو طرفه (مثل TXB0104) یا ترانزیستور ماس فیلد برای خطوط تک جهته استفاده کنید؛
  • اپتوکوپلر: برای ورودی/خروجی های میدانی ۲۴V صنعتی بهترین گزینه هم عایق بندی است هم سطح شیفت — الگوی رایج: PC817 با مقاومت سری 2.2k و فیلتر RC روی خروجی؛
  • اگر سیگنال ۵ ولت دارید: ساده ترین راه، بالا بردن VDD به ۵ ولت است (بازه مجاز تا 5.3V با USB) — آن وقت کل تراز سیستم ۵ ولت می‌شود؛
  • خروجی ها: رله و سولنوئید فقط با ترانسیورMOSFET/ جانبی و دیود هرزگرد؛ هرگز از پایه MCU به طور مستقیم.

حفاظت USB و USB-PD

کانکتور USB نقطه اصلی ورود ESD و نوسان ولتاژ است. چهار لایه حفاظتی را همیشه کنار هم ببینید:

  1. ESD دیفرانسیلی: USBLC6-2SC6 روی −D+/D با ظرفیت خازنی کم تا لبه های ۴۸۰Mbps خراب نشود؛ مقاومت های سری ۲۲ اختیاری برای کاهش EMI؛
  2. TVS روی:VBUS SMBJ5.0A برای سیستم ۵ ولت؛ در کاربرد PD که ولتاژ قرارداد می‌تواند ۹/۱۲/۲۰ ولت شود، TVS باید مطابق حداکثر ولتاژ قرارداد انتخاب شود و در نقش Sink ورودی VBUS قبل از هر چیز با مقسّم به MCU پایش شود (الزام استاندارد PD برای اتصال امن)؛
  3. فیوز قابل‌بازیافت روی VBUS برای سناریوهای اتصال کوتاه کابل؛
  4. مسیر CC: در نقش Sink فقط دو مقاومت 1%±5.1k؛ در نقش Source از Rp داخلی استفاده کنید و تحمل ۲۸V را با CH211 فراهم کنید. خطای رایج: اتصال خازن فیلتر روی CC که تشخیص Type-C را مختل می‌کند.

ورودی‌های میدانی صنعتی و مقاومت مجاز منبع ADC

برای ورودی دیجیتال از کنتاکتور و سنسورهای صنعتی، زنجیره استاندارد «مقاومت سری + فیلتر RC + Schmitt داخلی» کافی است: مقاومت سری ۱ تا ۱۰k همراه خازن ۱۰ تا ۱۰۰nF هم نویز را می‌گیرد هم انرژی ESD محدود را تخلیه می‌کند. برای ورودی های آنالوگ، دیتاشیت فرمول مقاومت مجاز منبع را می‌دهد؛ با کلاک ۸MHz و زمان نمونه برداری ۱ سیکل، مقاومت منبع فقط تا ~ 4.3k مجاز است و با افزایش زمان نمونه برداری (تا ۲۴۰ سیکل) به ده ها کیلواهم می‌رسد — پس یا زمان نمونه برداری را بلند کنید یا با بافر اپ امپ داخلی (OPA) امپدانس را پایین بیاورید.

پایش تغذیه با کانال مرجع داخلی

کانال داخلی (~۱٫۲V) Vref به شما اجازه می‌دهد بدون قطعه اضافه، ولتاژ واقعی VDD را به صورت نسبی اندازه بگیرید: ADC آن را می‌خواند و چون Vref تقریبا ثابت است، نسبت خوانده به ۴۰۹۶ مستقیما VDD را می‌دهد (4096 × 1.2 ≈ V ÷ کد خوانده شده). این روش ارزان ترین «نظارت سلامت تغذیه» برای ثبت لاگ و هشدار میدانی است.

خواندن کانال مرجع داخلی و محاسبه VDD

مدیریت قطع برق و حالت‌های کم‌مصرف

وقتی PVD اعلام افت ولتاژ کرد، دو راه دارید: ذخیره وضعیت و رفتن به Stop Mode (Aμ۷۵) تا با بازگشت تغذیه از همان جا ادامه دهید، یا ذخیره وضعیت در فلش و ریست تمیز. حالت Stop در X035 با فراخوانی (PWR_STOPEntry_WFI)PWR_EnterSTOPMode شروع می‌شود و با وقفه AWU یا خط EXTI بیدار می‌شود؛ نکته مهم اینکه بعد از بیداری باید SystemInit دوباره فراخوانی شود تا کلاک ها بازسازی شوند. برای داده هایی که در هر قطع برق ذخیره می‌شوند (شمارنده کاری، وضعیت رله)، یک ساختار نسخه دار دوتایی (A/B) در دو صفحه فلش با CRC بنویسید تا یک نوشتن نیمه کاره هرگز داده را خراب نکند و فرسایش هم بین دو صفحه پخش شود (عمر ۳۰۰K سیکل در C°۲۵).

چک‌لیست راه‌اندازی (Bring-up)

این چک لیست را برای هر برد جدید، به ترتیب و بدون پرش اجرا کنید؛ هر گام، فرضیات گام بعد را تأیید می‌کند:

  1. بازبینی بصری برد: قطعات polarized، لحیم پل شده روی پکیج ۰٫۵ میلی متری، اتصال Shield کانکتور؛
  2. با منبع تغذیه جریان محدود (۵۰mA) تغذیه کنید — جریان بی باری باید حدود چند میلی آمپر باشد؛ مصرف بالاتر یعنی اتصال کوتاه یا پایه ای در حالت Conflig نادرست؛
  3. ولتاژ پایه (VDD) ۴۸ و افت ولتاژ روی فیوز را با اسیلوسکوپ (حالت AC) برای مشاهده نویز سوییچینگ چک کنید؛
  4. WCH-Link را به J2 وصل کنید؛ در MounRiver دستور «Target → Connect» باید چیپ را شناسایی کند و ChipID را نمایش دهد — اگر شناسایی نشد، اتصال BOOT (PC17) و سیم کشی SWD را بازبینی کنید؛
  5. پروژه قالب GPIO_Toggle را فلش کنید؛ چشمک LED یعنی هسته، کلاک و فلش سالم اند؛
  6. خروجی printf را روی PB10 با مبدل -USBسریال (115200) ببینید؛ مقدار SystemClk باید ۴۸MHz باشد؛
  7. با WCH-LinkUtility شناسه یکتا و ناحیه BOOT را بخوانید و با بوت لودر USB (اتصال به PC با نگه داشتن شرایط BOOT) هم یک فلش آزمایشی بزنید؛.8 اگر USB دارید: اتصال به PC و مشاهده در Device Manager (برای CDC/DFU)؛ اگر PD دارید: آزمایش با چند شارژر واقعی و کنترل مذاکره ولتاژ؛
  8. ADC و OPA را با یک تقسیم ولتاژ شناخته شده کالیبره کنید و خطای کد را در دمای محیط ثبت کنید؛
  9. IWDG را فعال کنید و با یک Delay عمدی گیرکننده، ریست شدن سیستم را مشاهده کنید؛
  10. PVD را با آستانه ۳٫۰V فعال و با کاهش تدریجی تغذیه، وقفه را تست کنید؛
  11. مصرف در Sleep/Stop را با آمپرمتر اندازه بگیرید و با جدول ۲-۲ مقایسه کنید (اختلاف بزرگ یعنی پایه ای شناور مانده)؛
  12. تست ESD کنترل شده (تیغه آزمایشگاهی IEC) 61000-4-2 Contact 4kV± + روی کانکتورها؛
  13. اجرای ۷۲ ساعته سیکل کامل (کار + Sleep + ریست + لاگ) روی برد داخل محفظه داغ/سرد پیش از ارسال به میدان.

منابع، ابزارها و عیب‌یابی سریع

جدول — منابع رسمی WCH

راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم

جدول — عیب یابی سریع

راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم
راه‌اندازی CH32X035 با MounRiver Studio و نمونه کدهای کاربردی | بخش پنجم

جمع بندی — نقشه راه پیشنهادی برای ورود به طراحی صنعتی

مسیر توصیه شده این است: ابتدا مدار حداقلی بخش ۵ را روی یک برد آزمایشی دو لایه با هدر SWD کامل بسازید و هر چهار نمونه کد بخش ۶ را روی همان برد به اجرا درآورید؛ سپس چک لیست بخش ۸ را کامل تیک بزنید و نتایج اندازه گیری (مصرف، نویز تغذیه، رفتار PVD و IWDG) را مستند کنید. در طراحی برد اصلی، قواعد چیدمان بخش ۷.۲ را به صورت چک لیست CAD اجرا کنید و مسیر CC و زوج USB را قبل از سفارش PCB با تور بسنجید. برای پروژه های PD، ابتدا سناریوی Sink با مقاومت های 5.1k را مسلط شوید و بعد به سراغ DRP و CH211 بروید؛ و در نهایت، برای هر برد تولیدی یک نسخه به روزرسانی شده از همین سند به عنوان «مستند پایه طراحی» نگه دارید تا تیم و نسخه های بعدی برد از تصمیم های شما شروع کنند نه از صفر.

سخن پایانی

این سند مرور کاملی بر معماری، امکانات و نقشه ۴۸ پایه میکروکنترلر CH32X035C8T6 ارائه می‌دهد و مدار حداقلی، کدهای شروع کار با کتابخانه استاندارد WCH و مجموعه ای از نکات کلیدی طراحی صنعتی با تمرکز بر تغذیه و حفاظت را پوشش می‌دهد. تمام مشخصات بر پایه دیتاشیت رسمی نسخه ۲.۳ شرکت WCH استخراج و بازبینی شده است.

اطلاعات
2
0
0
اشتراک و حمایت
profile نویسنده: حسن معماری متخصص الکترونیک

من حسن معماری , طراح محصول یا Product Designer هستم. و محصولات یا دستگاه های مختلف سخت افزاری بر پایه الکترونیک , کامپیوتر و هوش مصنوعی طراحی میکنم. شرکت معمار الکترونیک صنعت


مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله