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...
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...
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...
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!!
z jednej wysylasz z predkoscia 4800 b/s a drugim odbierasz z 9600 b/s ?
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...
próbowałem uIP - jeśli mam adres statyczny to działa, ale DHCP za cholerę nie che ruszyć, telnet i proste www również. Ale jak uruchomić DHCP to nie mam pojęcia, zna ktoś dobrze stos uIP ?
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...
Witam. Mam problem z filtrem adresu w CANie. Używam tej samej biblioteki co Yaerius . Płytka STM32F103 ma odbierać wiadomości. I odbiera, jak podam w filtrze jakiś adres. Drugą taką samą płytkę używam do nadawania wiadomości powiedzmy z adresami 33, 34 i 35 (płytka moja więc mogę zaprogramować dowolnie). Docelowo ta pierwsza płytka ma służyć jako analizator...
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ść...
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...
Cześć! Posiadam od wielu lat (co najmniej 4) płytkę uruchomieniową Open107V od Waveshare. Nigdy nie miałem z nią problemów, i każdy projekt robiłem na niej, bo ma wszystko ładnie wyprowadzone i szybko mogłem sobie debugować instalację. Obecnie robię układ w którym 2 układy (drugi to STM32F407) komunikują się ze sobą przez RS485, korzystając z gotowego...
Mam program do analizowania portu szeregowego i widzę co jest wysłane z PC a co przychodzi z ARM. Z odbiorem w arm nie mam żadnego problemu gdyż podglądam bufor RxBuf gdy w Keil w debug daje run, każda ramka wysyłana do Arm z PC trafia do RxBuf. Problem jest z wysyłaniem, zastanawia mnie to że ARM jest zdolny do ponownego odbioru gdy wyśle 8 bajtów(aktywuje...
Witam. Pozdrawiam szanownych forumowiczów! Potrzebuję odebrać przez moduł btm222 do procesora konkretne dane. Dane zapisane są do pliku w postaci ciągu cyfr np. 345675534999888432 ( tu może być ich więcej ale będzie to wielokrotność. 3*6*X ). Teraz wysyłam ten plik programem realterm. Nie umiem ich odebrać uP w pożądany sposób: Aby rozdzielił te dane...
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.
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....
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....
Witam, Próbuje zrealizować odbiór oraz nadawanie danych, przez USART. Chcę odbierać wartości wysyłane z PC do cpu do trzech różnych zmiennych oraz wyświetlać w konsoli wartość jednej zmiennej. Spróbowałem, to zrealizować w przerwaniach (na razie bez wykorzystania DMA, później oczywiście wykorzystam do tego DMA, ale chciałem przećwiczyć w przerwaniach)...
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...
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 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...
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 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ć...
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...
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...
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...
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...
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ę...
(at)Zari44 Mi sie bardzo nie podoba jak ty odbierasz dane z GPS, nie dosc ze parsowanie i to bardzo kiepskie zrobione jest w przerwaniu to masz bardzo duza szanse ze XXX_buffer_index wyjedzie poza zdeklarowany bufor w przypadku braku 0x0A Ja bym ten fragment doprowadzil najpierw do ladu i skladu np. dodal jakis ladny bufor kolowy i calosc parsowania...
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...
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...
Możesz do tego celu użyć sprzętowego interfejsu USART. Jeżeli nie masz na tym pinie dostępnej takiej możliwości to będziesz zmuszony zaimplementować programowego UARTA. Należy do tego wykorzystać timer z przerwaniem. Częstotliwość przerwań powinna być przynajmniej 4x większa niż Twój bitrate (a najlepiej to x16) co w przypadku 1200bod/s nie będzie problemem.
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
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,...
Czyli nie dość, że na stosie masz 1 kB tablicę, to jeszcze używasz funkcji która jest znana z tego, że używa naprawdę DUŻO stosu. Zacznij od zmniejszenia tej tablicy albo przeniesienia jej do zmiennych globalnych, a następnie - jeśli nie pomoże - znajdź jak w Keilu zwiększyć rozmiar stosu. Wielkie dzięki, pomogło. Przeniosłem do globalnych Do sekcji...
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
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, mam problem z moim urządzeniem, mianowicie... STM komunikuje się z ESP8266 przez USART i wysyła do niego komendy "AT", przy pierwszym włączeniu inicjalizacja ESP (połączenie z wifi, cwmode itd) działa poprawnie i każde polecenie wykonuje się kolejno. Kiedy dojdziemy do programu głównego i mikrokontroler znajdzie się w zdarzeniu, gdzie powinien...
Tak to powinno być, żeby tylko ciągle wysyłało? Dalej niestety nie działa. [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 */ /* Private variables...
Witam Zmagam się z problemem obliczania CRC na STM32F4. Problem polega na tym że mam ramkę danych 100 bajtową złożoną z 96 bajtów danych a na 4 ostatnich obliczona suma CRC za pomocą wbudowanego modułu. Dane wysyłane są poprzez DMA+USART. Również do obsługi CRC używane jest DMA. Chodzi o to że dane są wysyłane poprawnie i poprawne odbierane. Problem...
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...
Chciałem odbierać dane o rożnej wielkości za pomocą USART'a. Robiłem to za pomocą funkcji [syntax=c] HAL_USART_Receive_TI(); [/syntax] oraz [syntax=c] void HAL_UART_RxCpltCallback(UART_HandleTypeD... *huart); [/syntax] próbowałem rożnych sposobów jak odbieranie pojedynczych znaków, zapisywanie ich do buffora i sprawdzaniu czy otrzymano ramkę, a następnie...
Dekoder to helix mp3, do bufora fifo(51200B) wkladam dane w przerwaniu od usart rxne. Stos i stera ustawione na 0x1000
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...
No to właśnie się dowiedziałem, że światełka choinkowe, to "zaawansowane zastosowanie", a dokładając marne 50% ceny do sterownika mogę go zrobić na 8-bitowym AVR zamiast na 32-bitowym LPC800. :) Oj lubisz manipulować. Pisałeś o nieco innych wymogach niż sterowanie lampkami na choinkę, bo coś tam było o USART, SPI itd. Jeśli chodzi o sterowanie lampkami,...
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...
Witam kolegów, mam problem z transmisją szeregową z wykorzystaniem DMA. Chciałbym osiągnąć następujący wynik, po każdym zdarzeniu TXE wysyłana będzie ramka poprzez USART3. Poniżej zamieszczam kod: Ustawienie USART3: [syntax=cpp] RCC->APB1ENR |= RCC_APB1Periph_USART3; USART3->SR =(USART3->SR & 0xffbf); USART3->CR1 = (1 << 2) | //Włączenie...
Witam serdecznie. Od kilku dni walczę z problemem uzyskania prawidłowych odpowiedzi od PAD'a PS2 na STM32F411RE nucleo. Wykorzystuję do tego SPI oraz USART w celu odbierania komunikatów. Częstotliwość zegara mam ustawioną na 8MHz, w konfiguracji SPI prescaler 64 co daje mi 125KHz (lub KBits/s). Pierwszy bit pobierany jest od LSB, paramert CPOL na 1...
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...
Całość kodu wygenerowałem za pomocą STM32Cube. Część odpowiedzialna za GPIO: [syntax=c]void HAL_ETH_MspInit(ETH_HandleTypeDef* heth) { GPIO_InitTypeDef GPIO_InitStruct; if(heth->Instance==ETH) { /*włączenie zegarów lini sygnałowych*/ __GPIOA_CLK_ENABLE(); __GPIOB_CLK_ENABLE(); __GPIOC_CLK_ENABLE(); __GPIOE_CLK_ENABLE(); /* Peripheral clock enable */...
Cześć. Właśnie pracuję nad uruchomieniem interfejsu SPI na STM32F407. Podłączyłem do siebie SPI1 jako master z SPI3 jako slave i to co przyszło wysyłam do terminala na komputerze przez USART. Okazuje się, że SPI3 odbiera dane, ale odbiera je jakby przesunięte o bit w prawo. Myślę, że rozumiecie o co chodzi, ale co jeszcze jest ciekawego to to, że jeśli...
Mam jeszcze jedno pytanie. Odbieram dane z BMA180 w postaci uint8_t. Jak je przerobić na char, żeby wysłać przez USART do PC?
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
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);...
Witam. Zbudowałem układ oparty na mikrokontrolerze STM32. Do komunikacji z komputerem PC wykorzystuję moduł bluetooth BTM222 (tradycyjny USART bez kabli). Wszystko działało bez zarzutu do wczoraj, gdy zmuszony byłem dokonać małej modyfikacji kodu w mikrokontrolerze. Programuję go wykorzystując bootloadera, więc na czas programowania wyciągnąłem moduł...
Witam, Postanowiłem opanować DMA. Zacząłem od USART'a i chciałbym to zrealizować. Moje problemy: 1. wysyłanie w konkretnym momencie(np. po naciśnięciu przycisku) 2. odbieranie danych 3. odpowiedni dobór DMA_BufferSize - wskazówki Konfiguracja: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Perip...
Witam Napotkałem się z problemem jak w temacie a dokładniej. Jeżeli chce uruchomić program przez przycisk debug albo wgrać go przyciskiem download w keil,u to program startuje prawidłowo. W momencie kiedy wyłączę i włączę ponownie zasilanie wszystko startuje prawidłowo poza uart em. tzn przerwanie do niego nie jest wywoływane. Testowałem na kilku egzemplarzach...
stm32 usart usart stm32 stm32 usart ramka
astra tunel środkowy temperatura klimatyzatora hbbtv aktualizacja
zawór proporcjonalny lodówka kondensator zwarcie
Jak włączyć nagrywanie w czasie przyszłym na Zgemma H9S Lokalizacja bezpiecznika przednich lamp w Peugeot 3008