Can openocd rely support lpc? I think it stm32 only
Cześć, poniższy post jest kopią dyskusji z community.st.com (stm32h7-dcmi-to-sdram-with-dma-overrun-... onieważ nie mam jeszcze rozwiązania: Używam STM32H753 i mam problem z transferem danych (ramka z kamery) z DCMI do external SDRAM. Z noty AN5020 (Application note, Digital camera interface (DCMI) for STM32 MCUs): https://obrazki.elektroda.pl/8884371100_...
Jakiś specyficzny dla STM32 callback wpinany gdzieś po drodze nie jest zbyt abstrakcyjny. Callback jest ogólny dla każdego stanu, ale oczywiście ew obsługa jest jak najbardziej nie abstrakcyjna. Bo w końcu pisze się na konkretny procesor. Bo to nie jest specjalny problem, żeby skomplikować użycie całości w 99,666% tak zwanych "typowych przypadków",...
Dzięki Freddie. Jestem już o krok bliżej. Zainstalowałem drivery z najnowszej paczki openocd z Twojej strony. (nie wiedziałem, że Ride7 i openocd wymagają różnych sterów) Zainstalowałem też openocd 0.4.0 ze strony. Teraz zostaje w sesji openocd, ale pojawia się błąd: G:\arm\openocd\src>openocd -f ..\tcl\interface\rlink.cfg Open On-Chip Debugger...
Cześć, Pracuję nad projektem, w którym wykorzystuję zapis danych na kartę SD/SDHC. W skrócie: - transmisja do STM32 co 64ms 400B danych - zapis danych na kartę SD Wykorzystuję system plików FAT więc co 64ms trzeba wykonać conajmniej kilka zapisów na kartę SD. Wszystko jest OK ale co kilka tysięcy bloków karta wykonuje zapis bloku który trwa 200ms !!!...
IMO implementacje SPI na przerwaniach w przypadku SPI mają zerowy sens (jedynie jeżeli mamy problem z ilością RAM i liczymy każdy bajt ale wtedy można - a raczej trzeba się pogodzić z dużymi dziurami między paczkami). DMA w przypadku SPI jest dość łatwe do implementacji bo ilość danych wysłanych jest zawsze równa liści danych odebranych. Nie występują...
Masz wewnątrz procka kontroler USB oraz Usart. Kod ich wirtualnego coma według mnie pozwala na konwersje od wejścia USART do wyjścia USB bo Przerwania: [syntax=c_loadrunner]void USB_LP_CAN1_RX0_IRQHandler(void) { USB_Istr(); } void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { /* Send the received data to the PC...
Bit RXNEIE włącza przerwanie od dwóch flag: RXNE i ORE (overrun) - patrz tabelka USART interrupt requests . Odczyt z DR kasuje RXNE. ORE jest kasowane przez (cytat z opisu bitu ORE): "an read to the USART_SR register followed by a read to the USART_DR register".
Zrobię to poprzez DMA. Ale tak już z czystej ciekawości co do zastosowania SCAN w trybie ręcznym . Jeśli wierzyć założycielowi tematu to wydaje się że to może działać. Jeszcze taka opcja : EOCS: End of conversion selection This bit is set and cleared by software. 0: The EOC bit is set at the end of each sequence of regular conversions. Overrun...
Nie wystawia flag BUSY i OVERRUN, ale cały czas to samo. To znaczy? Bo objawów dalej nie opisałeś dokładnie. Co jest odbierane z SPI. Czy może się zawiesza? Co jest w rejestrze SR - moze wyślij na komputer jego zawartość przy okazji. Może nie używaj debugera tylko pomigaj umiejętnie dioda w zależności od tego co się odebrało lub statusu (pewnie a płytce...
Jeszcze chwila a przepełni Ci się licznik pomógł! Pamiętasz co napisałem o sprawach będących dla Ciebie tak oczywiste jak oddychanie? Wspomniałeś o możliwości grzebania w cfg i proszę-pomogła zmiana adresu lpt w pliku cfg. Teraz mam juz coś takiego-może parę słów komentaża, żebym mógł zacząć poszukiwania pełniejszej wiedzy. Open On-Chip Debugger 0.2.0...
Jaka może być przyczyna ? Buffer Overrun ... Czym to może być spowodowane? 1. Źle skonfigurowany RAM (timingi ustawić w BIOSie na "auto") 2. Nie pasujące kości RAM (zły typ pamięci, dwie źle współpracujące ze sobą) 3. Któraś z kostek uszkodziła się (program diagnostyczny 'memtest'). Pzdr
Nie wiem co się stało, ale nagle straciłem możliwość wgrania czegokolwiek na mikrokontroler oraz możliwość debugowania. Po włączeniu openOCD dostaje na okrągło: Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xffffffff, ap_tar 0xffffffff Error: SWJ-DP OVERRUN - check clock or reduce jtag speed Próbowałem zmieniać kombinację jtag_speed...
Wybaczcie, ale jestem trochę noob`em, rozumiem, że miałoby wyglądać to w taki sposób: pobieram obraz z kamery (np za pomocą DCMI) i np. za pomocą FCSM (który jest dla mnie czarną magią na razie) komunikuje się z zewnętrznym RAMem pakując tam obraz, a następnie operuję sobie na nim. Z drugiej strony, znalazłem jeszcze w dokumentacji, że w DCMI jest jakieś...
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: /** ****************************************...
W inicjalizacji ADC brakuje włączenia bitu ADCx->CR1 |= ADC_CR1_SCAN. Bez tego nie będzie realizowana konwersja kanałów według listy. W inicjalizacji ADC brakuje włączenia bitu ADCx->CR2 |= ADC_CR2_SWSTART. Bez tego ADC ignoruje sygnał wyzwalający. Dawno już nie pracowałem z F4, ale na pewno tak jest w G0 i G4. Jeżeli nadal nie będzie działać, to rozbiłbym...
Zmieniłem zapis if(USART3 -> SR |= ~USART_SR_TC){ na if(USART3 -> SR &= USART_SR_TC){ i nadzień dobry program zachowuje się tak jak wcześniej po gdy przestawał działać poprawnie, a po zatrzymaniu breakepointem w HAL_UART_IRQHandler(&huart3); ląduje w HAL_UART_ErrorCallback wywołanego z: https://obrazki.elektroda.pl/9585406700_... Tropem...
A zobacz inne urządzenia - GeniBus, eBus, profibus, CAN, LIN z rozwiązań przemysłowych - żadne nie bazuje na detekcji końca. Racja, jak pisałem są różne rozwiązania. Co do twojego kodu - jest on wrażliwy na buffer overrun No nie za bardzo, gdyż bufor jest większy od iteracji wskaźnika (zapis będzie "w kółko"). No i pokaż teraz drugą część kodu - iterakcje...
A i zrobiłem tak, że nadaję za pomocą DMA oraz odbieram pollingiem Sposób który wybrałeś jest po prostu z założenia zły. Nadając przez DMA osiągniesz max możliwą do uzyskania prędkość. Odbiór przy pomocy pollingu zwykle nie ma prawa w takim przypadku działać, bo kod który go realizuje jest fizycznie zbyt wolny żebyś w końcu nie trafił na overrun (oczywiście...
Czyli bufor jest zbędny, ponieważ dane można zweryfikować, skonwertować i wyczyścić w locie, ale chcesz go mieć. OK. Najpierw ustaliłbym czy dane docierają prawidłowo do SPI. Raczej tak, ponieważ obsługując SPI ręcznie nie było problemu. Stąd podejrzenie, że nie są na czas odczytywane przez DMA. Czy SPI zgłasza Overrun? Inna możliwość, to DMA nie może...
Cześć Problem polega na tym że ADC1 współgra z DMA2 w trybie Injection, czy to jest związane z tym że nie nie ma sensu czegoś takiego robić, ze względu na to że w tym trybie wszystkie dane trafiają do różnych rejestrów JDRx, i nie ma "zagrożenia" overrunem? Konfiguracja wygląda następująco ADC1 w trybie Injection, wyzwalany zewnętrznie przez sygnał...
Witam ponownie Troche czasu minelo i zdazylem bardziej doglebnie poznac ten zestaw ref. jak i sam procesor STM32. Niestety wraz z rozrastaniem sie projektu powracaja stare bledy i tak: W trybie SC USART nie generuje mi przerwan dla kazdego znaku, tzn.: Przy wysylaniu przez karte ATR w stanie RSTIN LOW moj soft dostaje tylko jeden bajt (pierwszy z ATR)...
Wg mojego rozumienia manuala wystąpienie overrun powoduje zatrzymanie przetwornika. To mamy inne https://obrazki.elektroda.pl/5525838500_... https://obrazki.elektroda.pl/1668768400_... Nie widzę niczego co mogłoby ustawic ten bit, DMA jest wyłączone. Osobiście nigdy nie testowałem w praktyce.
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 Może ktoś z forumowiczów miał podobny problem i jest w stanie pomóc. Tak w ramach rozwijania projekciku doszedłem do bardzo dziwnego zagadnienia. Otóż UART TX przez DMA opanowałem bardzo sprawnie i szybko ale pojawił się problem UART RX. Mianowicie odbiór przez UART działa tylko raz, zaraz po restarcie kontrolera. Potem ustawia się bit ORE (Overrun)...
Witam, Mam problem, którego nie potrafie rozwiązać: zainicjalizowałem CAN1, w trybie loopback jest ok, natomiast podczas wysyłania w trybie normalnym po poleceniu transmisji ustawia się bit TERR0 w rejeststrze TSR. kod inicjalizacji wyglada następująco: [syntax=c] void CAN_Initialization() { uint32_t temp; //turn on clock for CAN1 RCC->APB1ENR |=...
Masz całkowicie źle napisaną obsługę przerwania. Po pierwsze nie kasujesz bitu zgłoszenia przerwania Po drugie nie sprawdzasz od czego dostałeś przerwanie np. STM32F4 ma takie flagi: * (at)arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) * (at)arg USART_IT_LBD: LIN Break detection interrupt * (at)arg USART_IT_TXE: Transmit...
Po paru godzinach doszedłem o co chodzi z ta sekwencja odczytu ADC. Ale mam problem, bo wejścia nie sa odczytywane wg kolejnosci. Nie jest to na szczęście random, ale niepokoi mnie to jak coś takiego się dzieje. Wygląda to tak jakby sequncer miał swoją wizję który kanał ma który numer. W tym uC jest tylko jeden ADC, korzystam z HAL, PC1 -AIN11, PC2-AIN12,PC3-AIN13,...
Czesc, mam taki problem, wydawalo sie na poczatku ze banalny. STM32L4, UART pracuje w trybie circular, przy starcie wywoluje HAL_UART_Receive_DMA(), wszystko ladnie dziala do momentu kiedy wystapi blad transmisji. Gdy wystapi blad to w standardowym handlerze zwiekszany jest licznik bledow i w innym watku porownywany jest stan licznika i ponownie wywoloywane...
Witam. Mam zestaw stm32f429zi DISCOVERY. Chciałbym połączyć ten zestaw z simulinkiem. ### Real-Time Workshop build procedure for method: 'entry ### Starting build procedure for model: led ### Starting Real-Time Workshop build procedure for model: led ### Model connectivity is: normal ### Create verification block: None ### Check...
Ring buffer, wskaźnik czytającego i piszącego .. klasyka Piszący nie może wyprzedzić czytającego (OVERRUN)
Witam. Zastanawiam się nad tym w jaki sposób działają funkcje biblioteki stm32cube, np: HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleType... *huart, uint8_t *pData, uint16_t Size) { uint32_t tmp = 0; tmp = huart->State; if((tmp == HAL_UART_STATE_READY) || (tmp == HAL_UART_STATE_BUSY_RX)) { if((pData...
Musisz sprawdzać czy to przerwanie jest włączone. To nie ma znaczenia (przynajmniej dla zawieszania się programu). Skoro przerwanie wystąpiło to czy było włączone czy nie (swoją drogą nie mogło wystąpić gdy było wyłączone) to jego bit trzeba skasować. Generalnie ja mam zwyczaj kasować w przerwaniu wszystkie flagi (wszystkie od danej części, czyli np....
Witam, Korzystam z mikrokontrolera STM32F7 i oprogramowania CubeMX. CubeMX wygenerował biblioteki, które korzystają z HALa. Tak się składa, że HAL ma sporo błędów i takowym jest odbiór danych z portu UART. Sporo w internecie uwag dotyczących tego problemu, jednak żadnej sensownej odpowiedzi i wskazówki, która zadziałałaby u mnie. Próbowałem odczytu...
Witam, Mam żyroskop L3GD20 podłączony pod SPI5 w STM32F429. Problem jaki napotkałem to przesunięcie odpowiedzi o jeden rozkaz. Pierwszy raz z czymś takim się spotykam, polega to na tym, że jeśli odczytuję rejestr np. 0x20, potem 0x21 i 0x22 to w miejscu 0x21 dostaje wartość z 0x20, w miejscu 0x22 dostaje 0x21 zaś jeśli jeszcze raz odczytam 0x22 to już...
Witam, napisałem mini-programik na odczytywanie wartości prądu z dwóch kanałów ADC i zapisywanie ich przez DMA. Po wciśnięciu przycisku rozpoczyna się pojedynczy pomiar z dwóch kanałów ADC1. Po pierwszym wciśnięciu przycisku wartości zapisywane w tablicy są poprawne, jednak po następnych wciśnięciach przycisku wartości te nie zmieniają się. W manualu...
Witam, męczę się z prawidłowym ustawieniem tego modułu do odebrania pakietu danych, który jest prawie 2x większy niż pojemność FIFO. Kombinuję na wszelkie sposoby, aby ze wskazanego DIO tego modułu odebrać właściwe przerwanie i je obsłużyć w callbacku EXTI w STM32. Nie mam większego problemu z odebraniem danych z pierwszej raty tego pakietu w locie,...
Witam, Przejdę od razu do rzeczy- próbuję napisać oprogramowanie do komunikacji w interfejsie CAN wykorzystując mikrokontroler STM. Napisałem cały kod, ale mam problem z generowaniem przerwań. Otóż włączając CAN na test mode, ładuje wiadomość do rejestru Tx, wysyłam, otrzymuje ją w FIFO0 (widzę to w debugerze), ale program nie przerywa działania tak...
Before setting EN bit to '1' to start a new transfer, the event flags corresponding to the stream in DMA_LISR or DMA_HISR register must be cleared. Wystarczyło dodać w reinicjalizacji czyszczenie rejestru LISR dla danego strumienia DMA: [syntax=c]DMA2->LIFCR |= DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0;[/syntax]
buffer overrun overrun error buffer overrun detected
oporność głośnik karta pamięci uszkodzona bezpieczniki przedlicznikowe
Behringer CX3400 – przepalanie bezpieczników, grzanie transformatora, buczenie głośników Behringer CX3400 – świecą wszystkie LED LIM, grzeje się transformator, zwarcie w zasilaczu