تولزبازار
پیام‌های Capabilities در USB PD؛ ساختار PDO و APDO از Fixed تا PPS و AVS
1405/05/21 7 دقیقه مطالعه

پیام‌های Capabilities در USB PD؛ ساختار PDO و APDO از Fixed تا PPS و AVS

مجموعه مرجع تخصصی USB Power Delivery - مقاله ۹ از ۵۲

پیام‌های Capabilities در USB PD؛ ساختار PDO و APDO از Fixed تا PPS و AVS

در مقاله نهم، آرایه توانایی‌های Source و نیازهای Sink را در سطح بیت رمزگشایی می‌کنیم؛ از PDOهای ثابت، متغیر و باتری تا APDOهای SPR PPS، SPR AVS و EPR AVS.

دامنه و منبع این مقاله

این متن فقط بر Section 6.4 و Section 6.4.1، صفحات ۱۳۸ تا ۱۵۴ سند USB Power Delivery Specification, Revision 3.2, Version 1.1, 2024-10 استوار است. ساختار Request و RDO از Section 6.4.2 آغاز می‌شود و عمداً به مقاله ۱۰ واگذار شده است.

Capabilities فهرست انتخاب‌های توان است

Source آنچه می‌تواند تحویل دهد و Sink آنچه برای کارکرد نیاز دارد را با Data Objectهای ۳۲‌بیتی توصیف می‌کند.

در مقاله ۸ دیدیم که Control Message هیچ Data Objectی ندارد. نقطه مقابل آن Data Message است: Header پیام باید NDO غیرصفر داشته باشد و پس از آن یک یا چند Data Object قرار می‌گیرد. نوع Message از فیلد پنج‌بیتی Message Type در Header مشخص می‌شود و همان نوع تعیین می‌کند Objectهای بعدی باید به‌عنوان PDO، RDO، VDO، BDO، BSDO یا ADO تفسیر شوند. بنابراین یک کلمه ۳۲‌بیتی به‌تنهایی معنای کامل ندارد؛ ابتدا باید زمینه پیام را شناخت.

Source_Capabilities و Sink_Capabilities از مجموعه‌ای مرتب از Power Data Objectها ساخته می‌شوند. Source با این مجموعه سقف‌ها و حالت‌های قابل عرضه را Advertise می‌کند. Sink نیز نیازهای توان خود را در Sink_Capabilities اعلام می‌کند. در مذاکره SPR، Sink بعداً یک PDO پیشنهادی Source را با شماره موقعیت انتخاب می‌کند؛ اما خود انتخاب و ساخت RDO موضوع مقاله بعد است.

همه کمینه‌ها و بیشینه‌های ولتاژ و جریان در PDO مقدار مطلق هستند. از طرف دیگر، مذاکره نباید جریانی بیش از تحمل Receptacle یا Plug متصل ایجاد کند. به همین دلیل Source باید پیشنهادهای خود را با محدودیت کانکتور و کابل سازگار کند و Sink نیز فقط از میان توانایی‌های واقعاً Advertiseشده درخواست بسازد. خواندن PDO بدون توجه به کابل می‌تواند تصویری غیرواقعی از توان قابل استفاده بدهد.

NDO > 0

Data Message

پس از Message Header حداقل یک Data Object سی‌ودوبیتی وجود دارد.

B31..30

نوع اصلی PDO

دو بیت بالایی میان Fixed، Battery، Variable و APDO تمایز می‌گذارند.

B29..28

زیرنوع APDO

وقتی دو بیت بالا 11b باشد، این دو بیت PPS یا AVS را تعیین می‌کنند.

Table 6.6؛ Data Message را از Header بشناسید

جدول 6.6 کد Message Type، فرستنده مجاز و نوع SOP معتبر هر Data Message را مشخص می‌کند. Source_Capabilities با کد 0_0001 از Source یا DRP و Sink_Capabilities با کد 0_0100 از Sink یا DRP ارسال می‌شود؛ هر دو فقط روی SOP معتبرند. Request نیز SOP only است، در حالی که BIST، Enter_USB، Revision و Vendor_Defined می‌توانند در خانواده SOP* کاربرد داشته باشند.

جدول انواع Data Message در USB Power Delivery شامل کد Message Type، فرستنده مجاز، توضیح و Start of Packet معتبر
Table 6.6 — Data Message Types
فهرست رسمی Data Messageها، فرستنده مجاز و Start of Packet معتبر.
کدنوع پیامفرستندهSOPکارکرد
0_0001Source_CapabilitiesSource یا DRPSOP onlyاعلام توانایی‌های Source
0_0010RequestSinkSOP onlyانتخاب و درخواست توان
0_0011BISTTester، Source یا SinkSOP*آزمون انطباق PHY
0_0100Sink_CapabilitiesSink یا DRPSOP onlyاعلام نیازهای Sink
0_0101 / 0_0110 / 0_0111Battery_Status / Alert / Get_Country_InfoSource یا SinkSOP onlyوضعیت، هشدار یا اطلاعات کشور
0_1000Enter_USBDFPSOP*ورود به USB Mode
0_1001 / 0_1010EPR_Request / EPR_ModeSink / Source یا SinkSOP onlyمذاکره و کنترل EPR
0_1011 / 0_1100 / 0_1111Source_Info / Revision / Vendor_Definedمطابق نوعSOP یا SOP*اطلاعات منبع، نسخه یا داده سازنده

درخت تشخیص PDO و APDO

اولین مرحله Decode خواندن B31..30 است. Fixed برای ولتاژ تنظیم‌شده و ثابت است؛ Variable محدوده یک منبع با تنظیم ضعیف‌تر را نشان می‌دهد؛ Battery منبعی را توصیف می‌کند که می‌تواند مستقیم به VBUS متصل شود؛ و مقدار 11b قالب توسعه‌یافته APDO را فعال می‌کند. در APDO، B29..28 زیرنوع را مشخص می‌کند: 00b برای SPR PPS، 01b برای EPR AVS، 10b برای SPR AVS و 11b رزرو است.

جدول ساختار عمومی Power Data Object و کد نوع Fixed، Battery، Variable و APDO
Table 6.7 — Power Data Object
تشخیص نوع اصلی PDO از بیت‌های B31..30.
جدول ساختار عمومی Augmented Power Data Object و زیرنوع‌های SPR PPS، EPR AVS و SPR AVS
Table 6.8 — Augmented Power Data Object
تشخیص زیرنوع APDO از بیت‌های B29..28.
جدول ساختار Fixed Supply PDO در سمت Source شامل Capability Flagها، ولتاژ و بیشینه جریان
Table 6.9 — Fixed Supply PDO, Source
ساختار Fixed Source PDO و جایگاه Capability Flagها، Voltage و Maximum Current.
B31..30نوع PDOپارامتر اصلی
00bFixed Supplyولتاژ و جریان
01bBatteryبازه ولتاژ و توان
10bVariableبازه ولتاژ و جریان
11bAPDOقالب توسعه‌یافته
B29..28زیرنوع APDOمحدوده
00bSPR PPSSPR، تا ۲۱ ولت
01bEPR AVSEPR، ۱۵ تا ۴۸ ولت
10bSPR AVSSPR، ۹ تا ۲۰ ولت
11bReservedنباید استفاده شود

تله رایج Decoder

B29..28 همیشه زیرنوع نیست. فقط وقتی B31..30 برابر 11b باشد باید آن را APDO Type خواند. در Fixed PDO همین بیت‌ها Capability Flag هستند و در Variable یا Battery بخشی از Maximum Voltage محسوب می‌شوند.

Fixed Supply PDO منبع؛ فقط ولتاژ و جریان نیست

در Fixed Source PDO، B19..10 ولتاژ را با واحد 50mV و B9..0 بیشینه جریان را با واحد 10mA حمل می‌کند. اما اولین PDO که باید vSafe5V باشد نقش دیگری هم دارد: بیت‌های 29 تا 23 اطلاعات ثابت Port را منتقل می‌کنند. در همه Fixed PDOهای بعدی این بیت‌ها باید صفر باشند. بنابراین اگر Analyzer همان Flagها را در PDO مربوط به 9V یا 15V گزارش کند، Object مشکوک یا نامعتبر است.

بیت‌هافیلدتفسیر
B31..30Fixed Supply = 00bانتخاب قالب ثابت
B29Dual-Role Powerپشتیبانی از PR_Swap
B28USB Suspend Supportedاعمال قواعد Suspend پس از قرارداد
B27..25Unconstrained / USB Comm / DRDمنبع نامحدود، ارتباط USB و Dual-Role Data
B24 / B23Unchunked Extended / EPR Capableپیام Extended بدون Chunk و توانایی EPR
B22 / B21..20Reserved / Peak Currentبیت رزرو باید صفر و دو بیت بعدی کد اضافه‌بار است
B19..10VoltageRaw × 50mV
B9..0Maximum CurrentRaw × 10mA

نمونه Decode: 5V / 3A

برای 5V، مقدار خام Voltage برابر 5000÷50 یعنی 100 است. برای 3A، مقدار خام Current برابر 3000÷10 یعنی 300 می‌شود. اگر Flagها صفر و Peak Current نیز 00b باشد، داده پایین Object از ترکیب 100 در B19..10 و 300 در B9..0 ساخته می‌شود.

5V / 0mA معنای ویژه دارد

Source فاقد توانایی قابل عرضه می‌تواند Fixed PDO با 5V و 0mA بفرستد. همین الگو برای هدایت Sink به کم‌مصرف‌ترین وضعیت نیز استفاده می‌شود. صفر بودن جریان را نباید به‌اشتباه «PDO خراب» یا «حداقل یک آمپر» تفسیر کرد.

Dual-Role Power و Dual-Role Data قابلیت‌های Static هستند و باید در Source_Capabilities و Sink_Capabilities یک دستگاه هم‌خوان باقی بمانند. USB Communications Capable تنها وقتی یک است که Port روی خطوط داده USB مانند D+/D− یا مسیرهای SuperSpeed توان ارتباط داشته باشد.

بیت EPR Capable در Source ثابت است و برای منبعی تنظیم می‌شود که برای بیش از 100W طراحی شده و EPR Mode را پشتیبانی می‌کند. حتی با یک بودن این بیت، ورود به EPR فقط زمانی مجاز است که کابل و Sink نیز EPR Capable باشند. پس این Flag اعلام آمادگی معماری است، نه اثبات اینکه همین لحظه قرارداد EPR برقرار است.

Peak Current، Variable و Battery در سمت Source

Source فقط موظف است جریان Operating Current قرارداد را تحویل دهد، اما می‌تواند قابلیت اضافه‌بار کوتاه‌مدت را با Peak Current Advertise کند. کد 00b یعنی پیک برابر IoC است یا جزئیات Extended باید از Source_Capabilities_Extended گرفته شود. سه کد دیگر سه پروفایل اضافه‌بار با درصد جریان، مدت و Duty Cycle مشخص هستند. این قابلیت برای اتصال مستقیم Port-to-Port است و نباید از طریق Hub به Sink پایین‌دست بازتاب داده شود.

جدول قابلیت Peak Current منبع توان ثابت در USB Power Delivery
Table 6.10 — Fixed Power Source Peak Current Capability
پروفایل‌های اضافه‌بار کوتاه‌مدت Source بر اساس Peak Current.
جدول ساختار Variable Supply non-Battery PDO در سمت Source
Table 6.11 — Variable Supply (non-Battery) PDO, Source
بازه ولتاژ و بیشینه جریان Variable Source PDO.
جدول ساختار Battery Supply PDO در سمت Source شامل بازه ولتاژ و بیشینه توان
Table 6.12 — Battery Supply PDO, Source
بازه ولتاژ و Maximum Allowable Power در Battery Source PDO.
جدول ساختار SPR Programmable Power Supply APDO در سمت Source
Table 6.13 — SPR Programmable Power Supply APDO, Source
ساختار SPR PPS شامل محدوده ولتاژ، Maximum Current و PPS Power Limited.
Peak۱ms @ ۵٪۲ms @ ۱۰٪۱۰ms @ ۵۰٪
00bپیک برابر IoC یا مراجعه به Extended Capabilities
01b150% IoC125% IoC110% IoC
10b200% IoC150% IoC125% IoC
11b200% IoC175% IoC150% IoC

Variable Source PDO

  • B31..30 = 10b
  • B29..20: بیشینه ولتاژ با واحد 50mV
  • B19..10: کمینه ولتاژ با واحد 50mV
  • B9..0: بیشینه جریان با واحد 10mA

ولتاژ واقعی باید در تمام تغییرات داخل این بازه بماند و کمینه Advertiseشده نباید کمتر از ۸۰٪ بیشینه باشد. این PDO یک ولتاژ دقیق لحظه‌ای وعده نمی‌دهد؛ فقط محدوده معتبر منبع را توصیف می‌کند.

Battery Source PDO

  • B31..30 = 01b
  • B29..20: بیشینه ولتاژ با واحد 50mV
  • B19..10: کمینه ولتاژ با واحد 50mV
  • B9..0: بیشینه توان با واحد 250mW

تفاوت کلیدی این است که Battery به‌جای Current، Power حمل می‌کند. باتری باید توان Advertiseشده را در سراسر بازه ولتاژ ارائه دهد و Sink می‌تواند ولتاژ باتری را مانیتور کند.

APDOهای Source؛ PPS با AVS یکی نیست

APDO خروجی قابل تنظیم را معرفی می‌کند. در SPR PPS، ولتاژ عملیاتی با گام 20mV تنظیم می‌شود؛ اما فیلدهای کمینه و بیشینه داخل خود APDO با واحد 100mV رمز می‌شوند. در SPR AVS و EPR AVS هم محدوده ولتاژ با واحد 100mV بیان و تنظیم ولتاژ در گام‌های 100mV انجام می‌شود. تفاوت مهم‌تر این است که PPS محدودکننده جریان برنامه‌پذیر دارد، اما AVS از نظر محدودکردن جریان مانند Fixed Supply عمل می‌کند.

جدول ساختار SPR Adjustable Voltage Supply APDO در سمت Source
Table 6.14 — SPR Adjustable Voltage Supply APDO, Source
ساختار SPR AVS و فیلدهای Maximum Current برای بازه‌های ۱۵ و ۲۰ ولت.
جدول ساختار EPR Adjustable Voltage Supply APDO در سمت Source
Table 6.15 — EPR Adjustable Voltage Supply APDO, Source
ساختار EPR AVS شامل Peak Current، محدوده ولتاژ و PDP پورت.
جدول قابلیت Peak Current منبع EPR AVS در USB Power Delivery
Table 6.16 — EPR AVS Power Source Peak Current Capability
پروفایل‌های اضافه‌بار کوتاه‌مدت ویژه Source EPR AVS.
نوع Source APDOTypeبازهفیلدهای اصلیواحد
SPR PPS11 00۵ تا ۲۱ ولتPPS Power Limited، Vmax، Vmin، ImaxV:100mV / I:50mA
SPR AVS11 10۹ تا ۲۰ ولتPeak، Max Current 15V، Max Current 20VI:10mA
EPR AVS11 01۱۵ تا ۴۸ ولتPeak، Vmax، Vmin، PDPV:100mV / PDP:1W

SPR PPS — Table 6.13

B27 بیت PPS Power Limited است؛ B24..17 بیشینه ولتاژ، B15..8 کمینه ولتاژ و B6..0 بیشینه جریان را حمل می‌کند. B26..25، B16 و B7 رزرو هستند و باید صفر باشند. وقتی Power Limited صفر است Source باید Imax را تا Vmax تحویل دهد. وقتی یک است، Source می‌تواند در ناحیه اختیاری از PDP نامی فراتر رود، اما رفتار پایه PPS و پذیرش درخواست جریان تا سقف Imax همچنان طبق قواعد این APDO باقی می‌ماند.

SPR AVS — Table 6.14

این APDO محدوده ۹ تا ۲۰ ولت را با دو سقف جریان توصیف می‌کند. B19..10 باید با Maximum Current فیلد Fixed PDO پانزده‌ولت برابر باشد و برای بازه ۹ تا ۱۵ ولت به‌کار می‌رود. B9..0 با Maximum Current Fixed PDO بیست‌ولت برابر است و بازه ۱۵ تا ۲۰ ولت را پوشش می‌دهد؛ اگر سقف AVS فقط ۱۵ ولت باشد این فیلد صفر می‌شود. B27..26 همان تعریف Peak Current جدول 6.10 را دارد.

EPR AVS — Table 6.15

B25..17 و B15..8 محدوده ۱۵ تا ۴۸ ولت را با واحد 100mV می‌سازند؛ B7..0 نیز PDP پورت AVS را با واحد یک وات ثبت می‌کند. B27..26 Peak Current ویژه Source EPR AVS است، ولی الگوهای درصدی آن با جدول Fixed Peak Current یکسان‌اند. Source بدون قابلیت اضافه‌بار این دو بیت را 00b می‌گذارد؛ استفاده از قابلیت‌های Extended نیز ابتدا به Get_Source_Cap_Extended نیاز دارد.

PDOهای Sink؛ نیاز عملیاتی به‌جای ظرفیت عرضه

قالب کلی Sink PDO شبیه Source است، اما معنای فیلدهای پایین تغییر می‌کند. Fixed Sink در B9..0 مقدار Operational Current را می‌گذارد؛ Variable Sink نیز جریان عملیاتی لازم در بازه ولتاژ را اعلام می‌کند؛ و Battery Sink توان عملیاتی را با واحد 250mW بیان می‌کند. مقدار عملیاتی می‌تواند بیشترین نیاز دستگاه یا فقط مقدار لازم برای یکی از Modeهای عملکرد آن باشد.

جدول ساختار Fixed Supply PDO در سمت Sink شامل Capability Flagها، ولتاژ و جریان عملیاتی
Table 6.17 — Fixed Supply PDO, Sink
ساختار Fixed Sink PDO و فیلدهای Capability، Fast Role Swap، Voltage و Operational Current.
جدول ساختار Variable Supply non-Battery PDO در سمت Sink
Table 6.18 — Variable Supply (non-Battery) PDO, Sink
بازه ولتاژ و Operational Current موردنیاز Variable Sink.
جدول ساختار Battery Supply PDO در سمت Sink شامل بازه ولتاژ و توان عملیاتی
Table 6.19 — Battery Supply PDO, Sink
بازه ولتاژ و Operational Power موردنیاز Battery Sink.
قالب SinkTypeولتاژفیلد پایینواحد
Fixed00bB19..10Operational Current50mV / 10mA
Variable10bVmax و VminOperational Current50mV / 10mA
Battery01bVmax و VminOperational Power50mV / 250mW

Flagهای اولین Fixed Sink PDO

vSafe5V در سمت Sink نیز اطلاعات Port را حمل می‌کند: B29 Dual-Role Power، B28 Higher Capability، B27 Unconstrained Power، B26 USB Communications Capable و B25 Dual-Role Data. بیت‌های 24..23 جریان موردنیاز پس از Fast Role Swap را کد می‌کنند و B22..20 باید صفر باشند. همه Fixed PDOهای بعدی باید بیت‌های 29..20 را صفر بگذارند.

Higher Capability چه می‌گوید؟

اگر Sink برای عملکرد کامل به بیش از vSafe5V، مثلاً 15V، نیاز داشته باشد این بیت را یک می‌کند. دستگاه همچنان vSafe5V را پشتیبانی می‌کند، اما 5V تمام قابلیت‌های آن را فعال نمی‌کند. در عیب‌یابی، روشن بودن این بیت توضیح می‌دهد چرا دستگاه با شارژر ساده روشن می‌شود ولی عملکرد یا توان کامل ندارد.

Fast Role Swap Current در B24..23

00b یعنی FRS پشتیبانی نمی‌شود؛ 01b جریان Default USB Port، 10b مقدار 1.5A@5V و 11b مقدار 3.0A@5V را می‌خواهد. Initial Source نباید وقتی این فیلد صفر است FR_Swap Request بفرستد. New Source نیز تنها زمانی FRS را انجام می‌دهد که بتواند جریان اعلام‌شده را تأمین کند و Rp آن همان سطح یا بیشتر را نشان دهد.

APDOهای Sink و تقارن کنترل‌شده با Source

Sink APDO بازه‌ای را مشخص می‌کند که دستگاه در آن کار می‌کند و مقدار جریان یا PDP لازم برای پشتیبانی کامل عملکرد را می‌دهد. ساختار PPS Sink تقریباً با PPS Source یکسان است، اما B27 در Source معنای PPS Power Limited دارد و در Sink رزرو است. همین تفاوت کوچک دلیل کافی است که Decoder قبل از نمایش نام فیلد، جهت پیام را تشخیص دهد.

جدول ساختار SPR Programmable Power Supply APDO در سمت Sink
Table 6.20 — SPR Programmable Power Supply APDO, Sink
ساختار SPR PPS Sink شامل محدوده ولتاژ و Maximum Current موردنیاز.
جدول ساختار SPR Adjustable Voltage Supply APDO در سمت Sink
Table 6.21 — SPR Adjustable Voltage Supply APDO, Sink
بیشینه جریان موردنیاز Sink در بازه‌های ۱۵ و ۲۰ ولت SPR AVS.
جدول ساختار EPR Adjustable Voltage Supply APDO در سمت Sink
Table 6.22 — EPR Adjustable Voltage Supply APDO, Sink
محدوده ولتاژ و PDP موردنیاز Sink در EPR AVS Mode.

Sink SPR PPS

B24..17 برای Vmax، B15..8 برای Vmin و B6..0 برای Imax است. واحد ولتاژ 100mV و جریان 50mA است. B27..25، B16 و B7 رزرو و صفر هستند.

Sink SPR AVS

B19..10 بیشینه جریان موردنیاز تا 15V و B9..0 بیشینه جریان موردنیاز تا 20V را با واحد 10mA حمل می‌کند. B27..20 رزرو است.

Sink EPR AVS

Vmax در B25..17، Vmin در B15..8 و PDP موردنیاز در B7..0 قرار دارد. واحد ولتاژ 100mV و PDP یک وات است.

ترتیب ساخت SPR Capabilities Message

Capabilities یک لیست آزاد و بی‌ترتیب نیست. پیام SPR باید حداقل یک PDO برای vSafe5V داشته باشد و اطلاعات Port را در همان Object نخست حمل کند. پس از آن حداکثر شش PDO دیگر قرار می‌گیرد. Position هر PDO بعداً برای انتخاب Sink اهمیت دارد؛ در نتیجه جابه‌جایی ترتیب بدون بازسازی درست پیام می‌تواند معنای یک درخواست بعدی را عوض کند.

  1. ۱. vSafe5V Fixed

    همیشه اولین (A)PDO است.

  2. ۲. Fixedهای دیگر

    از کمترین به بیشترین ولتاژ.

  3. ۳. Battery

    بر اساس Minimum Voltage صعودی.

  4. ۴. Variable

    بر اساس Minimum Voltage صعودی.

  5. ۵. SPR AVS

    اگر وجود داشته باشد.

  6. ۶. SPR PPS

    بر اساس Maximum Voltage صعودی.

نمودار ساخت SPR Capabilities Message شامل Message Header و حداکثر هفت PDO
Figure 6.12 — SPR Capabilities Message Construction
ساخت پیام با Message Header، یک PDO اجباری vSafe5V و حداکثر شش PDO دیگر.
نمونه ساخت Source Capabilities برای منبع ۲۷ وات با دو Fixed PDO پنج و نه ولت
Figure 6.13 — Example Source Capabilities Message for a 27W Source
نمونه Source_Capabilities با NDO برابر ۲ و Fixed PDOهای ۵ و ۹ ولت.

مثال ۲۷ وات استاندارد

شکل 6.13 یک Source با دو Fixed PDO را نشان می‌دهد: 5V و 9V. Header مقدار NDO را 2 می‌گذارد، PDO نخست vSafe5V است و PDO دوم 9V را ارائه می‌کند. اگر سقف توان خروجی 27W در 9V باشد، بیشینه جریان آن PDO برابر 3A خواهد بود. Sink برای شناخت گزینه‌ها باید هر دو Object را مستقل Decode کند؛ جمع توان PDOها معنای «توان کل 42 وات» ندارد، زیرا آن‌ها انتخاب‌های جایگزین‌اند نه خروجی‌های هم‌زمان.

Source_Capabilities چه زمانی ارسال می‌شود؟

Source این Data Message را برای Advertiseکردن توانایی‌ها یا در پاسخ به Get_Source_Cap می‌فرستد. پس از Hard Reset، روشن‌شدن یا اتصال Plug، پیام طبق SourceCapabilityTimer تکرار می‌شود تا GoodCRC دریافت شود و حداقل تعداد nCapsCount تلاش انجام گیرد. این تکرار مربوط به تحویل مطمئن پیام است و نباید به‌عنوان چند مجموعه مستقل توانایی ثبت شود.

وقتی توانایی‌ها تغییر می‌کنند Source باید مجموعه جدید را ارسال کند. در منبع چندپورتی، تغییر توان قابل تخصیص به یک Port نیز می‌تواند باعث Advertisement تازه شود. Source نباید دو PDO از یک نوع با ولتاژ یکسان بفرستد؛ در چنین وضعی فقط PDO با بیشترین جریان باید عرضه شود.

یک Sink در SPR باید هر Source_Capabilities را ارزیابی کند و با Request پاسخ دهد. اگر مجموعه جدید توان جاری را دیگر پوشش ندهد، Sink باید برای شرایط تازه مذاکره کند. رفتار دقیق Request در مقاله ۱۰ باز می‌شود، اما نکته عیب‌یابی این است که Advertisement جدید یک رویداد فعال در قرارداد است، نه صرفاً اطلاعات تزئینی.

Accessory-support Sink که VCONN می‌دهد ولی VBUS را Source نمی‌کند می‌تواند 5V/0mA Advertise کند تا Policy Engine به PE_SRC_Ready برسد و فرایند Alt Mode ممکن شود. این مورد نیز نشان می‌دهد یک Capabilities Message همیشه وعده تأمین توان واقعی و قابل مصرف نیست؛ زمینه Power Role و هدف State Machine اهمیت دارد.

قاعده ویژه قرارداد PPS

در Explicit Contract برنامه‌پذیر، Sink باید دست‌کم هر tPPSRequest یک درخواست برنامه‌پذیر تازه بفرستد. Source پس از پذیرش Programmable RDO، اگر تا tPPSTimeout درخواست برنامه‌پذیر بعدی نرسد Hard Reset می‌کند. این پایش با پذیرش یک RDO ثابت، Variable یا Battery، با PR_Swap، Hard Reset یا Error Recovery متوقف می‌شود.

Sink_Capabilities و رفتار DRP

Sink_Capabilities در پاسخ به Get_Sink_Cap فرستاده می‌شود و باید حداقل یک vSafe5V PDO داشته باشد. فهرست می‌تواند چند سطح نیاز عملیاتی را توصیف کند. اگر Sink برای عملکرد کامل به بیش از 5V وابسته است، Higher Capability در Fixed 5V PDO آن تنظیم می‌شود.

اگر Sink اتصال vSafe5V را تشخیص دهد اما تا پایان SinkWaitCapTimer هیچ Source_Capabilities دریافت نکند، باید Hard Reset آغاز کند. این قاعده در Trace به تشخیص Source خاموش، Packet از‌دست‌رفته یا مشکل State Machine کمک می‌کند: وجود 5V روی VBUS به‌تنهایی برای رسیدن به مذاکره PD کافی نیست.

DRP وقتی Source است Source_Capabilities را Advertise می‌کند، ولی مستقل از نقش فعلی نیز باید به Get_Source_Cap پاسخ دهد. به همین ترتیب Sink_Capabilities هنگام Sinkبودن طبیعی است، اما DRP در نقش دیگر هم باید به Get_Sink_Cap پاسخ مناسب بدهد. Decoder نباید صرف دیدن نام پیام نتیجه بگیرد نقش لحظه‌ای فرستنده حتماً با نام Capabilities یکسان است.

در EPR یک استثنای مهم وجود دارد: Sink در EPR Mode اگر Source_Capabilities را در پاسخ به Get_Source_Cap دریافت کند، Request نمی‌فرستد؛ اگر همین پیام به‌صورت unsolicited در EPR برسد باید Hard Reset کند. EPR Capabilities ساخت و قواعد جداگانه‌ای دارد که استاندارد آن را در Section 6.5.15 تعریف کرده است.

روش عملی Decode در Analyzer

  1. ۱. Header را تثبیت کنید.

    NDO باید غیرصفر باشد. Message Type را بخوانید تا بدانید Objectهای بعدی PDO هستند یا قالب دیگری دارند. SOP و فرستنده مجاز را نیز با Table 6.6 کنترل کنید.

  2. ۲. هر Object را با Position ثبت کنید.

    PDO1 تا PDO7 را جدا نگه دارید. Position بخشی از هویت گزینه است و در RDO بعدی به همان جایگاه ارجاع داده می‌شود.

  3. ۳. ابتدا B31..30 را Decode کنید.

    00 Fixed، 01 Battery، 10 Variable و 11 APDO است. تنها در حالت APDO سراغ B29..28 برای تشخیص PPS یا AVS بروید.

  4. ۴. جهت Source یا Sink را اعمال کنید.

    یک Bit Range ممکن است در Source «Maximum Current» و در Sink «Operational Current» باشد. نام‌گذاری Field بدون زمینه پیام خطاست.

  5. ۵. واحد همان قالب را ضرب کنید.

    Fixed/Variable از 50mV و 10mA، Battery از 250mW، PPS از 100mV و 50mA، و EPR AVS برای PDP از 1W استفاده می‌کند. گام تنظیم PPS برابر 20mV است، هرچند Range داخل APDO با 100mV کد می‌شود.

  6. ۶. قواعد ساخت را اعتبارسنجی کنید.

    PDO اول باید Fixed 5V باشد؛ ترتیب Objectها باید صحیح باشد؛ Reservedها صفر باشند؛ Capability Flagها فقط در PDO اول ظاهر شوند؛ و گزینه تکراری هم‌نوع و هم‌ولتاژ وجود نداشته باشد.

فرمول‌های سریع

  • VFixed = raw × 0.05V
  • IFixed = raw × 0.01A
  • PBattery = raw × 0.25W
  • VPPS/AVS range = raw × 0.1V
  • IPPS = raw × 0.05A
  • PEPR AVS = raw × 1W

کنترل توان محاسبه‌شده

برای Fixed و Variable می‌توان سقف تقریبی را از V×I به‌دست آورد، اما Battery مستقیماً Power را می‌دهد و EPR AVS PDP را Advertise می‌کند. در PPS، Vmax×Imax همیشه به معنی توان نامی قابل تحویل در کل بازه نیست؛ بیت Power Limited و PDP منبع نیز باید دیده شود.

اشتباه‌های رایج در خواندن Capabilities

جمع‌زدن توان PDOها: PDOها گزینه‌های جایگزین هستند، نه ریل‌هایی که Sink هم‌زمان همه را مصرف کند.

جابه‌جایی Battery و Variable: کد درست 01b برای Battery و 10b برای Variable است.

خواندن همه جریان‌ها با 10mA: PPS از واحد 50mA و Battery از توان 250mW استفاده می‌کند.

برابر دانستن Range و Step: فیلد Range در PPS واحد 100mV دارد، ولی ولتاژ عملیاتی PPS با گام 20mV تنظیم می‌شود.

تکرار Flagها در همه Fixed PDOها: اطلاعات Port فقط در PDO اول vSafe5V معتبر است.

نادیده‌گرفتن کابل: Advertisement باید با جریان مجاز Connector و Plug محدود شده باشد.

یکی دانستن PPS و AVS: PPS محدودکننده جریان برنامه‌پذیر دارد؛ AVS ندارد.

برداشت نقش از نام پیام: DRP باید حتی در نقش مقابل به Get_Source_Cap یا Get_Sink_Cap پاسخ دهد.

جمع‌بندی مقاله ۹

Capabilities Message آرایه‌ای مرتب از PDO/APDOهای ۳۲‌بیتی است. دو بیت B31..30 نوع اصلی و در APDO دو بیت B29..28 زیرنوع را تعیین می‌کند.

Fixed و Variable معمولاً ولتاژ و جریان، Battery بازه ولتاژ و توان، PPS محدوده قابل برنامه‌ریزی و جریان، SPR AVS دو سقف جریان، و EPR AVS محدوده ولتاژ و PDP را حمل می‌کنند.

اولین Fixed 5V PDO علاوه بر پارامتر توان، Capability Flagهای Port را دارد. ترتیب Objectها، صفر بودن Reservedها، واحد هر فیلد و تفاوت معنای Source و Sink برای Decode معتبر ضروری است.

در مقاله بعدی

در مقاله ۱۰ ساختار Request Data Object را باز می‌کنیم و می‌بینیم Sink چگونه با Object Position، جریان یا توان موردنیاز، Capability Mismatch و Flagهای مذاکره یکی از PDOهای Source را انتخاب می‌کند.

منبع: USB Power Delivery Specification, Revision 3.2, Version 1.1

دیدگاه‌ها (0)

برای ثبت دیدگاه لازم است

هنوز دیدگاهی برای این مقاله ثبت نشده است.