Zasilanie STM32 USB typu C

Zasilanie STM32 USB typu C

Wstęp

W tym dokumencie znajduje się lista najczęściej zadawanych pytań (FAQ) na temat interfejsu STM32 USB Type-C® i funkcji Power Delivery.

Dostarczanie zasilania przez USB typu C®

Czy można używać złącza USB Type-C® PD do przesyłania danych? (Bez korzystania z funkcji szybkiego przesyłania danych USB)

Mimo że samo złącze USB Type-C® PD nie jest przeznaczone do szybkiego przesyłu danych, można je stosować z innymi protokołami i trybami alternatywnymi, a także zarządzać podstawową transmisją danych.

Jakie jest praktyczne zastosowanie modułu VDM UCPD?

Komunikaty definiowane przez dostawców (VDM) w technologii USB Type-C® Power Delivery zapewniają elastyczny mechanizm rozszerzania funkcjonalności USB Type-C® PD poza standardowe negocjacje zasilania. VDM umożliwiają identyfikację urządzeń, obsługę trybów alternatywnych, aktualizacje oprogramowania sprzętowego, niestandardowe polecenia i debugowanie. Wdrażając VDM, dostawcy mogą tworzyć zastrzeżone funkcje i protokoły, zachowując jednocześnie zgodność ze specyfikacją USB Type-C® PD.

STM32CubeMX wymaga konfiguracji przy użyciu określonych parametrów. Gdzie są one dostępne?

Najnowsza aktualizacja zmieniła wyświetlane informacje, aby były bardziej przyjazne dla użytkownika. Teraz interfejs po prostu prosi o podanie głośności.tage i żądany prąd. Parametry te można jednak znaleźć w dokumentacji, a tabela szybkiego odniesienia znajduje się w AN5418.

Rysunek 1Szczegóły specyfikacji (tabela 6-14 w specyfikacji zasilania uniwersalnej magistrali szeregowej)
Dostarczanie zasilania przez USB typu C®

Rysunek 2 wyjaśnia zastosowaną wartość 0x02019096.
Rysunek 2. Szczegółowe dekodowanie PDO
Dostarczanie zasilania przez USB typu C®

Więcej szczegółów na temat definicji PDO można znaleźć w sekcji POWER_IF w dokumencie UM2552.

Jaki jest maksymalny prąd wyjściowy interfejsu USB?

Maksymalny prąd wyjściowy dozwolony przez standard USB Type-C® PD wynosi 5 A przy użyciu specjalnego kabla 5 A. Bez specjalnego kabla maksymalny prąd wyjściowy wynosi 3 A.

Czy ten „tryb podwójnej roli” oznacza możliwość dostarczania energii i ładowania w odwrotnym kierunku?

Tak, DRP (port o podwójnej roli) może być zasilany (odbiornik) lub zasilany (źródło). Jest powszechnie stosowany w urządzeniach zasilanych bateryjnie.

Kontroler i zabezpieczenie zasilania STM32

Czy MCU obsługuje tylko standard PD czy także QC?

Mikrokontrolery STM32 obsługują przede wszystkim standard USB Power Delivery (PD), który jest elastycznym i powszechnie stosowanym protokołem zasilania przez złącza USB Type-C®. Mikrokontrolery STM32 ani stos USB PD firmy STMicroelectronics nie zapewniają natywnej obsługi funkcji szybkiego ładowania (QC). Jeśli wymagana jest obsługa szybkiego ładowania, należy zastosować dedykowany układ scalony kontrolera QC z mikrokontrolerem STM32.

Czy w pakiecie można zaimplementować algorytm prostowania synchronicznego? Czy może on obsługiwać wiele wyjść i ról kontrolera?

Implementacja algorytmu prostowania synchronicznego z wieloma wyjściami i rolą kontrolera jest możliwa dzięki mikrokontrolerom STM32. Konfigurując układy peryferyjne PWM i ADC oraz opracowując algorytm sterowania, można osiągnąć efektywną konwersję mocy i zarządzać wieloma wyjściami. Dodatkowo, wykorzystując protokoły komunikacyjne, takie jak I2C lub SPI, można koordynować działanie wielu urządzeń w konfiguracji kontroler-cel. Jak np.ampnp. STEVAL-2STPD01 z pojedynczym modułem STM32G071RBT6, w którym umieszczono dwa kontrolery UCPD, może zarządzać dwoma portami zasilania typu C o mocy 60 W.

Czy istnieją protokoły TCPP dla VBUS > 20 V? Czy te produkty mają zastosowanie do EPR?

Seria TCPP0 jest przeznaczona do napięcia VBUS do 20 Vtage SPR (Standardowy zakres mocy).

Która seria mikrokontrolerów STM32 obsługuje USB Type-C® PD?

Urządzenie peryferyjne UCPD do zarządzania USB Type-C® PD jest wbudowane w następujące serie STM32: STM32G0, STM32G4, STM32L5, STM32U5, STM32H5, STM32H7R/S, STM32N6 i STM32MP2. W momencie pisania dokumentu podaje ono 961 P/N.

Jak sprawić, by mikrokontroler STM32 działał jako urządzenie szeregowe USB po kursie USB CDC? Czy ta sama lub podobna procedura pomoże mi w przejściu na tryb no-code?

Rozwiązanie komunikacji przez USB jest obsługiwane przez prawdziwychampnarzędzi do odkrywania i oceny, w tym kompleksowych bibliotek wolnego oprogramowania iampPliki dostępne w pakiecie MCU. Generator kodu jest niedostępny.

Czy możliwe jest dynamiczne zmienianie „danych” PD w czasie wykonywania oprogramowania? Np. objętośćtagi aktualnych potrzeb/możliwości, konsument/dostawca itp.?

Dzięki USB Type-C® PD możliwa jest dynamiczna zmiana roli zasilania (odbiorca – SINK lub dostawca – SOURCE), zapotrzebowania na moc (obiekt danych mocy) oraz roli danych (host lub urządzenie). Tę elastyczność ilustruje STM32H7RS USB Dual Role Data i Power wideo.

Czy można wykorzystać standard USB 2.0 i technologię Power Delivery (PD) do odbioru prądu o natężeniu większym niż 500 mA?

USB Type-C® PD umożliwia szybkie ładowanie urządzeń USB niezależnie od transmisji danych i zapewnia wysoką moc. Dzięki temu możliwe jest pobieranie prądu o natężeniu ponad 500 mA podczas transmisji w standardach USB 2.x i 3.x.

Czy mamy możliwość odczytania informacji o urządzeniu źródłowym lub odbiorczym, np. PID/UID urządzenia USB?

USB PD obsługuje wymianę różnych typów wiadomości, w tym wiadomości rozszerzonych, które mogą zawierać szczegółowe informacje o producencie. Interfejs API USBPD_PE_SendExtendedMessage został zaprojektowany w celu ułatwienia tej komunikacji, umożliwiając urządzeniom żądanie i odbieranie danych, takich jak nazwa producenta, nazwa produktu, numer seryjny, wersja oprogramowania sprzętowego i inne niestandardowe informacje zdefiniowane przez producenta.

Czy w przypadku stosowania osłony X-NUCLEO-SNK1M1 zawierającej TCPP01-M12 należy również użyć X-CUBE-TCPP? Czy w tym przypadku X-CUBE-TCPP jest opcjonalny?

Aby uruchomić rozwiązanie USB Type-C® PD w trybie SINK, zaleca się użycie X-CUBE-TCPP, co ułatwi implementację, ponieważ rozwiązanie STM32 USB Type-C® PD wymaga zarządzania. TCPP01-M12 zapewnia optymalną ochronę.

Na płytkach PCB USB linie danych USB (D+ i D-) są prowadzone jako sygnały różnicowe 90 omów. Czy ścieżki CC1 i CC2 również muszą być sygnałami 90 omów?

Linie CC to linie jednostronne z komunikacją o niskiej częstotliwości 300 kb/s. Impedancja charakterystyczna nie ma znaczenia.

Czy TCPP może chronić D+, D-?

Protokół TCPP nie jest przystosowany do ochrony linii D+/-. Aby chronić linie D+/- USBLC6-2 Zalecane są zabezpieczenia ESD lub ECMF2-40A100N6 Zabezpieczenia ESD + filtr sygnału wspólnego, jeśli w systemie występują częstotliwości radiowe.

Czy sterownik jest w formacie HAL lub rejestrowym?

Sterownikiem jest HAL.

Jak mogę mieć pewność, że STM32 poprawnie obsługuje negocjacje mocy i zarządzanie prądem w protokole PD bez konieczności pisania kodu?

Pierwszym krokiem może być seria testów interoperacyjności w terenie z wykorzystaniem dostępnych na rynku urządzeń. Aby zrozumieć działanie rozwiązania, STM32CubeMonUCPD umożliwia monitorowanie i konfigurację aplikacji STM32 USB Type-C® i Power Delivery.

Drugim krokiem może być certyfikacja w programie zgodności USB-IF (forum implementatorów USB) w celu uzyskania oficjalnego numeru identyfikacyjnego testu (TID). Można to zrobić w warsztacie zgodności sponsorowanym przez USB-IF lub w autoryzowanym, niezależnym laboratorium testowym.

Kod wygenerowany przez X-CUBE-TCPP jest gotowy do certyfikacji, a rozwiązania na płycie Nucleo/Discovery/Evaluation zostały już certyfikowane.

Jak wdrożyć funkcję OVP ochrony portu typu C? Czy margines błędu można ustawić w granicach 8%?

Próg OVP jest ustalany przez objętośćtagMostek dzielnika podłączony do komparatora o ustalonej wartości przerwy energetycznej.
Wejście komparatora to VBUS_CTRL w TCPP01-M12 i Vsense w TCPP03-M20. Objętość progu VBUS OVPtagmożna zmienić sprzętowo w zależności od objętościtagwspółczynnik podziału.
Zaleca się jednak stosowanie współczynnika podziału podanego na X-NUCLEO-SNK1M1 lub X-NUCLEO-DRP1M1 zgodnie z docelową maksymalną objętościątage.

Czy stopień otwartości jest wysoki? Czy można dostosować niektóre konkretne zadania?

Stos USB Type-C® PD nie jest otwarty. Można jednak dostosować wszystkie jego wejścia i interakcję z rozwiązaniem. Można również zapoznać się z instrukcją obsługi STM32, aby zapoznać się z interfejsem UCPD.

Na co należy zwrócić uwagę przy projektowaniu obwodu zabezpieczającego port?

Układ scalony TCPP musi być umieszczony blisko złącza typu C. Zalecenia dotyczące schematów znajdują się w instrukcjach obsługi. X-NUCLEO-SNK1M1, X-NUCLEO-SRC1M1, I X-NUCLEO-DRP1M1Aby zapewnić dobrą odporność na wyładowania elektrostatyczne, zalecam zapoznanie się z Notatka aplikacyjna dotycząca wskazówek dotyczących układu ESD.

W dzisiejszych czasach wprowadza się wiele jednoprocesorowych układów scalonych z Chin. Jakie są konkretne zalety?tagJakie są korzyści z używania STM32?

Kluczowe korzyści tego rozwiązania pojawiają się po dodaniu złącza PD typu C do istniejącego rozwiązania STM32. Jest to wówczas opłacalne ze względu na niską objętośćtagKontroler UCPD jest wbudowany w STM32 i charakteryzuje się dużą głośnościątagKontrola i ochrona odbywa się za pomocą protokołu TCP.

Czy ST oferuje jakieś zalecane rozwiązanie obejmujące zasilacz i moduł STM32-UCPD?

Są pełnymi byłymiample z Podwójny adapter USB typu C Power Delivery na bazie programowalnego przetwornicy obniżającej napięcie STPD01. STM32G071RBT6 i dwa TCPP02-M18 służą do obsługi dwóch programowalnych przetwornic obniżających napięcie STPD01PUR.

Jakie jest odpowiednie rozwiązanie dla odbiornika (monitora klasy 60 W), wejścia HDMI lub DP i zasilania?

STM32-UCPD + TCPP01-M12 może obsługiwać moc pobieraną do 60 W. W przypadku HDMI lub DP wymagany jest tryb alternatywny, który można skonfigurować programowo.

Czy te produkty oznaczają, że zostały przetestowane pod kątem zgodności ze standardami USB-IF i USB?

Kod wygenerowany lub zaproponowany w pakiecie oprogramowania sprzętowego został przetestowany i oficjalnie certyfikowany dla niektórych kluczowych konfiguracji sprzętowych. Jak np.ample, X-NUCLEO-SNK1M1, X-NUCLEO-SRC1M1 i X-NUCLEO-DRP1M1 na płycie NUCLEO uzyskały oficjalny certyfikat, a identyfikatory testu USB-IF to: TID5205, TID6408 i TID7884.

Konfiguracja i kod aplikacji

Jak mogę utworzyć PDO?

Budowanie obiektu danych o zasilaniu (PDO) w kontekście USB Power Delivery (PD) wymaga zdefiniowania możliwości zasilania źródła lub odbiornika USB PD. Oto kroki tworzenia i konfigurowania obiektu PDO:

  1. Zidentyfikuj rodzaj PDO:
    • Stała podaż PDO: Definiuje stałą objętośćtagi aktualny
    • Zasilanie bateryjne PDO: Definiuje zakres objętościtages i maksymalna moc
    • Zmienna podaż PDO: Definiuje zakres objętościtagi maksymalny prąd
    • Zasilacz programowalny (PPS) APDO:Pozwala na programowalną głośnośćtagi aktualne.
  2. Zdefiniuj parametry:
    • Tomtage: tomtagpoziom, który PDO zapewnia lub żąda
    • Prąd / moc:Prąd (dla stałych i zmiennych PDO) lub moc (dla akumulatorowych PDO) dostarczana przez PDO
      lub prośba.
  3. Użyj interfejsu graficznego STM32 Cube MonUCPD:
    • Krok 1: Upewnij się, że posiadasz najnowszą wersję aplikacji STM32 Cube Mon UCPD
    • Krok 2: Podłącz płytkę STM32G071-Disco do komputera hosta i uruchom aplikację STM32 Cube Monitor-UCPD
    • Krok 3:Wybierz swoją tablicę w aplikacji
    • Krok 4:Przejdź do strony „konfiguracja portu” i kliknij kartę „możliwości odbiornika”, aby zobaczyć
      aktualna lista PDO
    • Krok 5:Modyfikuj istniejący PDO lub dodaj nowy PDO, postępując zgodnie z instrukcjami
    • Krok 6Kliknij ikonę „Wyślij do celu”, aby wysłać zaktualizowaną listę PDO do swojej tablicy
    • Krok 7: Kliknij ikonę „zapisz wszystko w celu”, aby zapisać zaktualizowaną listę PDO na swojej tablicy[*].

Oto byłyampprzykład, jak można zdefiniować PDO o stałej podaży w kodzie:

/* Define a fixed supply PDO */
uint32_t fixed_pdo = 0;
fixed_pdo |= (voltage_in_50mv_units << 10); // Voltage in 50 mV units
fixed_pdo |= (max_current_in_10ma_units << 0); // Max current in 10 mA units
fixed_pdo |= (1 << 31); // fixed supply type

Exampkonfiguracja plików

W przypadku zasilania stałego PDO o napięciu 5 V i napięciu 3 A:

content_copy
uint32_t fixed_pdo = 0;
fixed_pdo |= (100 << 10); // 5 V (100 * 50 mV)
fixed_pdo |= (30 << 0); // 3A (30 * 10 mA)
fixed_pdo |= (1 << 31); // fixed supply type

Dodatkowe uwagi: 

  • Dynamiczny wybór PDO: Możesz dynamicznie zmienić metodę wyboru PDO w czasie wykonywania, modyfikując zmienną USED_PDO_SEL_METHOD w pliku usbpd_user_services.c file[*] .
  • Ocena możliwości: Użyj funkcji takich jak USBPD_DPM_SNK_EvaluateCapabilities, aby ocenić otrzymane możliwości i przygotować komunikat żądania[*].

Tworzenie PDO obejmuje zdefiniowanie wolumenutage i parametry prądu (lub mocy) oraz konfigurowanie ich za pomocą narzędzi takich jak STM32CubeMonUCPD lub bezpośrednio w kodzie. Postępując zgodnie z instrukcjami i przykładamiampDzięki udostępnionym funkcjom możesz skutecznie tworzyć i zarządzać PDO dla swoich aplikacji USB PD.

Czy istnieje funkcja schematu priorytetyzacji z podłączonym więcej niż jednym odbiornikiem PD?

Tak, istnieje funkcja, która obsługuje schemat priorytetyzacji w przypadku podłączenia więcej niż jednego odbiornika PD. Jest to szczególnie przydatne w scenariuszach, w których wiele urządzeń jest podłączonych do jednego źródła zasilania. Dystrybucja zasilania musi być zarządzana w oparciu o priorytety.

Schematem priorytetyzacji można zarządzać za pomocą funkcji USBPD_DPM_SNK_EvaluateCapabilities. Funkcja ta ocenia otrzymane możliwości ze źródła PD i przygotowuje komunikat żądania na podstawie wymagań i priorytetów odbiornika. W przypadku wielu odbiorników, można zaimplementować schemat priorytetyzacji, przypisując poziomy priorytetów każdemu odbiornikowi i modyfikując funkcję USBPD_DPM_SNK_EvaluateCapabilities, aby uwzględnić te priorytety.

content_copy
uint32_t fixed_pdo = 0;
fixed_pdo |= (100 << 10); // 5V (100 * 50mV)
fixed_pdo |= (30 << 0); // 3A (30 * 10mA)
fixed_pdo |= (1 << 31); // Fixed supply type

/* Define a Fixed Supply PDO */
uint32_t fixed_pdo = 0;
fixed_pdo |= (voltage_in_50mv_units << 10); // Voltage in 50mV units
fixed_pdo |= (max_current_in_10ma_units << 0); // Max current in 10mA units
fixed_pdo |= (1 << 31); // Fixed supply type

Czy używanie DMA z LPUART jest obowiązkowe dla GUI?

Tak, komunikacja za pomocą rozwiązania ST-LINK jest obowiązkowa.

Czy ustawienie LPUART na 7 bitów dla długości słowa jest prawidłowe?

Tak, to prawda.

W narzędziu STM32CubeMX znajduje się pole wyboru „Oszczędzaj energię nieaktywnego UCPD – dezaktywuj podciąganie rozładowanej baterii”. Co oznacza to pole wyboru, jeśli jest zaznaczone?

W trybie SOURCE, USB Type-C® wymaga rezystora podciągającego podłączonego do napięcia 3.3 V lub 5.0 V. Działa on jako generator źródła prądowego. To źródło prądowe można wyłączyć, gdy USB Type-C® PD nie jest używane, aby zmniejszyć zużycie energii.

Czy konieczne jest używanie FreeRTOS w aplikacjach STM32G0 i USB PD? Czy są jakieś plany dotyczące np. USB PD innych niż FreeRTOS?amples?

Korzystanie z FreeRTOS w aplikacjach USB Power Delivery (USB PD) na mikrokontrolerze STM32G0 nie jest obowiązkowe. USB PD można zaimplementować bez systemu RTOS, obsługując zdarzenia i maszyny stanowe w pętli głównej lub poprzez przerwanie procedur serwisowych. Chociaż pojawiły się prośby o USB Power Delivery, np.amples bez RTOS. Obecnie nie ma ex-RTOSample jest dostępny. Ale niektóre AzureRTOS exampsą dostępne dla serii STM32U5 i H5.

Czy w wersji demonstracyjnej STM32CubeMX, w której tworzona jest aplikacja USB PD dla STM32G0, dokładność HSI jest akceptowalna dla aplikacji USB PD? Czy użycie zewnętrznego rezonatora HSE jest obowiązkowe?

HSI zapewnia zegar jądra dla peryferiów UCPD, więc nie ma korzyści z korzystania z HSE. Ponadto, STM32G0 obsługuje USB 2.0 bez użycia kryształu w trybie urządzenia, więc HSE byłby wymagany tylko w trybie hosta USB 2.0.

Rysunek 3. Resetowanie UCPD i zegarów

Resetowanie UCPD i zegarów

Czy istnieje jakaś dokumentacja, do której mogę się odwołać, aby skonfigurować CubeMX w sposób, który opisałeś później?

Dokumentacja jest dostępna w następującym miejscu Link do Wiki.

Czy monitor STM 32 Cube umożliwia monitorowanie w czasie rzeczywistym? Czy monitorowanie w czasie rzeczywistym jest możliwe poprzez połączenie STM32 i ST-LINK?

Tak, STM32CubeMonitor może wykonywać rzeczywisty monitoring poprzez połączenie STM32 i ST-LINK.

Czy VBUS jest wolumenem?tagCzy funkcja pomiaru prądu jest prezentowana na ekranie monitora i jest dostępna domyślnie w wersjach podstawowych na płytach obsługujących UCPD, czy też jest to funkcja dodanej płyty NUCLEO?

Dokładna objętośćtagPomiar jest dostępny natywnie, ponieważ objętość VBUStage jest wymagane przez USB Type-C®.
Dokładny pomiar prądu można wykonać za pomocą TCPP02-M18 / TCPP03-M20 dzięki zastosowaniu strony wysokiej amprezystor bocznikowy i rezystor odcinający służą również do zabezpieczenia nadprądowego.

Generator kodu aplikacji

Czy CubeMX może wygenerować projekt oparty na systemie operacyjnym Azure RTOS za pomocą X-CUBE-TCPP w ten sam sposób, co FreeRTOS™? Czy może wygenerować kod zarządzający USB PD bez użycia FreeRTOS™? Czy ten pakiet oprogramowania wymaga systemu operacyjnego RTOS do działania?

STM32CubeMX generuje kod dzięki pakietowi X-CUBE-TCPP, wykorzystując dostępny dla mikrokontrolera system operacyjny czasu rzeczywistego (RTOS), FreeRTOS™ (np. dla STM32G0)ample) lub AzureRTOS (dla STM32H5 jako np.ample).

Czy X-CUBE-TCPP może generować kod dla podwójnego portu Type-C PD, takiego jak płyta STSW-2STPD01?

X-CUBE-TCPP może generować kod tylko dla jednego portu. Aby to zrobić dla dwóch portów, należy wygenerować dwa oddzielne projekty bez nakładania się na zasoby STM32 i z dwoma adresami I2C dla TCPP02-M18, a następnie je połączyć.
Na szczęście, STSW-2STPD01 Posiada kompletny pakiet oprogramowania układowego dla obu portów. Nie ma więc potrzeby generowania kodu.

Czy to narzędzie projektowe współpracuje ze wszystkimi mikrokontrolerami z USB Type-C®?

Tak, X-CUBE-TCPP współpracuje z dowolnym modułem STM32 z wbudowaną funkcją UCPD dla wszystkich typów zasilania (SINK / SOURCE / Dual Role). Współpracuje z dowolnym modułem STM32 dla 5 V typu C SOURCE.

Tabela 1Historia rewizji dokumentu

Data Rewizja Zmiany
20-cze-2025 1 Pierwsze wydanie.

Ważna informacja – przeczytaj uważnie

STMicroelectronics NV i jej spółki zależne („ST”) zastrzegają sobie prawo do wprowadzania zmian, poprawek, ulepszeń, modyfikacji i udoskonaleń produktów ST i/lub niniejszego dokumentu w dowolnym momencie bez powiadomienia. Nabywcy powinni uzyskać najnowsze istotne informacje o produktach ST przed złożeniem zamówienia. Produkty ST są sprzedawane zgodnie z warunkami sprzedaży ST obowiązującymi w momencie potwierdzenia zamówienia.

Nabywcy ponoszą wyłączną odpowiedzialność za wybór, selekcję i użytkowanie produktów ST. ST nie ponosi żadnej odpowiedzialności za pomoc w stosowaniu ani za konstrukcję produktów nabywców.

ST nie udziela żadnej licencji, wyraźnej ani dorozumianej, na jakiekolwiek prawa własności intelektualnej.

Odsprzedaż produktów ST z postanowieniami różniącymi się od informacji zawartych w niniejszym dokumencie powoduje unieważnienie gwarancji udzielonej przez ST na taki produkt.

ST i logo ST są znakami towarowymi ST. Aby uzyskać dodatkowe informacje o znakach towarowych ST, zapoznaj się z www.st.com/trademarks. Wszystkie inne nazwy produktów lub usług są własnością ich odpowiednich właścicieli.

Informacje zawarte w niniejszym dokumencie zastępują informacje podane wcześniej w jakiejkolwiek poprzedniej wersji tego dokumentu.

© 2025 STMicroelectronics – Wszelkie prawa zastrzeżone
Logo

Dokumenty / Zasoby

Zasilanie ST STM32 USB typu C [plik PDF] Instrukcja obsługi
TN1592, UM2552, STEVAL-2STPD01, STM32, zasilanie przez USB typu C, STM32, zasilanie przez USB typu C, zasilanie przez USB typu C, zasilanie, zasilanie

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *