Czy kiedykolwiek zdarzyło Ci się użyć terminu UART tylko po to, by zostać poprawionym przez innego inżyniera, że nie jest to UART, ale USART? W pewnych przypadkach oba te terminy są zamienne, ale w wielu innych używanie ich wymiennie jest niepoprawne. Przyjrzyjmy się, czym dokładnie są USART i UART, a także jakie są pomiędzy nimi główne różnice. Większość...
Zacznij od opisania formatu danych. Po czym odbiorca ma poznać, że zakończono przesyłanie liczby? Tego ne napisałeś powyżej. Odbiór łatwo zrobisz w przerwaniu, pisząc obsługę przerwania w konwencji automatu. Najpierw poczytaj, co oznacza poprzednie zdanie. Potem możesz zacząć pisać automat. Potrzebne tylko dwa stany: - oczekiwanie na 'L' - skanowanie...
Z DMA powinno być łatwiej a z pewnością mniej obciąża CPU. Oczywiscie ze nie. Jak zwykle kol. (at)LChucki wprowadza w błąd. Dla 2 znaków oczywiście to nie ma sensu. Trzeba po stronie odbierającej wykrywać koniec transmisji (np poprzez IDLE, przekróecenie bufora itd itd). Do tego trzeba zaimplementować odpowiednie mechanizmy synchronizacyjne. Sądząc...
Zdefiniuj "nie działa". Nic nie odbiera? Bo w sumie to nie powinien. Żeby odebrać coś za pomocą przerwania należy te przerwania włączyć [syntax=c] NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemp... = 0; NVIC_InitStructure.NVIC_IRQChannelSubPri... = 0; NVIC_InitStructure.NVIC_IRQChannelCmd...
Nie korzystam z systemInit ani zadnej innej biblioteki, cały kod który mam jest napisany w 100% przeze mnie. Czyli dobrze założyłem, to 16Mhz, pytanie ktore dalej pozostaje bez odpowiedzi to co jest nie tak ? :( Chyba jednak nie cały. Nie napisałeś nic o środowisku - obejrzyj SystemInit(). Najbardziej nie tak jest to, że nie pokazałeś poprawionego...
USART może zgłaszać koniec ramki. Warunek to odstęp pomiędzy bajtami nie dłuższy niż bajt https://msalamon.pl/odbieranie-uart-po-d...
Witam, mam problem z oprogramowaniem STM32, próbuję odbierać i wysyłać dane z USART3 (do komunikacji z innym mikroprocesorem). Kod wygląda tak: [syntax=c]int main(void) { /* Flash unlock */ FLASH_Unlock(); /* Initialize Key Button mounted on STM3210X-EVAL board */ //STM_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_GPIO); RCC_APB2PeriphClockCmd(RCC_APB1Periph_US...
z jednej wysylasz z predkoscia 4800 b/s a drugim odbierasz z 9600 b/s ?
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
Podobają mi się te rzeczy o których czytam tutaj (; Do tej pory myślałem że DMA raczej nie ma sensu przy odbiorze danych których długość jest nieznana/zmienna, a tu proszę... Wychodzi na to, że przy zastosowaniu standardowych mechanizmów RTOSa (programowe timery) + ewentualne przerwanie od IDLE można mieć samo odbieranie "gratis". 4\/3!!
Ta funkcja nic nie gubi - gubisz zapewne w kodzie, którego nie pokazałeś. Nie wiem, co robi usart_read() - tam powinno być zwykłe przesłanie pakiet[j] = USARTx->RDR
Witam, cały dzień męczę się z obsługą przerwania od odbioru danych w STM32103RB. Korzystam z biblioteki HAL. Po całym dniu dalej nie wiem jak to ma wyglądać, dostępne example robione są w STM32CubeMX, a ja z tego nie korzystam. W dokumentacji chyba nie potrafię się poruszać bo nie wyiskałem z niej co po kolei trzeba wywoływać aby obsłużyć to przerwanie....
w fiunkcji HAL_USART_Receive_IT(...) podajesz bufor i ilość bajtów do odebrania. HAL_UART_RxCpltCallback jest wywoływana po odebraniu tej ilości danych. Pokaż cały kod.
Kolego gaskoin. (jeszcze muszę pomyśleć nad tym co zaproponowałeś i przemyśleć ten kod tymczasem piszę) Tak zgadzam się. Uważam, że ten kod jest pomocny. To co napiąłeś to się z tym zgadzam. Ten kod działa. Ale być może nie o takie działanie mi chodziło, albo coś partole. Jeszcze to posprawdzam. Co do kolegi Freddie. Nie spodziewałem się takiej zawziętej...
Witam, mam problem z odbieraniem danych po usarcie. Jest on skonfigurowany tak: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /* Configure the USART1 synchronous paramters...
Nie musisz odblokowywać ani obsługiwać przerwań timera. Jeśli raz włączysz wyzwalanie ADC, będzie ono włączone (raczej - co prawda STM32F1 są strasznie skopane, ale chyba nie aż tak). Nie ruszaj w ogóle rejestrów timera, których nie potrzebujesz. na oko potrzebujesz czterech dostępów - preskaler, okres, włączenie wyzwalania ADC i wystartowanie z autoreload....
A jak to możliwe, że echo idzie równocześnie z przesyłanymi danymi? Pokaż kompletny kod, który wysyła i odbiera dane. Jednak tak ten RN-171 działa, że w czasie rzeczywistym nadaje to samo co otrzymuje (można to wyłączyć). Tak czy owak problem tkwił w odbieraniu danych, użyłem: if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET) a powinienem:...
WItam, Zrobiłem projekt w Cube do odbierania danych przez UART za pośrednictwem DMA. Wszystko działa. Używam procesora STM32 F0. Teraz mam przerwanie , które uruchamia mi sie, gdy odebrane zostaną wszystkie zadeklarowane znaki. Ale widziałem przykład na tym samym procesorze w bibliotece SPL w którym zrobiono przerwanie które sie uruchamia w momencie...
Witam Postanowiłem zapytać tutaj, ponieważ wydaje mi się że to odpowiedni temat. Uczę się programowania na bazie STM32. Teraz poznaje porty USART i pojawił się problem: Temat wydzieliłem, ponieważ nie ma nic wspólnego z poprzednim.
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
Filozoficznie ująłbym to tak: jeśli cała funkcjonalność programu nie da się zawrzeć w przerwaniach, to znaczy, że powinniśmy użyć RTOSa. Z samego faktu obecności "pętli głównej" wynikają wyłącznie problemy. Od dawna piszę wszystkie nieduże projekty w taki sposób, że procesor po zainicjowaniu peryferiali idzie spać i tylko obsługuje przerwania. Na 8-bitowych...
Cześć, skonfigurowałem DMA i 2 UARTY (właściwie jeden USART, jeden UART), tak żeby odbierać dane z GPSa na UART4 i poprzez DMA przesyłać dane na stringa, a następnie wysyłać do putty`ego przez USART2. Na pewno dobrze skonfigurowałem UARTy, dane odbieram, natomiast DMA nie działa. Pewnie popełniłem błąd gdzieś w konfiguracji, ale porównywałem ją z różnymi...
Witam. Próbuję odpalić program UART na STM32 – odbieranie danych z kursu. W kodzie nie mam żadnych błędów, ale po naciśnięciu klawiszy nic się na terminalu nie wyświetla. Gdzie może być problem? Używam Tera Term, przy wysyłaniu ciągu bajtów przez UART wszystko działało. Próbowałem wcisnąć a i enter, ale nic to nie dało. USART_BaudRate = 115200...
Witam, Mam problem z komunikacją przez USART, będąc w debugu wykonując poniższą pętle krok po kroku (step into) wszystko jest ok, dane są wysyłane i odbierane. Natomiast po wciśnięciu run czy step over czasami zostanie wysłany i odebrany [Tx i Rx zwarte] jeden, maksymalnie trzy bajty(najczęściej liczba wysłanych jest o 1 większa) i hard fault, czasami...
Witam! Fragmenty kodu: USART_InitStructure.USART_BaudRate = 57600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowCo... = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx...
Witajcie, udało mi się zrobić prosty program, gdzie wpisując w terminalu 1 włączam diodę LED1, 3 - wyłączam ją, 2 - włączam diodę LED2 i 4 wyłączam ją. Zatem wydaje się, że moduł Bluetooth odbiera znaki, które wpisuję mu z terminala. Jednak kiedy wpisuję ATL5 (mignięcie czerwonej diodki sugeruje odebranie danych) oraz kiedy w konfiguracji USARTa zmieniam...
Witam. Od dwóch dni próbuję odebrać dane z komputera na procesor. Próbowałem wysłać liczbę np: "11" odebrać ją na procesorze, dodać do niej liczbę np:"1" i ponownie wysłać na terminal (używam Realterm). Problem w tym, że nie potrafię odebrać danych z komputera. Zepsuty kabel ani układ nie wchodzi w grę bo jest echo po zwarciu maxa232 na pinach 11 i...
Korzystam z tego [url=http://www.tme.eu/pl/details/wsh-47... RS485 bazującego na układzie SP3485 ([url=http://www.waveshare.com/w/upload/... a nie jak pisałem MAX3485. Wyprowadzenia /RE oraz DE odpowiadające za kierunek transmisji są ze sobą połączone. Wykorzystuje zestaw...
Witam. Jestem zupełnie nowy w programowaniu STM32, korzystam z zestawu http://kamami.pl/index.php?ukey=product&... i uczę się według książki weń zawartej. Próbuję nawiązać komunikację między zestawem i komputerem z użyciem flag oraz wymienić przykładowe dane, lecz na razie brak sukcesu. Terminal (korzystam z aplikacji Terminal autorstwa...
Witam Zastanawiam się jak można oszacować wydajność systemu DMA. Chcę użyć trzech kanałów DMA a nie chce mi się kontrolować i prawidłowo reagować gdy transmisja DMA się nie wykona. Chcę: - odbierać dane przez USART 20 bajtów co 20 [ms] (ramka z wykrywacza) - wysyłać dane przez SPI 2*504 bajtów co 50 [ms] (obsługa dwu wyświetlaczy z nokii 3310) - generować...
Problem mam następujący. Ustawiłem, żeby procesor odbierał ramki przez USARTA na przerwaniu i w tym przerwaniu sprawdzał czy z nią wszystko ok. Kod całęgo przerwania wygląda tak: void USART1_IRQHandler(void) { u8 ReceivedByte; extern ReceivingFrame; extern ReceivingHeader; extern MultinetRun BufStruct; extern RxIndex; extern TxIndex; extern...
jeszcze nie zapomnij o samym USARC-ie, który może byc w stanie błedu - bo obsluga DMA była właczona, ale DMA nić nie zabierało. A jeśli UART jest w stanie błędu to jak go usunąć? Zmodyfikowałem funkcję do takiej postaci jak poniżej. Czyli wyłączałem również UART i konfigurowałem ponownie, ale nic to nie pomogło. Dodano po 1 W HALu jest taka funkcja...
Napisałem program obsługujący komunikację RS232 dla płytki STM32 P103: - dokumentacja płytki https://www.olimex.com/dev/pdf/ARM/ST/ST... - schemat https://www.olimex.com/dev/images/ARM/ST... Niestety łącząc docelowo przez konwerter RS232 -> RS485 i podłączając do serwomechanizmu RS28 dynamixel podłączyłem raz zasilanie 15V,...
Lecz nie potrafię wymodzić alternatywy dla odbioru danych i kożystam z przerwania RXNE: W przerwaniu masz odbieranie 3 bajtów i 3 pętle oczekiwania? ale on na odczycie wartości ze status register po prostu się zatrzymuje Jakbyś warunek pętli i jej ciało rozpisał w dwóch linijkach to byś się przekonał, że nic się nie zatrzymuje (zakładam, że używasz...
Witam, muszę koniecznie połączyć stm32 z pic18f2480. Problem jest taki, że pic chodzi na 5V (nie można tego zmienić, gdyż jest on mózgiem interfejsu ELM327 v1.4 zasilanego 5V). Ponadto w interfejsie siedzi FTDI i może to jest problemem w komunikacji, jednakże, wolę spytać o opinie zanim coś odłączę. Znalazłem w necie fajny konwerter sygnału 5V na 3.3V...
Witam, wydawałoby się, że problem jest banalny, a mimo to już dzień nad nim spędziłem (a czas mi nagli bardzo). Moim zadaniem jest odczytanie wartości ADC i wysłanie przez USART do PC (do Hyperterminala przez konwerter RS232 ->USB). Ogarnąłem wysyłanie np. znaku "a", jednak wartość ADC to jakiś ciąg cyfr (chyba 4-cyfrowy). I nie wiem jak po konwersji...
Próbuję rozwiązań ten problem już 2 dzień, niestety mało jest jeszcze materiałów na temat tego mikrokontrolera. Chciałbym skonfigurować USART6, tak by odbierać dane z aplikacji napisanej w pythonie na laptopie.Kod funkcji inicjalizacji USART: [syntax=c] /* Pliki nagłówkowe: */ #include <uart.h> /* Zmienne: */ uint8_t cUart6Container[200]; UART_HandleTypeDef...
Poprawiłem ten kod wg wskazówek. Jednak dalej nie chce mi odbierać ani wysyłać na PC. Teraz mam tak: [syntax=c]/* Includes */ #include <stddef.h> #include <stdio.h> #include "stm32l1xx.h" //defined USE_STM32L_DISCOVERY #include "discover_board.h" #include "stm32l_discovery_lcd.h" /* Private typedef */ /* Private define */ /* Private macro...
Witam, Próbuje skomunikować się z modułem SIM800 przy pomocy STM32F100RBT6B. Mam skonfigurowane peryferia i wysyłam dane do modułu. Niestety problem pojawia się przy odbiorze, Odbieram tylko pierwszą literę i nie wiem dlaczego. Wykorzystuje przerwania do transmisji UART. Komunikacja z poziomu PC <-> SIM800 przebiega bez problemów, prosiłbym o...
Skonstruowałem sobie kabel, wygląda na to, że podłączyłem go poprawnie (posprawdzałem multimetrem, wszystko łączy, zwarć niby nie ma), niemniej jednak nie mam łączności ani w jedną, ani w drugą stronę (używam HyperTerminal i RealTerm). Czy mógłbym jeszcze poprosić o sprawdzenie kodu? Chciałem napisać najbardziej banalne wysyłanie/odbieranie bez przerwań,...
Witam Od jakiegoś czasu próbuję przeprowadzić odbiór danych z UART z wykorzystaniem DMA. Jeśli chodzi o konfigurację UART to jest ona przeprowadzona prawidłowo, ponieważ mogę dane wysyłać jak i odbierać ręcznie. Problem pojawia się przy próbie zaprzęgnięcia do odbioru DMA. Dane w buforze odbiorczym nie są aktualizowane (po zainicjalizowaniu bufora wartościami...
Dzięki Freddie Chopin za szybką odpowiedz. Sprawdziłem w debagerze czy po zejściu licznika (wartość CNDTR) do zera wyłącza się kanał DMA. Okazuj się iż jest nadal włączony. Twój kod zbyt wiele mi nie pomógł, wcześniej tez go spotkałem w innym temacie na forum. Na początku chcę przesyłać jeden bajt cyklicznie(czyli po każdym wywołaniu zdarzenia TXE),...
Witam, Mam problem z komunikacją STM32 z komputerem. Mam płytkę tego typu http://allegro.pl/stm32-plytka-prototypo... Chciałem napisać sobie najprostszy program do komunikacji z komputerem. Jak na razie napotkałem pewna barierę. Skonfigurowałem procek według książki Pana Paprockiego i przy użyciu standardowych bibliotek...
W RS485 nie ma sterowania przepływem za pomocą linii RTS i CTS. To łącze różnicowe gdzie masz sygnały R+ R- i T+ T- (dla pełnego duplexu). Sterowania przepływem jest na poziomie softu. Chyba że pytasz o konfigurację UART'a, wówczas możesz w nim wyłaczyć sterownie przepływem, ale port będzie czynny i odbierał znaki jak i wysyłał. Różnica między RS-232...
Mam już nową przejściówkę. Teraj po podłączeniu przewodów tak jak wcześniej (przejściówka jest inna niż wcześniej) odbieram dane za każdym razem. Niestety przy wysyłaniu działa to tylko gdy debuguję i przechodzę krokowo przez USART_SendData (dlatego zakładam że elektronika jest w porządku). Przy normalnej pacy lub debugowaniu bez zatrzymywania nic nie...
Witam serdecznie. Mam problem ze zrozumieniem pewnej kwestii... Posiadam zestaw STM32F7 i chciałbym zrobić taką komunikację dwoma UARTami (wzorując się poniekąd na Poradniku udostępnionym tu na forum). Urozmaiceniem miałoby być to, aby do złączy STM32F7 był podłączony modulik bluetooth HC05. W tym celu skonfigurowałem sobie UART6 bo z tego co widzę...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
Poprawiłem kod i niestety dalej to samo. [syntax=C] int main(void) { char bajt=0; char bajt2=0; char a[10]; Delay_config(); Delay_us_Init(); usart_Init(); gpio_init(); // konfiguracja pinów dla SPI1 - Master RCC->AHBENR |=RCC_AHBPeriph_GPIOA; gpio_pin_cfg(GPIOA, GPIO_Pin_4, GPIO_AF5_PP_50MHz); // NSS gpio_pin_cfg(GPIOA, GPIO_Pin_5, GPIO_AF5_PP_50MHz);...
Podłączam się pod temat ponieważ tematyka ta sama i wcześniej korzystałem z wyżej zamieszczonych ustawień filtrów.... moje pytanie brzmi czy łącząc ze sobą linie canrx i cantx wychodzące z stm'a (przed połączeniem wiszą - wypięty transceiver) można w ten sposób zdiagnozować czy interfejs działa? W czym problem... otóż: Napisałem pełną inizjalizację...
Witam serdecznie, jakiś czas temu zacząłem moją zabawę z stm32. Po kilku tygodniach walki z darmowym oprogramowaniem (Eclipse + GCC, ograniczony Keil itd), zdecydowałem się na TrueStudio w wersji light. Mam jednak problem z tym oprogramowaniem podczas debugowania. Jaki to projekt? - projekt ma za zadanie odczytać dane z modułu RFID, następnie ma rozpoznać...
usart odbierać stm32 usart usart stm32
schemat agregatu trójfazowego abonament polsat bateria laptopa regeneracja
analog sprawdź model wkrętarka milwaukee
Jak przywrócić ustawienia fabryczne w telewizorze Philips? Zasilacz do orbitrek Ergo.Aster Helios 5000 – parametry, wtyk, polaryzacja