Skocz do zawartości

Konwerter USB - UART oparty na układzie PL2303 + STM32


simba92

Pomocna odpowiedź

Witam!

Zakupiłem konwerter USB - UART w Botlandzie: moduł Botland i zamierzam go wykorzystać do komunikacji szeregowej z robotem w fazie testów.

Sercem robota jest STM32f103vct6, wiec w komunikacji szeregowej na linii wejściowej RX.mikrokontrolera potrzebuje sygnał z zakresu napięciowego 0 - 3.3 V.

Pisałem emaila do sprzedawcy i zapewnił mnie, że po ustawieniu zworki VCCIO na 3.3 V poziomy napieć logiki są w zakresie 0 - 3.3 V, w opisie produktu w sumie też jest o tym wzmianka, wiec niby wszystko OK.

Niestety po podłączeniu modułu ze zworką ustawioną na 3.3 V do PC moduł bardzo się grzeje i mam duże obawy z wykorzystaniem go do komunikacji stm32 <-> PC.

Podsumowując, moje pytania:

1)Dlaczego układ tak się grzeje ??? Po zdjęciu zworki jest chłodny. Czy może jest wadliwy lub jest to normalne ???

2) Czy ktoś stosował podobny moduł w komunikacji z STM32 bez problemu i nie upalił procesora ??? Niektóre linie, również te z interfejsem rs232 mają tolerancje 5 V, wiec wszystko powinno działać ??? . Ewentualnie mogę zrobić dodatkowo dzielnik napięciowy dla linii sygnałowych.

3) Jaki jest poziom napięć linii sygnałowych dla układu PL2303 ??? w nocie nota PL2303 doczytałem, że zworka ustawia poziom napięć 3.3 lub 5 V o czym piszę w poniższej tabeli.

Link do komentarza
Share on other sites

Grzeje się tak sam z siebie, czy coś jeszcze z niego zasilasz?

Pamiętaj, że to 3.3V jest osiągane z 5V za pomocą regulatora liniowego -- czyli te pozostałe 1.7V jest wytracane w postaci ciepła. Im większy prąd będziesz próbował pobierać, tym więcej w sumie energii będzie i tym bardziej się będzie wszystko grzało.

Masz multimetr? Może pomierz napięcia i prądy i będziesz wszystko wiedział.

Link do komentarza
Share on other sites

deshipu tak, grzeje się sam z siebie jak ustawie zworkę na 3.3 V. Układ PL2303 ma wewnętrzny stabilizator, no ale żeby aż tak się grzał ??? Po za tym jak ustawie zworkę na 5 V też się grzeje, a co wtedy miałby stabilizować jak układ jest zasilany z USB ???

Dokonałem pomiarów multimetrem :

1) zworka ustawiona na 3.3 V, napięcie wyjściowe układu 3.3 V

2) zworka ustawiona na 5 V z układu leci dym, PS nie zrobiłem żadnego zwarcia wpiąłem moduł w port USB nic więcej.

Chyba moduł jest wadliwy i będe reklamował 🙁

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

deshipu, a orientujesz się może czy mogę zastosować moduł moduł PL2303 bez zworki do komunikacji z STM32 bez żadnych obaw ?

Czy zastosować dzielnik napięciowy na liniach sygnałowych tzn. RX.mikrokontrolera ?

Pin RX mikrokontrolera dodatkowo mam jako wejście tolerujące 5 V, ale zawsze przestrzegałem zasady 3.3 V dla stm32. Nie chce spalić procesora na płytce w robocie 🙁

Link do komentarza
Share on other sites

Witam !

Problem z konwerterem opartym o układ PL2303 został rozwiązany, sprzedawca wysłał mi nowy działający na, którym zrealizowałem test z echem za pomocą programu terminal i działa. Docelowo konwerter ma służyć testom związanymi z robotem. Napisałem prosty program oparty o kurs STM32 z komunikacją NUCLEO <-----konwerter----> PC (terminal teraterm).

#include "stm32f10x.h"
#include "stdio.h"

void send_char(char c)
{
while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
USART_SendData(USART3, c);
}

void send_string(const char* s)
{
while (*s)
send_char(*s++);
}

int main(void)
{
GPIO_InitTypeDef gpio;
USART_InitTypeDef uart;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | 
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_10;
gpio.GPIO_Mode = GPIO_Mode_AF_PP; // sygnał USART3_TX
GPIO_Init(GPIOB, &gpio);

gpio.GPIO_Pin = GPIO_Pin_11;
gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; // sygnał USART3_RX
GPIO_Init(GPIOB, &gpio);

USART_StructInit(&uart);
uart.USART_BaudRate = 115200;
uart.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
uart.USART_WordLength = USART_WordLength_8b;
uart.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
uart.USART_Parity = USART_Parity_No;
uart.USART_StopBits = USART_StopBits_1;
USART_Init(USART3, &uart);




USART_Cmd(USART3, ENABLE);

while (1) {
send_string("Hello world!\r\n");
}
}

Niestety nie ma żadnego odzewu w terminalu 🙁 pytanie dlaczego ????

Podsumowując :

1) konwerter działa, jest echo. Sterowniki zainstalowane poprawnie, teraterm widzi konwerter na porcie COM

2 program jest napisany w System WorkBench, co ciekawe Usart2 przez płytkę Nucleo działa jak w kursie STM32, ale ja potrzebuje przesyłać dane przez konwerter i póki stoję w miejscu

3 połączenia na płytce sprawdzałem tzn.

nucleo.usart3_TX (PB10) -> rx.konwerter

nucleo.usart3_RX (PB11) <- tx.konwerter

nucleo.gnd - gnd.konwerter

Czy ktoś mógłby się pochylić nad moim problem byłbym wdzięczny. Co może być nie tak ???

Link do komentarza
Share on other sites

deshipu sprawdzę analizatorem sygnały :

nucleo.usart3_TX (PB10)

nucleo.usart3_RX (PB11)

i zobaczymy czy tam coś jest. Póki co konwerter nic nie odbiera, powinny się świecić diody rx i tx na płytce z konwerterem, przynajmniej tak się dzieję w przypadku testu z echem. Chyba czegoś brakuje w programie... ale nie wiem czego ;-(

[ Dodano: 14-08-2017, 19:58 ]

deshipu podpiąłem analizator i cisza żadnych sygnałów z pinów interfejsu UART na nucleo 🙁 czyli zapewne wina programu 🙁

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.