راهنمای جامع پروتکل USB: از معماری و کلاس‌ها تا راه‌اندازی با TinyUSB و RP2040

USB
91 بازدید
۱۴۰۵-۰۴-۰۲
20 دقیقه
  • نویسنده: آرویدتک
  • درباره نویسنده: www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک

 مقدمه‌ای بر فناوری USB

در دنیای دیجیتال امروزی، فناوری USB (Universal Serial Bus) به یکی از اساسی‌ترین استانداردهای ارتباطی تبدیل شده است. تصور دنیای فناوری بدون USB تقریباً غیرممکن است – از شارژ گوشی‌های هوشمند گرفته تا اتصال پرینترها، صفحه‌کلیدها، حافظه‌های جانبی و هزاران دستگاه دیگر استفاده شده است.

قبل از ظهور USB در اواسط دهه ۱۹۹۰ کاربران با انواع مختلف پورت‌ها مواجه بودند:

  • پورت سریال (Serial Port) برای مودم‌ها و برخی ماوس‌ها
  • پورت موازی (Parallel Port) برای پرینترها
  • پورت PS/2 برای صفحه‌کلید و ماوس
  • پورت بازی (Game Port) برای جویستیک‌ها

هر یک از این پورت‌ها محدودیت‌های خاص خود از جمله نصب درایورهای پیچیده، سرعت پایین، عدم قابلیت اتصال گرم (Hot-Plug) و سردرگمی کاربران را داشتند که به همین دلیل در سال ۱۹۹۶، گروهی از شرکت‌های پیشرو در صنعت فناوری شامل اینتل، مایکروسافت، آی‌بی‌ام و کامپک استاندارد USB 1.0 را معرفی کردند. اهداف اصلی این استاندارد عبارت بودند از:

  1. ساده‌سازی اتصال دستگاه‌های جانبی
  2. حذف نیاز به ری استارت پس از اتصال دستگاه‌ها
  3. افزایش سرعت انتقال داده
  4. تأمین قدرت برای دستگاه‌های کم‌مصرف
نسخه سال معرفی سرعت ویژگی‌ها
USB 1.0 1996 1.5 Mbps (Low-Speed) اولین نسخه
USB 1.1 1998 12 Mbps (Full-Speed) رفع اشکالات نسخه 1.0
USB 2.0 2000 480 Mbps (High-Speed) سازگاری معکوس
USB 3.0 2008 5 Gbps (SuperSpeed) افزایش پهنای باند
USB 3.1 2013 10 Gbps (SuperSpeed+) بهبود سرعت
USB 3.2 2017 20 Gbps چندلاینی
USB 4 2019 40 Gbps مبتنی بر Thunderbolt 3

معماری و مفاهیم اساسی USB

نقش‌های اصلی در اکوسیستم USB

نقش وظایف اصلی نمونه‌های متداول
USB Host (میزبان) مدیریت باس USB- کنترل تایمینگ و همگام‌سازی- تأمین توان الکتریکی- شناسایی و پیکربندی دستگاه‌ها کامپیوتر، لپ‌تاپ، سرور
USB Device (دستگاه) دریافت توان و فرمان از Host- اجرای عملکرد خاص (ذخیره‌سازی، ورودی، چندرسانه‌ای) فلش، ماوس، کیبورد، وب‌کم
USB OTG (دوحالته) ایفای نقش Host یا Device بسته به شرایط گوشی هوشمند، تبلت

فرآیند شناخت دستگاه (Enumeration)

زمانی‌که هر دستگاه USB (مثلاً فلش، مودم، یا موس) به یک میزبان (Host) مثل کامپیوتر یا میکروکنترلر وصل می‌شود، یک مراحل مختلفی انجام می‌شود تا آن دستگاه توسط سیستم شناسایی شده و آماده‌ی استفاده شود که در ادامه شرح داده شده.

تشخیص اتصال (Detection)

هدف این مرحله تشخیص حضور دستگاه جدید و شروع ارتباط است که توسط کنترلر USB انجام می‌شود. کنترلر USB به طور مداوم وضعیت ولتاژ خطوط داده (D+ و D−) را بررسی می‌کند و در صورتی که تغییری در سطح ولتاژ مشاهده شود، میزبان متوجه می‌شود که یک دستگاه جدید به پورت متصل شده است و در همین لحظه نوع سرعت دستگاه (Low Speed، Full Speed، High Speed یا SuperSpeed) نیز از روی خطوط تشخیص داده می‌شود.

در استانداردی که میکروکنترلرها از آن پشتیبانی میکنند تشخیص سرعت با بررسی سطح ولتاژ خطوط داده انجام میگیرد. در استاندارد USB3 و بالاتر تشخیص سرعت از طریق سیگنال‌های اضافی و ارتباط out-of- band انجام میشود.

ریست دستگاه (Reset)

هدف این مرحله، قرار دادن دستگاه در وضعیت اولیه و هم‌زمان‌سازی آن با میزبان است. پس از تشخیص اتصال، میزبان یک سیگنال ریست روی خطوط داده ارسال می‌کند و دستگاه با دریافت این سیگنال، تمام تنظیمات موقت خود را پاک کرده و به حالت پیش‌فرض بازمی‌گردد. در این حالت هنوز هیچ آدرس مشخصی به دستگاه داده نشده و آدرس آن صفر است. این سیگنال برای مدت حداقل 10 میلی‌ثانیه خطوط داده را در حالت LOW نگه می‌دارد. 

اختصاص آدرس یکتا (Address Assignment)

هدف این مرحله ایجاد یک شناسه (ID) یکتا برای هر دستگاه متصل است تا میزبان بتواند چندین دستگاه را هم‌زمان مدیریت کند. میزبان از طریق دستور استاندارد SET_ADDRESS یک عدد بین ۱ تا ۱۲۷ را به دستگاه اختصاص می‌دهد و از این لحظه، تمام دستورات و ارتباطات بین میزبان و آن دستگاه با استفاده از همین آدرس انجام می‌شود. تا قبل از اختصاص این آدرس جدید، عدد صفر به عنوان آدرس برای تبادل اطلاعات استفاده میشود. 

خواندن مشخصات دستگاه (Descriptor Reading)

هدف این مرحله، جمع‌آوری اطلاعات توصیفی دستگاه برای شناخت نوع، قابلیت‌ها و نیازهای آن است. میزبان با ارسال درخواست‌های استاندارد، مجموعه‌ای از داده‌ها به نام Descriptor از دستگاه دریافت می‌کند.

این اطلاعات شامل موارد زیر است:

  • Device Descriptor: شامل شناسه سازنده (Vendor ID)، شناسه محصول (Product ID)، نسخه USB و کلاس دستگاه.

  • Configuration Descriptor: مشخصات پیکربندی‌ها، تعداد رابط‌ها (Interfaces) و مسیرهای داده (Endpoints).

  • String Descriptor: اطلاعات متنی مانند نام سازنده، شماره سریال و توضیحات دستگاه.

با دریافت این داده‌ها، میزبان تشخیص می‌دهد که دستگاه از چه نوعی است (مثلاً ذخیره‌سازی، شبکه، صوت، یا ورودی).

بارگذاری درایور مناسب (Driver Loading)

هدف این مرحله، فعال‌سازی نرم‌افزار کنترلی (درایور) برای برقراری ارتباط سطح بالا با دستگاه است. سیستم‌عامل یا نرم‌افزار میزبان با بررسی Vendor ID و Product ID دستگاه، نوع آن را شناسایی کرده و درایور سازگار را پیدا می‌کند. درایور واسطی است که داده‌های سطح کاربر (User Space) را به دستورات سطح سخت‌افزار (Kernel Space) تبدیل می‌کند. پس از بارگذاری درایور، میزبان قادر است به‌صورت کامل با دستگاه کار کند.

در این مرحله میزبان درخواست‌های کلاس‌محور (Class-specific) ارسال می‌کند به این صورت که اگر دستگاه CDC (مثل مودم یا Ethernet over USB) باشد میزبان دستورات کنترل شبکه ارسال می‌کند و اگر دستگاه Mass Storage باشد میزبان دستورات SCSI over Bulk ارسال می‌کند.

پیکربندی و آماده‌سازی (Configuration)

هدف این مرحله، قرار دادن دستگاه در حالت عملیاتی و فعال‌سازی مسیرهای داده است. میزبان با ارسال دستور SET_CONFIGURATION دستگاه را از حالت آماده‌به‌کار به حالت فعال منتقل می‌کند. میزبان یکی از پیکربندی‌های موجود در Descriptor را انتخاب کرده و دستور SET_CONFIGURATION می‌فرستد سپس دستگاه مقدار Configuration ID را در رجیستر خود ذخیره کرده و Endpointهای مربوطه را فعال می‌کند. در این وضعیت، Endpointها (مسیرهای ارتباطی داده) فعال می‌شوند و دستگاه آماده ارسال و دریافت داده است. از این نقطه به بعد، دستگاه به‌طور کامل قابل استفاده توسط کاربر یا نرم‌افزار است.

ساختار Frame در USB

در ارتباط USB، Host (میزبان) همیشه کنترل انتقال داده را در دست دارد. برای نظم دادن به ارسال داده بین چندین دستگاه، زمان به واحدهایی به نام Frame تقسیم می‌شود. در USB 1.1 و USB 2.0، هر Frame معادل ۱ میلی‌ثانیه (1 ms) است. در USB 2.0 (High Speed)، این فریم به واحدهای کوچکتر به نام Microframe با طول ۱۲۵ میکروثانیه (125 µs) تقسیم می‌شود. هر Frame شامل یک سری Packet (بسته‌های داده) است.

میزبان (Host) در ابتدای هر Frame، یک بسته‌ی خاص به نام Start of Frame (SOF) می‌فرستد که بقیه دستگاه‌ها را همگام‌سازی می‌کند.

بسته‌ی Start of Frame (SOF)

ساختار این بسته تقریباً چنین است:

فیلد اندازه (bit) توضیح
Sync 8 بیت الگوی همگام‌سازی فریم
PID 8 بیت شناسه بسته (برای SOF مقدار خاص دارد)
Frame Number 11 بیت شماره فریم (از 0 تا 2047، سپس دوباره 0 می‌شود)
CRC5 5 بیت کد بررسی خطا (برای اطمینان از صحت شماره فریم)
EOP علامت پایان بسته (End Of Packet)

هر ۱ میلی‌ثانیه، میزبان یک بسته‌ی SOF می‌فرستد تا دستگاه‌ها بدانند که در چه فریم زمانی قرار داریم.

نقش Frame در انتقال داده

هر نوع انتقال در USB (مثلاً Control, Bulk, Interrupt, یا Isochronous) درون این فریم‌ها زمان‌بندی می‌شود:

نوع انتقال داده وابستگی به فریم Endpoint جهت توضیح
Control Transfer نه‌چندان دقیق EP0 IN/OUT برای تنظیمات (مثل enumeration)
Interrupt Transfer در فریم‌های خاص EP1 IN میزبان به‌صورت دوره‌ای داده را درخواست می‌کند
Bulk Transfer آزاد EP2 OUT فقط وقتی فضا خالی در فریم باشد
Isochronous Transfer دقیقاً در هر فریم EP3 IN برای صدا/تصویر؛ نیاز به زمان‌بندی ثابت دارد
EOP علامت پایان بسته (End Of Packet)
شاید برای شما مفید باشد:
دنیای ولتاژها از نگاه رگولاتور ها

تمام داده‌هایی که بین میزبان (Host) و دستگاه (Device) ردوبدل می‌شود، در قالب یکی از این ۴ نوع انتقال انجام می‌گیرد — که هرکدام هدف، رفتار زمانی و اولویت خاص خود را دارند. هر نوع داده از یک Endpoint استفاده میکند. Endpoint به معنی «درگاه ارتباطی منطقی» است که میتوانید آن را مانند یک خط ارتباط در یک دستگاه USB درنظر بگیرید. هر endpoint یک شماره‌ی ۴ بیتی (0–15) و یک جهت (IN یا OUT) دارد. از سمت دستگاه به میزبان با (IN) و از سمت میزبان به دستگاه با (OUT) مشخص میشود.

کنترل تبادل داده (Control Transfer)

این نوع انتقال در تمام دستگاه‌ها وجود دارد و همه‌ی دستگاه‌ها حداقل یک endpoint 0 برای کنترل دارند. وقتی دستگاه وصل می‌شود، میزبان از EP0 استفاده می‌کند تا اطلاعات پایه (descriptorها)  را بگیرد و دستگاه را شناسایی کند.

در سه مرحله انجام می‌شود:

  1. SETUP stage: ارسال دستور از میزبان (مثل GET_DESCRIPTOR)
  2. DATA stage: تبادل داده
  3. STATUS stage: تأیید نهایی

انتقال عمده (Bulk Transfer)

داده‌های زیاد و بدون محدودیت زمانی. اگر فریم فضای خالی داشته باشد، Bulk هم اجازه ارسال دارد. این نوع داده تضمین تحویل (دارای CRC و retry) دارد اما تضمینی درمورد تاخیر زمانی ندارد. به عنوان مثال فلش مموری‌ها از این نوع انتقال داده استفاده میکنند. به عنوان مثال:

انتقال دوره‌ای (Interrupt Transfer)

برخلاف نامش، “interrupt” در USB واقعا وقفه سخت‌افزاری نیست بلکه میزبان به‌صورت دوره‌ای (polling) در فریم‌های خاص داده را می‌گیرد. به این صورت که میزبان هر چند میلی ثانیه درخواست داده جدید میکند. این نوع تبادل بیشتر در ماوس و دستگاه‌های مشابه انجام میشود.

انتقال هم‌دور (Isochronous Transfer)

تبادل هم‌زمان (Isochronous Transfer) در پروتکل USB، به‌عنوان مهم‌ترین نوع انتقال برای داده‌های زنده (Real-time) طراحی شده است. هدف اصلی این روش، تضمین تحویل داده‌ها با تأخیر یکنواخت و کم (Low Latency) است، حتی اگر این به قیمت از دست دادن تصحیح خطا تمام شود. در این روش، از پهنای باند کانال USB یک ظرفیت ثابت و تضمین‌شده در هر فریم (USB Frame) رزرو می‌شود. این بدان معناست که دستگاه می‌داند در هر بازه زمانی مشخص، بخشی از پهنای باند در اختیار آن است. این روش بدون تکرار ارسال و اگر داده دقیقا در زمان مشخص به دستگاه نرسد در نظر گرفته نمی‌شود. به طور مثال کارت صدا با استفاده از این مدل تبادل داده کار می‌کند.

جدا از انواع انتقال داده، کلاس‌های مختلفی هم وجود دارد که نوع انتقال داده  را مشخص میکند. مثلا مشخص میکند که برای انتقال صوت باید از چه نوع انتقال داده‌ای استفاده کنیم. در ادامه لیست این کلاس‌ها را مشاهده میکنید.

انواع کلاس‌های USB

کلاس USB (USB Class) یک استاندارد تعریف‌شده توسط انجمن توسعه‌دهندگان USB (USB-IF) است که مشخص می‌کند یک دستگاه USB چگونه باید با سیستم میزبان ارتباط برقرار کند. هر کلاس، پروتکل‌ها، endpointها و نوع داده‌ای را که دستگاه پشتیبانی می‌کند، تعریف می‌نماید. این استانداردسازی باعث می‌شود که درایورهای عمومی (generic drivers) برای انواع مختلف دستگاه‌ها وجود داشته باشد و نیازی به درایور اختصاصی برای هر دستگاه نباشد.

کدکلاس

نام کلاس

توضیحات

نمونه دستگاه‌ها

00

Device

برای هر دستگاهی

دستگاه‌های سفارشی (Custom)

01

Audio

انتقال صوت و کنترل‌های صوتی

هدفون، میکروفون، اسپیکر

02

CDC Control

ارتباطات (مودم، شبکه، …)

مودم، روتر، آداپتور شبکه

03

HID (Human Interface Device)

دستگاه‌های رابط انسانی

کیبورد، ماوس، جوی‌استیک

05

Physical

دستگاه‌های فیزیکی (Force Feedback)

جوی‌استیک فیدبک‌دار

06

Image

دستگاه‌های تصویربرداری

وب‌کم، اسکنر

07

Printer

چاپگرها

پرینتر

08

Mass Storage

ذخیره‌سازی انبوه

فلش، هارد اکسترنال

09

Hub

هاب USB

هاب USB

0A

CDC Data

داده‌های CDC

همراه با کلاس 02h

0B

Smart Card

کارت‌های هوشمند

کارت خوان

0D

Content Security

امنیت محتوا

دستگاه‌های حفاظتی

0E

Video

انتقال ویدئو

وب‌کم، دوربین

0F

Personal Healthcare

سلامت شخصی

دستگاه‌های پزشکی

10

Audio/Video Devices

دستگاه‌های صوتی/تصویری

دوربین دیجیتال

11

Billboard Device

دستگاه‌های تبلیغاتی

دستگاه‌های نمایش Type-C

12

USB Type-C Bridge

پل Type-C

کابل‌های مبدل

DC

Diagnostic Device

دستگاه‌های تشخیصی

دیباگر USB

E0

Wireless Controller

کنترلر بی‌سیم

آداپتور بلوتوث

EF

Miscellaneous

متفرقه

دستگاه‌های چندکاره

FE

Application Specific

کاربردهای خاص

دستگاه‌های سفارشی

FF

Vendor Specific

اختصاصی فروشنده

دستگاه‌های با درایور خاص

بجز کلاس‌هایی که ذکر شد تعدادی زیرکلاس (Subclass USB) وجود دارد که سطح دومی از طبقه‌بندی در استاندارد USB است. هر کلاس دارای تعدادی زیرکلاس است که درون کلاس‌های اصلی قرار می‌گیرند. در حالی که کلاس (Class) نوع کلی دستگاه را مشخص می‌کند (مثل HID یا Audio)، زیرکلاس‌ها جزئیات بیشتر و نوع خاص تری از عملکرد را درون آن کلاس تعریف می‌نماید. این تقسیم‌بندی دقیق‌تر به سیستم‌عامل کمک می‌کند تا درایور مناسب‌تری را برای دستگاه انتخاب کند. در اینجا برای جلوگیری از طولانی شدن مطلب به عنوان مثال زیرکلاس‌های مربوط به یکی از پرکاربردترین کلاس‌ها یعنی کلاس CDC را بررسی می‌کنیم.

Subclass کد نام Subclass توضیحات پروتکل‌ها
00h Reserved رزرو شده
01h Direct Line Control کنترل خط مستقیم مودم‌ها
02h Abstract Control کنترل انتزاعی مودم V.25ter
03h Telephone Control کنترل تلفن دستگاه‌های تلفنی
04h Multi-Channel چند کاناله مودم‌های چندخط
05h CAPI Control کنترل CAPI
06h Ethernet Networking شبکه اترنت آداپتور شبکه
07h ATM Networking شبکه ATM
08h-0Dh Wireless بی‌سیم بلوتوث، Wi-Fi
0Eh-7Fh Reserved رزرو شده
80h-FFh Vendor Specific اختصاصی فروشنده دستگاه‌های خاص

اتصال USB به ماژول

تا اینجا با نحوه کار USB آشنا شدید و به اندازه‌ی کافی اطلاعات دارید تا بتوانید داده‌های Description را مطالعه کنید. حالا با هم سراغ کد نویسی می‌رویم. در اینجا از کتابخانه محبوب TinyUSB استفاده می‌کنیم که در ادامه با آن آشنا می‌شوید.

کدنویسی با TinyUSB 

TinyUSB یک کتابخانه‌ی سبک و چندپلتفرمی است که برای افزودن قابلیت USB Device/Host  به میکروکنترلرهایی طراحی شده که کنترل مستقیم بر USB Core خود دارند از جمله:

شاید برای شما مفید باشد:
مقدمه آموزش RTOS با STM32

TinyUSB به شما اجازه می‌دهد که رفتار USB را خودتان تعریف کنید و مثلاً دستگاه را به شکل کیبورد، کارت صدا، MIDI، یا رابط شبکه معرفی کنید. در USB Device، هر دستگاه خودش را با مجموعه‌ای از Descriptorها به میزبان معرفی می‌کند. این اطلاعات شامل نوع دستگاه، تعداد رابط‌ ها، Endpointها و رشته‌های توضیحی است.

TinyUSB این‌ها را از قبل نوشته و در مثالهایی قرار داده و شما می‌توانید در کتابخانه مربوط به هر مثال آن‌ها را تنظیم کنید. اما در اینجا ما قصد داریم از مود Host استفاده کنیم به همین دلیل با (Descriptorها) کاری نداریم و نیاز است (tusb_config.h) را ادیت کنیم تا USB را به صورت Host تنظیم کنیم که در ادامه خواهید دید. در حالت Host کتابخانه تعدادی callback دارد تا اتصال/جداسازی را نشان دهد و همین طور ارسال و دریافت پیام را مدیریت کند. برای استفاده از توابع ارسال و دریافت پیام نیاز است که قبل از هرچیز description از دستگاه متصل دریافت شود.

خوشبختانه در گیت TinyUSB مثال‌های مختلفی وجود دارد که چطور باید از این توابع استفاده کنید و ما موفق شدیم میکروکنترلر (RP2040) را با USB به ماژول (Quectel EC200) متصل کنیم که نتیجه‌ی این کار در تصویر پایین مشخص است.

راهنمای جامع پروتکل USB: از معماری و کلاس‌ها تا راه‌اندازی با TinyUSB و RP2040

برنامه به این صورت کار میکند که شما هردستوری روی UART ارسال کنید از طریق USB به ماژول فرستاده شده و جواب به شما نمایش داده می‌شود. برنامه به این دلیل به این صورت نوشته شد که بتوانید از ارتباط صحیح ماژول با میکروکنترلر خودتان مطمئن شوید. چنانچه لازم باشد می‌توانید به راحتی کد را تغییر دهید تا بدون UART کار کند. کد برنامه از این لینک قابل دانلود است. کد زیر مربوط به قسمت تنظیمات کتابخانه TinyUSB است.

توابعی که در کد زیر مشاهده می‌کنید برای گرفتن Description از ماژول هستند.

Description که توابع استخراج می‌کند به صورت زیر است.

پس از استخراج داده‌های مورد نیاز از ماژول حالا نوبت ارسال و دریافت داده است که از این توابع استفاده می‌کنیم.

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

وبسایت: http://www.arvidtek.com

www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک


ویراستار: حسین زنجانی زاده
مقالات بیشتر

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
نویسنده شو !

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

ارسال مقاله