Niestety nadal nie pokrywają mi się wyniki. Oczywiście brałem wartość począrkową jako 0xFFFF FFFF. A jeżeli chodzi jeszcze o ustawianie DMA + CRC. W takiej knfiguracji ustawiam transmisję memory to memory, gdzie adresem docelowym jest CRC->DR. Jako Peripheral (DMA2_Stream4->PAR) jest tutaj adres w pamięci gdzie jest zapisana tablica z danymi. Inkrementowany...
Witam. Podłączyłem mikrokontroler STM32F429 do układu FT311D za pośrednictwem SPI, aby komunikować się z androidem. Dane wysyłam za pomocą instrukcji: http://obrazki.elektroda.pl/1593355700_1... I nie do końca wiem, co znaczy, że układ może wysłać (i odebrać!) maksymalnie 256 bajtów per transfer. Przecież w SPI pojedynczy transfer (przesłanie...
BlueDraco, dzięki za odpowiedź Rozumiem, że Twoje pytanie jest pytaniem retorycznym? Jasne - wszystkie linijki: USART_ClearIT_pendingBit() są bezsensowne w przerwaniach. Czemu różnicuję? Myślałem, szczerze to próbowałem bardzo dużo, żeby doprowadzić mój projekt do używalności - nawet próbowałem zmieniać priorytety przerwań ustawiając dla sensorów wyższe...
https://obrazki.elektroda.pl/4768835200_... Introduction to the course In order to understand what kind of device we will be designing today, let's first briefly recall what soldering stations generally are, and how they differ from each other. The entire lower price segment of such equipment, as you might guess, is captured by Chinese...
Tak, tylko ta linia nie wnosi nic do problemu. Wróciłem do starej posklejanej wersji: Dodano po 5 Nerwy mnie już biorą... powyższy kod... po kolejnych próbach grzmoci się totalnie - inaczej tego ując nie moge (przepraszam). Zawiesza się od razu po załączeniu diody LED, USB wysiada przy BR = 9600 przy okazji sypiąc mi totalnie terminal...
Zamień te cyferki na odpowiednie makra z nagłówków, bo nie sądzę aby komukolwiek chciało się bawić w sprawdzanie który bit od czego jest. Kanały DMA trzeba włączyć bitem EN, a jak licznik zjedzie do zera, to one się wyłączają. Poniżej przykładowy konfig dla SPI i działania z przerwaniami: [syntax=C]//SPI2_RX - DMA1_Channel4 DMA1_Channel4->CCR = 0;...
Zmieniłem trochę w projekcie. Zastosowałem najnowszą wersję FatFS. Plik z konfiguracją funkcji zadeklarowanych diskio.h pobrałem ze [url=http://www.siwawi.arubi.uni-kl.de/a... strony i przerobiłem go by pasował do STM32L. Po testach objawy wyglądają tak: Karty 512MB i 16GB: porgram mniej...
Nie pamiętam już z czego dokładnie to wynika, ale prawdopodobnie właśnie ze zdefiniowanych pól w sterownikach od windows. Podejrzewam, że modyfikacja plików sterowników nie będzie aż tak trudna, tylko jest wada - potem ten sterownik trzeba dostarczać klientowi. Najwięcej informacji znajdziesz w specyfikacji USB (mało czytelne) jak również (ze wskazówkami...
Panowie w końcu znalazłem przyczynę dlaczego przerwanie od DMA transfer complete działało w Keilu, a nie działało mi w STM32CubeIDE. Problem okazał się banalny i tkwił w innej nazwie funkcji przerwania od DMA dla kanałów 2 3 w pliku startup.s . W Keilu w pliku startup.s nazwa ta była "DMA1_Channel2_3_IRQHandler", a w pliku startup.s dla Cube była "DMA1_CH2_3_IRQHandler"...
Dzięki za odpowiedzi! gaskoin wydaje mi się, że sprawdzanie bufora w przerwaniu po odebraniu znaku nie będzie zbyt optymalne bo komunikacja wygląda tak: Zapytanie: AT\r\n Odpowiedź: AT\r\n// Z włączonym echem OK\r\n Więc w trakcie odbierania znak \n pojawia się klika razy przez co będę blokował przerwanie podczas odbierania danych. Teoretycznie echo...
Witam, Mam następujący problem koncepcyjny: mam mikrokontroler STM32F411 do którego po SPI jest podpięty m.in pomiarowy interfejs analogowy. Co 125us (8kHz) interfejs generuje przerwanie - należy wtedy odczytać z interfejsu 27 bajtów danych. Urządzenie nastawione jest na niski pobór energii (zasilanie bateryjne, procesor taktowany dość nisko - 24MHz)...
Przykład dla DMA [syntax=c]void Init_DMA_TFT(uint16_t nofData) { // DMA2 Init Stream 0 from SRAM to FSMC DMA2_Stream0->CR &= ~(DMA_SxCR_EN); while ((DMA2_Stream0->CR & DMA_SxCR_EN));// wait for disable and clear all flags DMA2->LIFCR |= DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0; //0b----|...
W takim ustawieniu zapodaj 3.3V na NSS, lub ustaw SSM oraz SSI na 1 i sprawdź czy zadziała. Jeśli nie, ustaw rejestry według poniższego przepisu. Configuring the SPI in master mode In the master configuration, the serial clock is generated on the SCK pin. Procedure 1. Select the BR[2:0] bits to define the serial clock baud rate (see...
Tak sie zastanowiłem o czym piszesz, czy masz na myśli to że w tych wymienionych przez ciebie układach np dostęp do portów i ich konfiguracja jest w każdym typie taka sama? Czy to o to chodzi że np w f103 są inne rejestry niż np f411 do konfiguracji portów? Ja się np zraziłem do G0 czytając o czymś takim jak DMAMUX. Opis jest tak pokrętny że zupełnie...
Witajcie, Wysyłam sobie w moim małym projekcie, 4*16 bitów przez SPI, w użyciem DMA. Funkcja inicjująca wysyłanie wygląda tak [syntax=c] void display_set_raster_line(uint16_t * raster_line) { // wait for transfer complete if (SPI_FIRST_TRANSFER_DONE) { while( DMA1->ISR & DMA1_FLAG_TC3 == RESET) { } } // copy new raster to current raster line...
Czy ktoś zmusza Cię bronią do używania tej biblioteki? Przecież żeby wystartować transfer trzeba (z tego co pamiętam) wykonać JEDEN zapis do JEDNEGO rejestru, a ty chcesz wywoływać 3 funkcje... To już szybciej będzie te dane ręcznie kopiować... Tutaj masz np przykładową PEŁNĄ konfigurację dwóch kanałów DMA do SPI (brak oczywiście konfiguracji SPI, czy...
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...
Poradnik jest bardzo fajny i pomocny. Wielkie dzięki za opracowanie. A piszę, bo chciałem zgłosić, jak mi się wydaje, subtelny błąd. Mianowicie w części o ADC, zadanie nr 13.3 wiersz 22 - pętla oczekująca na zakończenie konwersji. Wcześniej piszesz, że po zakończeniu konwersji wszystkich kanałów regularnych ustawiana jest flaga EOC. Ale jednocześnie,...
Przesyłam sobie dane przez RS485. Na linii są dwa urządzenia i oba mają mieć możliwość nadawania. W związku z tym, gdy jedno skończy nadawać, powinno wyłączyć układ sterujący linią. Niestety jest problem przy transmisji USARTem przez DMA. Przerwanie transfer complete generowane jest wtedy, gdy DMA skończy swoją pracę, natomiast jeszcze nie wszystko...
Witam wszystkich. Przenosze kod z STM32 L 053 na STM32 F 030 Ruszylo mi prawie wszystko czyli: RCC GPIO SPI Pracuje na kodzie dostarczonym przez ST pod pewien moduł radiowy. Kod jest oparty o HAL generowany z Cube. Mam problem z DMA. Problem ten jest wynikiem nie wykonywania się jednej linijki kodu. Zamiast wskaznika (adresu funkcji) wpisywane jest...
Cześć, Może ktoś podpowie, bo chwilowo nie mam pomysłów. Potrzebuję użyć DMA do przesyłania danych, używam kilku strumieni. DMA potrzebuję wyzwalać z określoną częstotliwością przez timmer. Jeśli użyję DMA2, to wszystko działa, Problem jest w tym, że DMA2 mogę wyzwalać tylko Timmerem 1 i 8. O ile timmer 8 mogę na to poświęcić, timmer 1 potrzebny mi...
A to trzeba korzystać z przerwania DMA? Chyba nie po to ono jest. Jest też inne przerwanie temu służące. SPI w F103 nie ma możliwości aby generować przerwanie po zakończeniu transmisji; jak DMA bitem TC. Chcesz reagować na każdy TXE? Chyba jednak nie. Do czego w takim razie jest przerwanie Transfer Complete od DMA, jeżeli nie do podjęcia akcji po zakończeniu...
Usiłuje uruchomi DMA tak aby zgłaszało mi przerwanie (na początku może by po zakończeniu transferu) Timer wyzwalający mam już skonfigurowany [syntax=c] TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; /* USER CODE BEGIN TIM1_Init 1 */ /* USER CODE END TIM1_Init 1 */ htim1.Instance = TIM1; htim1.Init.Prescaler...
Witam mam pytanie czy tryb DMA memory-to-memory może posłużyć do kopiowania jednego bloku pamięci do drugiego w obrębie pamięci RAM? Taki zamiennik funkcji memcpy, wydawało mi się że tak i zrobiłem taką funkcję ale coś nie nie działa. [syntax=c]void Mem2MemDMA(uint16_t *src_buf, uint16_t *dst_buf){ //DMA Configuration uint32_t CCR_reg = 0; RCC->AHBENR...
Źle rozumiesz prace tego pinu! Nie ma takiego SPI gdzie CSy będą same chodzić w górę i w dół w zależności od tego czy nadajesz czy nie... CSem musisz machać sam!! . Przeciez piszac kod dokladnie wiesz, kiedy rozpoczynasz transakcje po SPI, więc cięzko tam jedna linijka kodu tego CSa ręcznie ustawić do masy?... Ustaw ten pin jako standardowe wyjscie...
Ja na pewno nie przerobię tego przykładu na wersję bez bibliotek, zrobi to ktoś z Was i udostępni??? Bardzo wątpię. Żadna filozofia. Tu masz obsługę dla serii F1 (nie jest to całość ale prawie wszystko) DAC+TIM+DMA, jakieś drobiazgi mogły się zmienić w F4. Jeśli tamten projekt jest na I2S to sprawa jest jeszcze prostsza. void AudioPlay(uint32_t size)...
Witam, próbuję uruchomić przetwornik ADC1 wraz z transferem przez DMA i przerwaniem od zakończenia transferu (transfer complete) Tak, żebym w przerwaniu mógł sobie obliczać wartość średnią z napięcia na wejściu. Samo ADC z DMA bez przerwania od DMA działa, ale gdy dorzucam linijkę [syntax=c]DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE);[/syntax] czyli,...
Gorzej, jeśli algorytm tego nie gwarantuje - a ja właśnie takie urządzenia ostatnio głównie robię. A jaka jest różnica, czy nie nadąży na przerwaniach, czy przez DMA? ;] Jak nie nadąży, i tak któreś dane musisz zadeptać, albo przyblokować nadawce RTSem. A to może robić supervisor, którego częstotliwość odpalania jest już tylko zależna od głębokości...
Tutaj konfiguracja DMA dla przesyłania DCMI->SDRAM(FMC): Dodano po 21 Masz rację, gdy ręcznie zapiszę coś do bufora znajdującego się w tym SDRAMie to działa. Jednak nadal nie widzę błędu w konfiguracji DMA (konfiguracja powyżej).
Wygląda jakby przerwanie nie kasowało flagi ale żadna flaga nie jest ustawiona. Żadna flaga nie jest ustawiona? TXE na 100% jest ustawione (bo przecież nic nie wysyłasz), TC też by było ustawione na stałe tylko czyścisz ją ręcznie. Po skończonym transferze przerwania od tych źródeł należy wyłączyć. Żadne magiczne funkcje typu HAL_NVIC_ClearPendingIRQ()...
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca. http://obrazki.elektroda.pl/2733352900_1...
Witam, chciałbym przesyłać dane przez USART za pomocą DMA (STM32F4). DMA jest aktywowane w przerwaniu od TIM2 w odstępach co 100 ms. Program wykonuje się, natomiast dane nie są przesyłane. Wiem, że na pewno przerwanie od TIM2 działa poprawnie. Jeśli ktoś wie gdzie może być błąd/braki w konfiguracji proszę o odpowiedź. Z góry dzięki. Poniżej kod: [syntax=c]...
Jeżeli nie potrzebujesz do tego strobów na dodatkowych liniach, np. !WR, to w czym problem? DMA1_Stream1 = Channel_7, co daje request z TIM6. Skonfiguruj resztę DMA: Half-word, DMA jako Flow Controler, Burst: Single i adresy. Jeżeli zarezerwujesz sobie odpowiedni bufor, to przerwanie od Half Transfer i Transfer Complete załatwiają resztę. Do wyboru...
Witam. Do Nucleo STM32F446RE podłączam via DCMI kamerkę OV7670. Za pomocą DMA wrzucam z DCMI do RAM uC, do tablicy obraz https://obrazki.elektroda.pl/7486996200_... . Wygląda nieźle, z tym że nie wiem czy to nakładanie się pasków jest ok. Natomiast gdy włączam tryb color bar w rejestrze COM7 https://obrazki.elektroda.pl/8526039400_...
Eee.. zmieniłeś w międzyczasie OSa? Wygląda trochę jakbyś strzelał na oślep, coś nie działa, to sruu wszystko, kopiuj/wklej inny przykład itp. Trochę jakby bez zastanowienia co konkretnie może nie działać... Dodano po 1 Kurka, to odpal sobie DMA, odblokuj przerwanie od Transfer Complete i jesteś pewny, że dane odebrano ;) Z przerwania wepchnij wynik...
W sumie to mam pytanie czy dobrze rozumiem jak to ma działać. Tak skonfigurowany DMA wykonuje transfer raz, w momencie ustawienia bitu ENABLE. Kod z moimi komentarzami (wypisane z DSa). [syntax=c] void DMA_Conf(void) { RCC->AHBENR = RCC_AHBENR_DMA1EN; /* Procedura konfiguracji kanałów DMA 1. Ustawić adres rejestru peryferiów w rejestrze DMA_CPARx Dane...
Dzięki za odpowiedź. Wrzucam kody do inicjacji SPI oraz komunikacji z XPT. Odnośnie linii PENIRQ. Przerwanie mam skonfigurowane dobrze, bo gdy zetknę pin do masy to wyzwalane jest przerwanie. Próbowałem także w pętli czekać na dopóki PENIRQ nie będzie w stanie niskim, niestety w ogóle z tej pętli nie wychodził. Jedna rzecz sie zgadza z notą katalogową...
To wiem. Z rozmiaru programu to wynika. Ale chciałbym się też w jakiś sposób zabezpieczyć na przyszłość. Jeśli będę rozbudowywał bootloader to dobrze mieć taki mechanizm. Np niech program się nie skompiluje Dodano po 4 Zmieniłem rozmiar tutaj. Do testów na 512B. Teraz się nie kompiluje. Jak jest 1kB to się jeszcze kompiluje więc niby działa. http://obrazki.elektroda.pl/3675168200_1...
Wygląda po prostu jakby ADC nie było w ogóle zainicjowane. Polling zacina kompletnie procek, It i DMA nie są wyzwalane. TempSensor.cpp [syntax=c]/* * TempSensor.cpp * * Created on: 13 gru 2015 * Author: KryQ */ extern "C" { #include "stm32f4xx_hal.h" } #include "TempSensor.h" #include "ErrorHandler.h" #include "MathLib.h" TempSensor::TempSensor(uint8_t...
Poprawiłem formatowanie kodu. Dodano po 1 Niby jaki odstęp pomiędzy bajtami ma dawać taka pętla? Potrzebujesz odstępu czasowego - użyj przerwania timera. Odstęp czasowy narazie realizuję blokującym whilem, później być może przerobię to na przerwania timera. Przed wysyłką 8 bajtów z prędkością 115200 wysyłam jeden bajt z prędkością 9600 Zrobiłem trochę...
Działająca wersja ale z F1 i bez bibliotek: No co Ty, na pewno to nie działa bo ma tylko 10 linijek a nie jakieś 50 jak z biblioteką <; DMA2_Channel5->CCR &= 0xffffffff-1; // DMA_CCR3_EN; // disable (trochę wstyd) Nie wiem czemu - przecież wyłączenie danego kanału DMA jest KONIECZNE przed jakąkolwiek jego re-konfiguracją. U siebie mam to...
Udało się, po przeniesieniu inicjalizacji bufora do funkcji zadziałało. Niestety po zmianie idei bufora, nie chce mi całkiem działać wyświetlanie obrazu na LCD. Całkiem znaczy, że pojawiły się czerwone pionowe paski o grubości około piksela na całym obrazie. Obraz przesyłam przez DMA z tego bufora do LCD(SSD1289). LCD podpięty także przez FMC. Czy jest...
Witam, mam problem z odbieraniem danych przez i2c z użyciem mikrokontrolera stm32f103. Sytuacja wygląda tak, że potrafię przesyłać dane po i2c, (wysyłam adres, czujnik odpowiada, wysyłam mu komendę wykonania pomiaru, wiem że go wykonuję ponieważ wtedy "mruga" diodą), niestety mam problem z odbieraniem danych. Testowałem już wiele funkcji z sieci, ale...
Poniedziałkowe dziędobry. Teraz ADC + DMA. Może się komuś przyda. Na razie bez przerwań ale działa (dzięki komu to chyba wiadomo, a gdyby nie, to dzięki Freddie Chopin i BlueDraco, kolejność przypadkowa (kłopot z odmianą w Języku Polskim) ). [syntax=c] /***************************************... * Funkcja inicjalizacji ADC tak, ze...
Witam mam problem z nadawaniem po USART1 z użyciem DMA. Gdy dłuość ciągu znaków nie przekracza 20 to wszystko pięknie działa. Natomiast gdy jest nie wiele większa 22, 23 ... to wyśle parę paczek o tej długości i przestaje. Dla jeszcze większej długości paczki nie wysyła wcale. Po podejrzeniu flag DMA ustawia się TCIF, czyli ok ale również dodatkowo...
Mam mały problem z DMA podczas pracy z DCMI. nowydamian-a . Zwiększa wskaźnik na bufor i ponownie włącza DMA. Różnica jest w tym że resetowanie wskaźnika mam w przerwaniu od DCMI. Dzięki temu każda kolejna ramka obrazu powinna zaczynać się od pozycji zerowej bufora (obraz zawsze powinien być w tym samym miejscu, nawet jak po drodze któraś rama straci...
Witam. Po ogarnięciu portów i/o chciałem przejść do konwersji ADC. Początkowo zakładam, że nie korzystam z przerwań, nie korzystam z DMA. Screeny z Cube: http://obrazki.elektroda.pl/6506556500_1... http://obrazki.elektroda.pl/5974943000_1... http://obrazki.elektroda.pl/2033015600_1... Plik main: /** ****************************************...
Chciałbym użyć do transferu SPI kontroler DMA bo troszkę danych jest do wysłania. Gdy wysyłam normalnie to działa elegancko: [syntax=c]SPI3->DR = dane[i];[/syntax] Ale gdy próbuję wysłać przez DMA to już tak łatwo nie idzie, wręcz wcale nie idzie: [syntax=c]void dma_init( void ) { RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN; DMA1_Stream7->CR |= DMA_SxCR_PL_0...
Szanowni Forumowicze, Mam problem z Virtual Port COM. Używam procesora STM32F103VBT6. Na nim chcę zrobić taki sterownik uniwersalny kilka wejść wyjść oraz USB do wysyłania komend i odczytu stanu wejść i wyjść. Chcę zrobić to tak że np mam wyjście powiedzmy PA0 i jest tam podłączona dioda i po wysłaniu komendy "LEDON" włączy się. Niestety mając do dyspozycji...
Cytat: These procedures must be followed to make sure: • The ACK bit is set low on time before the end of the last data reception • The STOP bit is set high after the last data reception without reception of supplementary data. W sumie to jest jak widzisz na powyższym . ACK low przed końcem ostatniej transmisji STOP high po zakończeniu...
complete print complete internet repair please complete system
kable jantzen soundbar zrobić samemu alarm sterowanie oświetleniem
smarowanie potencjometrw linux windows instalacja
Microchip Studio – błąd JTAG z Atmega644, fusebit JTAGEN, brak detekcji urządzenia Instrukcja obsługi stacji pogodowej Nor-tec 73409/2566124