درود دوستان گرامی، همیشه طراحی و ساخت برد الکترونیکی دارای لذتی خاص و وصف نشدنی است امیدوارم تمام دوستداران الکترونیک این لذت را تجربه کنند. همین طور انتشار پروژه به صورت اوپن سورس لذت خاص دیگری دارد. دنیای الکترونیک همیشه در حال توسعه و پیشرفت بوده و هر روز ابزارهای مختلف برای برطرف کردن نیازهای موجود ارائه میشود.
به تازگی بنیاد Raspberry Pi اولین میکروکنترلر خود به نام RP2040 را معرفی نموده است که دارای ویژگیهای منحصر به فرد و جالبی است و قیمت نسبتاً خوبی هم دارد. همیشه یکی از بهترین راهها برای یاد گرفتن میکروکنترلر، طراحی و ساخت مدار راه انداز و مطالعهی دقیق سخت افزار و نرم افزار در کنار هم است. بدین منظور ما مداری برای راه اندازی این میکروکنترلر کوچک و قدرتمند طراحی و ساختهایم و فایلهای مورد نیاز را به صورت متن باز (Open Source) منتشر میکنیم.
در ادامه با ما همراه باشید.
مشخصات کلی RP2040
- دو هسته ای با فرکانس 133MHz و معماری cortex M0+
- حافظه فلش SRAM با ظرفیت 256kbyte
- پشتیبانی از Quad-SPI خارجی و اجرای برنامه از این حافظه
- حافظه کش 16Kbyte
- پشتیبانی از رابط USB برای پروگرام کردن و ارتباط با کامپیوتر (Host/Device)
- 30 عدد پایه چند منظوره
- ولتاژ کاری بین 1.8v تا 3.3v
- مبدل آنالوگ به دیجیتال (ADC) با رزولوشن 12-Bit و سرعت نمونه برداری 500ksps (بر ثانیه)
- پشتیبانی از رابط های 2*UART، 2*I2C، 2*SPI، 16*PWM
- رابط منحصر به فرد PIO
شاید برای شما مفید باشد: آموزش رزبری پای از 0 تا 100 از مقدماتی تا پیشرفته
بلوک دیاگرام داخلی RP2040
میکروکنترلر RP2040 با استفاده از رابط QSPI/SPI قابلیت اجرای کد از روی حافظه خارجی فلش را دارد و به منظور بهبود عمل کرد میکروکنترلر یک واحد کوچک cache در داخل میکروکنترلر تعبیه شده است. همچینین این میکروکنترلر را میتوان به وسیله رابط SWD (Serial Wire Debug) دیباگ کرده و ایرادهای نرم افزاری را شناسایی و اصلاح کرد.
حداقل مدار مورد نیاز برای راه اندازی برد متن باز RP2040
تمام میکروکنترلرها برای کار و اجرای برنامه نیازمند یک سری قطعات خارجی و مداری که این قطعات را به هم وصل میکند دارند. از آن جایی که این میکروکنترلر نصب سطحی (SMD (Surface Mount Device میباشد وبا تعداد 56 پایه در پکیچ QFN (Quad Flat No-lead) ارائه میشود همان طور که مشاهده میشود این قطعه بسیار ریز بوده از این رو برای طراحی مدار راه انداز حداقل نیاز به PCB دولایه میباشد. تمام ادوات الکترونیکی برای کار نیاز به تغذیه دارند. میکروکنترلر RP2040 هم برای کار نیاز به دو تغذیه متفاوت دارد یکی برای هسته که با ولتاژ 1.1V کار میکند و دیگری برای پایهها و پریفرال های داخلی که آن هم با 3.3V کار میکند. خوشبختانه در داخل میکروکنترلر یک رگولاتور LDO(Low Dropout Voltage) تعبیه شده است که تغذیه هسته را تأمین میکند وما فقط به ولتاژ 3.3v نیاز داریم. برای تأمین این ولتاژ 3.3v انواع رگولاتورها را میتوان استفاده کرد از این رو چون رگولاتور AMS1117 3v3 به وفور پیدا میشود و مشخصات فنی آن نیز نیازهای ما را برطرف میکند، ازاین رگولاتور استفاده میکنیم.
شماتیک مدار رگولاتور
رگولاتور AMS1117 برای اینکه بتواند ولتاژ صاف و بدون ایرادی تولید کند خازنهایی در ورودی و خروجی نیاز دارد که میتوان در شماتیک مشاهده کرد. ولتاژ مدار را میتوان هم از USB گرفت و هم میتوان از پین هدر مدار نیز اعمال کرد از این رو چون امکان دارد تا هنگام اعمال تغذیه از پین هدر پلاریته برعکس وصل شود ورودی تغذیه را از یک دیود شاتکی عبور میدهیم تا باعث خرابی مدار نشود.
تغذیه RP2040
همان طور که گفته شد هسته RP2040 با ولتاژ 1.1 ولت کار میکند برای این که رگولاتور داخلی بتواند این ولتاژ را درست کند نیاز به یک سری خازنهای دیکوپلینک (Decoupling Capacitor) دارد. این خازنها دو وظیفه اصلی را بر عهده دارند یکی فیلتر کردن نویزهای تغذیه و دیگری تأمین ولتاژ لازم برای زمانی که هسته شروع به کار میکند زیرا در زمانی که هسته شروع به کار میکند با پیک جریان مواجه میشود، این پیک جریان به دنبال خود افت ولتاژ را دارد پس برای جلو گیری از افت ولتاژ نیاز است تا خازنها در نزدیکترین جای ممکن به RP2040 قرار گیرند.
برخی سیستم عاملهایی که توسط این میکروکنترلر پشتیبانی میشود:
پشتیبانی سیستم عامل RT-THREAD از میکروکنترلر RP2040 رزبری پای
سیستم عامل یونیکسی FUZIX برای رزبری پای Pico و میکروکنترلر RP2040
شماتیک قسمت میکروکنترلر RP2040
همان طور که در شماتیک مشخص است خازنهای دیکوپلینگ C26،C32،C33 برای رگولاتور داخلی وصل شدهاند. نام پایه DVDD میباشد و خروجی رگولاتور داخلی پایه شماره 45 میباشد، پایه ورودی رگولاتور نیز شماره 44 است که باید ولتاژ 3 ولت به این پایه داده شود. همان طور که دیده میشود میکروکنترلر دو پایه DVDD دارد که باید ولتاژ 1.1 ولت را به این دو اعمال کرد برای اعمال این ولتاژ فقط کافیست خروجی رگولاتور را به این پایهها متصل کنیم. پایه شماره 43 که نام آن ADC_VDD است تغذیه بخش آنالوگ میکروکنترلر را فراهم میکند که میتوان در رنج ولتاژ 1.8 ولت تا 3.3 ولت به این پایه اعمال کرد. طبق اعلام دیتاشیت RP2040 اعمال ولتاژ زیر 2.97 ولت امکان بروز برخی مشکلات را دارد پس ما نیز برای اینکه در قسمت ADC به مشکل بر نخوریم 3.3 ولت به این پایه اعمال میکنیم با این حال در صورتی که نیاز به اعمال ولتاژ دیگر باشد میتوان ولتاژ مورد نظر را به پین هدر ADC_VREF اعمال کرد اما باید دقت کرد که قبل از اعمال ولتاژ به پین هدر مقاومت R7 از مدار حذف شود.
حافظه فلش در برد متن باز RP2040
برای اینکه بتوانیم برنامهای که RP2040 میتواند اجرا کند را ذخیره کنیم باید از یک حافظه فلش خارجی استفاده کنیم برای این منظور باید از آی سی فلشی استفاده کنیم که دارای رابط QSPI باشد. یکی از معروفترین آی سی فلش به شماره فنی W25QXX است. میکروکنترلر میتوانید از روی این فلش بوت شود و سپس برنامه را اجرا کند. از آنجایی که فرکانس کاری و نرخ ارسال داده بین RP2040 و W25QXX خیلی زیاد است باید حافظه فلش را در نزدیکترین جای ممکن کنار میکروکنترلر قرار داد در غیر این صورت امکان تداخل (crosstalk) بین سایر خطوط دیتا وجود دارد.
اتصال آی سی فلش به RP2040 به راحتی از طریق چهار خط امکان پذیر است، اما برای اینکه بتوان RP2040 را به حالت BOOTSEL برد نیاز است تا کاری انجام دهیم که زمانی که میکروکنترلر شروع به کار میکند و توالی استارت را بررسی مینماید حافظه فلش را نتواند شناسایی کند به این منظور با استفاده از مقاومت R19 و سری کردن یک دکمه با این مقاومت و اتصال سر دیگر دکمه به زمین میتوان کاری کرد که RP2040 حافظه را شناسایی نکند. با نحوه انتقال برنامه به حافظه فلش در آموزش دوم بحث خواهد شد.
کریستال در برد متن باز RP2040
برای کار و پردازش، هر پردازنده نیاز به یک منبع کلاک دارد. در بسیاری از میکروکنترلرها از دو طریق میتوان این فرکانس را تأمین کرد یکی نوسان ساز RC داخلی و دیگری استفاده از نوسان سازهای خارجی. میکروکنترلر RP2040 هم از این قاعده مستثنا نیست و میتواند هم از داخلی و هم از خارجی استفاده کند اما طبق اعلام دیتاشیت نوسان ساز داخلی زیاد دقیق نیست و توصیه کرده است که از نوسان سازهای خارجی استفاده گردد. از دو طریق میتوان کلاک خارجی را تأمین نمود یکی استفاده از کریستال و دیگری استفاده از نوسان سازهای CMOS. ما نیز به دلیل ارزان و در دسترس بودن کریستالها از این نوع نوسان ساز در برد متن باز RP2040 استفاده میکنیم.
شماتیک قسمت نوسان ساز را میتوانید در زیر مشاهده کنید.
بهتر است از کریستالی استفاده کنید که تلورانس آن بیشتر از 30PPM نباشد.
USB برد متن باز RP2040
میکروکنترلر RP2040 دارای یک پورت USB است که از آن میتوان برای برنامه ریزی حافظه فلش، ارتباط با کامپیوتر و ارتباط با دیوایس هایی نظیر ماوس و فلش مموری استفاده کرد. استفاده از این واحد نیازمند قطعات خاصی نیست و حتی لازم نیست از مقاومت های PULLUP یا PULLDOWN استفاده کرد، اما ما برای اطمینان بیشتر و محافظت برد در برابر شوکهای ناخواسته از یک آی سی سرکوب کننده نویز به شماره USBLC6 استفاده کردهایم. اما برای رد و بدل کردن اطلاعات باید نکات خطوط دیفرانسیلی و فرکانس بالا را در PCB لحاظ کرد از این رو در دیتاشیت میکروکنترلر بیان شده است که برای برآورده کردن این نیاز باید از دو عدد مقاومت 27 اهم بر روی خط USB_PD و USB_DM استفاده نمود و بایستی این مقاومتها نزدیک میکروکنترلر قرار داده شوند. قرار دادن این مقاومتها به تنهایی کافی نبود و بایستی در هنگام روت کردن این ترکها از یک سری قوانین تطبیق امپدانس پیروی کنیم.
کارت حافظه و مبدل USB به سریال
برای راحتی کار با این برد و برنامه نویسی راحت و همچنین اجتناب از سیم کشی اضافه خارج از برد که در بسیاری از موارد باعث شلوغی و اشتباه در مراحل تست میشود بری روی برد یک مبدل USB به سریال، طراحی شده است و همچنین از دو LED برای نشان دادن رفت و آمد دیتا بر روی برد استفاده شده است. از دیگر امکانات برد میتوان به سوکت کارت حافظه اشاره کرد. مموری کارتها را میتوان به چند روش راه اندازی کرد یکی از این روشها استفاده از SPI میباشد. سوکت کارت حافظه روی برد به درگاه SPI شماره صفر میکروکنترلر متصل است. و بایستی پایههای ارتباطی مموری کارت را با استفاده از مقاومت 4.7 کیلو اهم به تغذیه وصل کنیم.
شماتیک مبدل USB به سریال
میتوانید فایلهای آلتیوم این پروژه را در انتهای مطلب دانلود کنید.
تشریح اجزای برد متن باز RP2040
- سوکت microUSB برای ارتباط با RP2040
- سوکت microUSB برای ارتباط با RP2040 به صورت سریال با استفاده از FT232RL
- LED نشانگر روشن بودن مدار
- LED نشانگر ارسال اطلاعات توسط FT232RL
- LED نشانگر دریافت اطلاعات توسط FT232RL
- رگولاتور AMS/AD1117 3V3 جهت تامین تغذیه RP2040
- آیسی USB TO UART به شماره FT232RL
- دکمه BOOTSEL
- حافظه فلش برای ذخیره برنامه W25Q16
- میکروکنترلر RP2040
- دکمه RESTART
- سوکت MICRO SD CARD
- سوکت SWD جهت دیباگ کردن
دانلود رایگان سورس های برد متن باز RP2040
در این قسمت میوانید فایل های شماتیک و PCB برد متن باز RP2040 را رایگان دانلود کنید:
لینکهای دانلود
- لینک دانلود مستقیم “ فایل های آلتیوم برد متن باز RP2040 ” – حجم 3.1 مگابایت
اسم فایل
- arduino_music_player.zip
سلام، من برد رو دارم تهیه میکنم
در رابطه با سوکت microUSB برای ارتباط با RP2040 به صورت سریال با استفاده از FT232RL
میخواستم بدونم که :
میشه ازش برای پروگرم کردن برد های دیگه مثل ESP32CAM استفاده کرد؟ استفاده از یه نری microUSB و ارتباط پین هاش استفاده کرد؟
این امکان هست که بشه دو برد (ESP32CAM و همین برد ) رو از طریق همین سوکت باهم اتصال داد و کار کرد باهاشون؟
پین های microUSB به ترتیب چیا هستن برای اتصال اگر موارد بالا شدنیه؟
ببخشید اگر سوالاتم عجیبه، تازه اولین قدم هام رو قراره توی دنیای میکروکنترلر ها بردارم :))
سلام دوست عزیز
البته حتما باید مبدل FT232RL وجود داشته باشه
سلام ممنون بابت مقاله خوب تون
یه سوال در مود طراحی بردش داشتم. دلیل قرار دادن این همه وایای GND سرتاسر برد چیه؟ تا حالا ندیده بودم یه بردی این همه وایا GND داشته باشه! در حالی که فرکانس کاری هم اون قدرا هم بالا نیست. ممنون میشم در این رابطه یه توضیحی بدید. تشکر
مشخصات کلی RP2040
دو هسته ای با فرکانس 133MHz و معماری cortex M0+
>> حافظه فلش SRAM با ظرفیت 256kbyte
فلش?? sram ???
خسته نباشید
خیلی هم عالی.
امکان تولید و فروش به صرفه هم هست یا باید شخصا برای تهیه و تولید اقدام کنیم؟
سلام.
بله، پروژه در حال طی پروسه تولید و عرضه قرار دارد. پس از آماده شدن، اطلاع رسانی خواهد شد.به منظور کسب اطلاعات بیشتر و پشتیبانی می توانید با شماره تماسی که داخل سند شماتیک قرار دارد در ارتباط باشید.
سلام
دلیل استفاده از مقامت 1 کیلواهمی در مدار نوسان ساز چیه ؟
سلام.
کریستال هم مثل قطعات دیگه دارای محدودیت جریان هستش و اگه بیش از اندازه از کریستال جریان کشیده بشه باعث خرابی کریستال خواهد شد. برای جلوگیری از این خرابی احتمالی، متناسب با کریستالی که انتخاب می کنید باید این مقاومت رو قرار بدید.