Witam wszystkich, przeszukuję elektrodę już od dłuższego czasu, zresztą podobnie jak i cały internet, przestudiowałem rm, datasheet oraz errate i mam następujący problem z konfiguracją I2C na rejestrach otóż kod zamieszczam poniżej i prosił bym o pomoc gdyż urządzenie nie wysyła nawet adresu : Konfiguracja I2C(3) : [syntax=c]void I2C3_Init(void) //nadaje...
Witam Piszę program, który będzie musiał się synchronizować z siecią 230V. konfiguracja Timera: [syntax=c] TIM8->PSC = 168-1; TIM8->CR1 |= TIM_CR1_ARPE; TIM8->ARR = rotor_period; //20000-1+5000; TIM8->DIER |= TIM_DIER_UIE | TIM_DIER_CC1IE; TIM8->EGR |= TIM_EGR_UG; // update generate TIM8->CCMR1 = 1; TIM8->CCER = TIM_CCER_CC1E; TIM8->CR1...
Witam, Napisałem kod obsługi interfejsu SPI dla uC STM32F303 oraz STM32F051. Kod ten obsługiwał komunikację z NRF24L01+. Miałem problem z tym programem gdyż mikrokontroler przy próbie posłania bajtu do urządzenia za pomocą funkcji: [syntax=c] while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET) ; SPI_I2S_SendData(SPIx, byte); while (SPI_I2S_GetFlagStatus(SPIx,...
Witam, od dłuższego czasu walczę z tym problemem i nie potrafię znaleźć rozwiązania. Mam projekt, który pochodzi z anglojęzycznego tutoriala: [url=]Link Wrzucony do Keila i skompilowany działa jak powinien. Problem w tym, że próbuję przenieść go na wykorzystanie bibliotek HAL, z których planuję korzystać w dalszej pracy i mimo, że (jak mi się wydaję)...
Witam, moim zadaniem jest zbudowanie układu w oparciu o czujnik ciśnienia MPL115A1 kamodbar oraz płytkę stm32f4 discovery. Chciałbym prosić o naprowadzenie, co może być przyczyną w niepowodzeniu działania układu po podłączeniu. Problem polega na tym, że współczynniki pobierane z czujnika mają wartość zero co zupełnie uniemożliwia sprawdzenie działanie...
Autor w końcu znalazł nieco czasu, aby poeksperymentować z płytką STM32F4-Discovery, którą kupił jeszcze w zeszłym roku. Jak w przypadku innych mikroprocesorów, naukę dobrze jest zacząć od obsługi pinów GPIO. Ponieważ na płytce STM32F4-Discovery wyjścia zorganizowane są w dwu dwurzędowych złączach, nie można jej bezpośrednio wpiąć w płytkę stykową...
Pawel1812 W tej chwili masz 3 możliwości: - zaczekać, aż ST uzupełni STM32Cube o uC z rodziny CM4F, - użyć programu MicroXplorer, który obsługuje STM32F4xx i wypluwa kod kompatybilny z SPL, - przepisać to co dostałeś z Cube'a na rejestry STM32F429. Zasadnicza różnica jest taka, że SPL jest fajnym pomysłem, ale dość paskudnie zrealizowanym. Z tego powodu...
Potrzebuję wygenerować trzy sygnały do sterowania rejestrem: 1MHz, impulsy co 64. okres z 1MHz i podobnie 128. Mniej więcej wyglada to tak: __ __ __ __ __ __ __ __ __ | |__| |__| |__| |__| |__| |__| |__| |__| |__ 1MHz __ __ | |__<-- przez 64 okresy poziom niski -->| |__ __ __ | |__<-- przez 128 okresy poziom niski -->| |__ Wykorzystałem...
Teraz moje pytania którą bibliotekę lepiej poznawać czy może one są praktycznie takie same? "Biblioteki" te lekko się od siebie różnią, ale obydwie są równie beznadziejne (; Czy na armach mogę sobie programować tak jak na avr?tzn dodam sobie jakiś plik nagłówkowy jak to tam było avr/ io.h z definicjami rejestrów wejść/wyjść i mogę operować bezpośrednio...
Posiadam układ STM32F407 i chciałem zrobić odczyt pozycji x,y,z oraz aktualnej prędkości z wbudowanego akcelerometru W woli ścisłości, układ STM32F407 nie ma wbudowanego akcelerometru. Zapewne chodzi o płytkę STM32F4DISCOVERY. A teraz recepta na rozwiązanie problemu z odczytem. Bierzesz pdf'a płytki i sprawdzasz jaki tam jest akcelerometr - LIS3DSH....
Cześć wszystkim, Zabrałem się za obsługę wyświetlacza 4.3" opartego na SSD1963 w oparciu o FMC w STM32F429ZIT6. Konfigurację wszystkich podzespołów przeprowadziłem bezpośrednio na rejestrach. Sama procedura konfiguracyjna SSD1963 pochodzi z biblioteki UTFT z Arduino (oczywiście przepisana na potrzeby STMa) - na tamtym procku działa, więc tutaj ten sam...
Witam. Czy Ktoś może posiada bibliotekę do LIS3DSH? W internecie znalazłem tylko fragmenty kodów. Chciałem sam napisać taką bibliotekę jednak po wklepaniu danych z datasheet zapał mnie opuścił :) Zaimplementowałem tylko kilka podstawowych funkcji pozwalających na uruchomienie MEMSa i wymianę danych. Jak by ktoś miał ochotę dopisać lub poprawić jakąś...
Witam, Próbuję nawiązać komunikację między płytką STM32F4-DISCOVERY oraz układem MPU-9150. Po wysłaniu adresu urządzenia oraz adresu rejestru, zmieniam kierunek przesyłania danych i program wpada w nieskończoną pętlę przy sprawdzaniu flagi zajętości linii (w układzie jest tylko jeden slave, więc nic innego nie blokuje szyny). Kod: [syntax=c] void I2C1_Conf()...
Wczoraj zmarnowałem popołudnie próbując dogadać się z SDRAM'em podłączonym do stm32f429 przez fmc. Ostatecznie znalazłem błąd w pliku nagłówkowym od ST - nie w funkcji HAL/SPL/CubeMX (czy jak to się tam teraz nazywa) - w pliku nagłówkowym z definicjami rejestrów! Może komuś pomoże to zaoszczędzić odrobinę czasu ;) Nazwa pliku: stm32f429xx.h Wersja:...
Witam mam lekki problem, mianowicie staram się oprogramować zewnętrzne przerwanie, standardowo wywoływane po wciśnięciu przycisku, reagujące na zbocze opadające. Okej, wszystko elegancko ale po wejściu w przerwanie nie jest kasowana flaga przerwania. Przeglądając RM, nie odnalazłem żadnego rejestru w EXTI, który by za to odpowiadał. Pytanie brzmi zatem:...
Jeszcze mam jeden problem. Chciałem przy okazji użyć Backup SRAMu, i tu problem z włączeniem go. Zgodnie z informacjami podanymi np. tutaj: widać że trzeba włączyć taktowanie PWREN, BKPSRAM, odblokować zapis bitem PWR_CR_DBP oraz włączyć Backup regulator bitem PWR_CSR_BRE. I to wszystko czynię. PWR_CR_DBP ustawiam i tak w inicjalizacji zegara RTC. PWREN...
Witam, Używam płytki stm32f4discovery. Od kilku dni próbuję nawiązać po SPI (w trybie 4-wire) połączenie z wbudowanym w nią akcelerometrem LIS302DL. Aktualnie skupiam się na podejrzeniu na oscyloskopie wartości rejestru WHO_I_AM. Więc wysyłam do akcelerometru instrukcję 0x8F00 (używam formatu 16 bitowego żeby, po wysłaniu 8 bitów zegar dalej pracował...
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ż...
Nie no... 16? To nie 8051... Samo odłożenie rejestrów zajmuje 32 bajty. Wpisz tam z 1024, tak samo jak dla drugiego stosu już jest ustawione.
Wygląda w miarę OK (pod warunkiem tego, że w polach struktur których nie inicjalizujesz nie ma śmieci które mocno mieszają), tylko teraz skąd pewność, że wartości które wpisujesz (gdzie?) są faktycznie zapisywane do PWMa? Naprawdę łatwiej by było, gdybyś pokazała może nie cały program, ale wszystkie istotne fragmenty (np. cały main(), kod odpowiedzialny...
Właśnie próbuje zapoznać się z płytką stm32f4-discovery i utknąłem przy akcelerometrze MEMS. Przykładowe aplikacje nie działają :( Na schemacie płytki jest układ LIS302DL na mojej natomiast "coś" o oznaczeniu: 8326 DSH 046PR W przykładzie ze strony jest: [syntax=c] /* Read WHO_AM_I register */ LIS302DL_Read(&temp, LIS302DL_WHO_AM_I_ADDR, 1); /* Check...
Bez znaczenia co na to system Unix, ponieważ w nim nie korzystasz z kompilatora skonfigurowanego na "multilib" i nigdy nie używasz tam ręcznie podanego skryptu linkera. Co się dzieje? Ludzie rozsądni a takie bąki puszczają. Ręcznie to się nie linkuje od około 40~50 lat, a w moim przypadku to co? Sama się pamięć rozplanuje? Takie 'multilib' seriami...
Witam Od dłuższego czasu walczę z obsługą wyświetlacza jak sądzę opartego na ssd1289 ( co prawda device code odczytywany z rejestru 0x0000 pokazuje 0x0020 ). Wyświetlacz inicjalizacje się poprawnie mogę wyrysować wszystko co chcę ale problem pojawia się w odświeżaniu obrazu. Sądząc po ustawieniu rejestru R25h jest ustawiony na 65Hz/ w nocie nie zauważyłem...
Witam, z uwagi na to, że bez pośredniego układu nie utworzę komunikacja stm->PC po rs232, zatem chcę wykorzystać do komunikacji dwa dostępne w procesorze USART'y, jeden działa w trybie nadajnik drugi odbiornik. Na płytce połączyłem jedynie pin PA9 - USART1_TX z pinem PC7 USART6_RX, to chyba wystaczy? O ile mam wrażenie, że nadawanie danych przez USART1...
Witam, standardowo akcelerometr na płytce przeznaczony jest dla komunikacji SPI, ale wydaje mi się, że nie powinno być problemu, żeby skonfigurować go pod I2C. 1. Ustawienie czujnika w tryb I2C po przez ustawienie stanu wysokiego na nożce CS podpiętej do pinu PE2 lub PE3 (PE3 jest raczej prawdą). 2. Ustawienie LSb adresu czujnika na 0 po przez zwarcie...
Witam, Posiadam płytkę STM32F429I-DISCO: Próbuję uruchomić wyświetlacz LCD ale za nic nie mogę tego dokonać. Nie korzystam z bibliotek ST, więc ustawiam bezpośrednio rejestry. W dokumentacji płytki: Można zauważyć że wyświetlacz jest skonfigurowany przy pomocy rezystorów do pracy w trybie 4-wire oraz że piny SDA oraz SCL są podpięte do pinów z SPI5...
Witam ponownie :) Co prawda nie udało mi się uruchomić komunikacji przez SPI z rejestrem przesuwnym, ale rozwiązałem to programowo :) Mam jednak jeszcze jedno pytanie. Chciałbym zrobić "beep generator". Chodzi mi o to, aby na wyjściu słuchawkowym pojawił się wygenerowany dźwięk. Korzystam z gotowego kodeka dla STM32F4 Discovery. Konfiguracja kodeka...
Zmieniłem na podane przez Ciebie funkcje: [syntax=c]#include "stm32f4xx.h" #include <stdio.h> #include "stm32f4xx_spi.h" #include "main.h" #include "gpio.h" #define CS_0 GPIOE->ODR &= ~(1<<3); #define CS_1 GPIOE->ODR |= (1<<3); void spi_init( void ) { RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;...
Cóż, jakie są moje rady - naukę zaczynałem od książki Pana Paprockiego, pisanej pod rodzinę F1 (w STM kluczowe różnice mamy między rodzinami, czyli F0 F1 F2 F3 F4, ... F7) i mając procesor z rodziny F1 (ale nie płytkę prezentowaną w książce). Co do różnic między rodzinami to te są o tyle kłopotliwe, że czasem np. w F4 trzeba zrobić jedną rzecz dodatkowo...
Witam, próbuję odczytać liczbę impulsów z enkodera, ale niestety liczby pojawiające się na ekranie są nieadekwatne do obrotów. Enkoder wysyła 20impulsów/obrót, u mnie jest czasem 13 czasem 16 a czasem 7. Jak przekręcę go jeden raz ( jeden "skok") to często nie odnotowuje tego, czasem pokazuje 2 impulsy, ogólnie w cały świat. Oto mój kod: GPIO RCC_AHB1PeriphClockCmd(RCC_AHB1Perip...
(at)JarekC 1. Ponieważ po wyłączeniu trybu debuggera, żadne przerwania zewnętrzne, wejścia nie odpowiadają, podczas debuggingu wszystko fajnie działa. 2. Nie, nie ma żadnych pułapek. A czy to nie jest spowodowane wyczyszczeniem pamięci flash, bo kiedyś to robiłem poprzez ST-Link, może jakieś rejestry się wyczyściły czy coś?
Mam problem ze zdjęciem blokady odczytu pamięci FLASH z procesora STM32F439 zasilanego z przetwornicy. Przy czym nie wiem czy to ma znaczenie. Wcześniej w żadnym projekcie na STMie nie zasilałem procesora z przetwornicy (przynajmniej nie bezpośrednio, jak była przetwornica to na 5V a potem post regulator liniowy na 3.3V), jak i nie używałem blokady...
Witam. Z artykułu zrobiłem pierwszą część tzn. w rejestrze HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi... Script Host\Settings stworzyłem zmienną Enable i nadałem jej wartość 1. Reszta część artykułu niestety nie jest możliwa ponieważ wyskakuje monit, że nie jest to skrypt rejestru. Tak czy owak nie jest to chyba wymagane skoro zrobiłem to ręcznie niestety...
Bazować będę na moim przykładzie dla STM32F4. W skrypcie linkera masz na górze definicje pamięci - regionów. Skoro chcesz korzystać z RAM, to po pierwsze kasujesz w ogóle region odpowiedzialny za flash. Czyli z czegoś takiego: MEMORY { rom (rx) : org = 0x08000000, len = 1M ram (rwx) : org = 0x20000000, len = 112k aux_ram...
Witam, uruchomiłem przykładowy program z obsługą Ethernetu. Po wyczyszczeniu ze zbędnych plików ( usart debug, lcd ) i przeniesieniu plików źródłowych do dwóch folderów mam problem z uruchomieniem programu. Mianowicie program po wywołaniu funkcji SystemInit zatrzymuje się na linii: [syntax=asm]0x080068BC BEAB BKPT 0xAB.[/syntax] w funkcji [syntax=asm]...
Witam! Widziałem, że ten temat był już poruszany na forum ale pozostałe posty mi na razie nie pomogły więc zwracam się do was z prośbą o pomoc. Otóż chcę wypróbować działanie kodeka CS43L22 i mimo, że wydaje mi się, że dobrze go skonfigurowałem, ale nic nie słyszę na słuchawkach. Ogólnie mój plan wygląda tak, że przerwanie od timera generuje z częstotliwością...
Nie przy C, gdzie zanim zaczne cos robic, to zuzywam pare kilo flash-a :( To włącz optymalizator. C wcale nie jest AŻ TAK CIĘŻKI jak to ciągle piszesz, tylko programiści są ciężcy. Przecież jest tłumaczony na assemblera i optymalizowany w celu np reużycia wartości wpisanych w rejestry etc. W większości przypadków nie ma sensu pisać w asemblerze.
Dzięki, dobrze wiedzieć, jak coś to zgłoszę się do Ciebie po najnowsze OpenOCD. Na razie spróbuje na tym starociu co mam - 0.6.1. Przeglądnąłem sekcję RCC. Znalazłem tam jakieś różnice w rejestrach do włączania zegarów dla poszczególnych peryferiów i ich resetowania. Co do samego ustawiania SYS_CLK nie znalazłem różnic, czyli wszystkie funkcje w projekcie...
Nie potrafię uruchomić tego zegara. W dokumentacji są podane kroki aby uruchomić RTC. A więc ustawienie bitu RTC_ISR_INIT, odczekanie aż ustawi się flaga RTC_ISR_INITF, wpisanie wartości czasu i daty (BCD) do rejestrów RTC_TR, RTC_DR, i skasowaniu bitu RTC_ISR_INIT. Ale po tej sekwencji kiedy odczytuję rejestr RTC_TR to w sekundach stale jest 0, czyli...
Procesor to konkretnie STM32F439IGT6. Mam taki kod w mainie: A powinno być tak: Najciekawsze wnioski są jednak po dodaniu tych linii: A tu dla wersji która inicjalizuje dopiero po kolejnych kliknięciach w programie: Na rysunku jest po pierwszym kliknięciu, ale kolejne już nic nie zmieniają (poza tym że rusza main i program zaczyna wysyłać dane pomiarowe...
Skoro nic nie zmieniasz i nadal nie działa to pierwsze co to spróbuj (np. z poziomu debuggera) ustawić ręcznie wartość rejestru baudrate dla tego problematycznego UART'a. Sprawdź też analizatorem stanów logicznych co rzeczywiście nadaje. Na jakiej płytce masz uC? Doscovery?
Witajcie, Potrzebuję pomocy przy STM32F429. Moje pierwsze podejście do rozwiązania docelowego zadania było oparte o biblioteki HAL i była to moja pierwsza styczność z STM. Pomysł fajnie się spisywał, ale później miałem jakąś totalną masakrę, żeby zaimplementować jakiekolwiek klasy. Wyszło tak, że przerzuciłem się na rejestry i nie wygląda to najgorzej....
Witam wszystkich, Po dwóch a może trzech tygodniach poszukiwań znalazłem błąd. Nie odkryłem samodzielnie tylko znalazłem tu na forum : [url=]STM32 - I2C na przerwaniach Piszę w SystemWorkbench for STM32. Przy tworzeniu kodu w STM32CubeMX (czyli na bibliotekach HAL) program dodawał za mnie wszystko co potrzebne żeby działało podczas ekportu projektu...
Analiza urządzeni w przestrzeni częstotliwości, jest niezwykle istotne dla zbadania wielu jego parametrów. Poznanie charakterystyki Bodego czy funkcji przejścia układu jest dosyć prostym pomiarem, który zrealizować można z pomocą zaprezentowanego poniżej urządzenia. Jak pokazuje uproszczony schemat po prawej stronie, przez mierzony układ przepuszcza...
Witam. Mam standardowy enkoder dwa kanały A,B przesunięte o 90st. Próbuje skonfigurować timer 2 do pracy z tym enkoderem jednak licznik ani drgnie. Próbowałem skonfigurować na różne sposoby i w końcu nie wiem czy coś jest fizycznie uszkodzone czy po prostu źle skonfigurowałem rejestry. Oto mój program: [syntax=c] RCC->APB1RSTR|=RCC_APB1RSTR_TIM2RST;....
Witam wszystkich Tym razem chciałbym zaprezentować kolejny programowy projekt czytnika kart SD uruchomiony na płytce STM32F4Discovery. Programowy, gdyż również wejdzie on w skład większego projektu sprzętowo-programowego. Poprawność funkcjonowania tego czytnika sprawdziłem na dwóch kartach SDHC 16GB z systemem plików FAT32 i jednej karcie SD 2GB z...
Chciałbym zmierzyć napięcie na końcówce VBAT w STM32F427. VBAT jest podłączone wewnętrznie do kanału 18 ADC1. Napięcie VBAT jest za pomocą wewnętrznego dzielnika napięcia dzielone przez 4. Na potrzeby testów zamiast baterii podłączyłem potencjometr: skrajne końcówki do zasilania, ślizgacz do VBAT. Ogólnie ADC działa, odczytywana wartość zmienia się...
Witam, Dalej walczę z książka STM32 Aplikacje i przykłady w języku C. Doszedłem do obsługi przerwania RTC. W książce jest przykład, który konfiguruje przerwanie od RTC, tak jak by to było przerwanie wewnętrzne. Autor zakłada, ze w pliku stm32f10x_it.c jest gotowy szablon funkcji RTC_IRQHandler (), który należy uzupełnić oraz uaktywnić przerwanie w NVIC....
Zacznę od tego, że nie znam SPLa. O ile konfiguracja takich peryferiów jak UART się pewnie nie zmieniła i być może zadziała, to na pewno GPIO, RCC i NVIC jest do przepisania. Nie masz tego wiele, więc otwórz sobie reference manuala i sprawdź poszczególne rejestry.
Jeżeli zrobię bufor w pamięci zewnętrznej SRAM i prześlę go bez użycia DMA przy użyciu tego kodu: [syntax=cpp]uint16_t screen[SSD1289::MAX_X * SSD1289::MAX_Y] __attribute__ ((section(".extram"))); int main() { SSD1289::init(); SRAM::init(); for(uint32_t i = 0; i < (SSD1289::MAX_X * SSD1289::MAX_Y); i++) { screen[i] = SSD1289::BLUE; } SSD1289::setCursor(0,...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
Witam W ramach zaliczenia mam do stworzenia projekt na bazie stm32f407 (płytka discovery) który będzie bazował na free rtos. Będą wątki sprawdzające stan przycisku[1], poziom napięcia[2] oraz wątek[3] tzw loga który będzie przez dma wyrzucał ciągi znaków przez porty szeregowy. Bez rtos sprawa wydaje mi się banalna lecz przy rtos mam wątpliwości merytoryczne....
Hej. Pacjent to STM32F401VCT6 taktowany domyślnym zegarem wewnętrznym 16MHz. Uruchomiłem sensor HC-SR04 wykorzystując TIM2 do zliczania długości impulsu ECHO wykorzystując tryb capture oraz DMA. Do rejestru TIM2->PSC ładuje 15, ponieważ chcę aby wartość CNT inkrementowała się co 1us. Kod źródłowy poniżej: [syntax=c] #include "stm32f4xx.h" static...
Sam goldpin też ma pojemność, generalnie kanapki do lcd to nie jest dobry pomysł (szczególnie ta pośrednia z złym layoutem, pomóc może podłączenie taśmą tych pinów od lcd na zasadzie pin/masa/pin/masa itd), ale zwiększenie czasu wysyłania też powinno pomóc. Możesz też spróbować zmniejszyć pochylenie zboczy, albo zamienić cube na rejestry. Ewentualnie...
Raczej nie od wzrostu temperatury -dmucham z daleka (~15-20cm) więc powietrze raczej nie ma takiej temperatury żeby zagrzać, ponadto efekt trwa prze mniej niż 1s - wątpię żebym nagrzewał i chłodził w takim czasie. Co ciekawe, gdy dotykam paluchem (ciepłym), pobór spada:] Obserwowany wzrost to z 2050uA na ~2380. Dodano po 9 To jeszcze przestaw wszystkie...
Posiadam STM32F4Discovery z STM32F4VGT6, oraz kilka sampli tego procka. Na ich obudowie widze literką A (to chyba info o Revison). W debugerze odczytuje REV_ID z rejestru DBGMCU_IDCODE i dostaję wartość 0x2000, DEV_ID = 0x411 niestety w RM napisano, że 0x1000 = Revision A (nie napisano jaką wartość reprezentuje Revision Z). W erracie napisano że: ●...
Dodano po 17 Także problem rozwiązałem sam metodą prób i błędów. Wszystko było w porządku, poza deklaracją push-pull'a i floating :D Prawidłowy kod main.c dla potomności: [syntax=c] #include "main.h" #include "stm32f4xx_gpio.h" int main(void) { #ifdef DEBUG debug(); #endif GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP...
Witam Próbuję oprogramować taki wyświetlacz: [url=]Link do wyświetlacza Wyświetlacz podłączony do FSMC w typowy sposób. Szyna danych D0-D15. Sterowanie wyborem rejestr kontrolny/dane szyna A16 i sygnały WR, RD. Procesor STM32F407VET6. Kod konfiguracji FSMC i portów: [syntax=c] /** * (at)brief Configures LCD Control lines (FSMC Pins) in alternate function...
Witam, zainstalowałem środowisko System Workbench for STM32, podpiąłem kilka evalboardów i w każdym przypadku kompilator nie rozpoznaje nazw rejestrów mikrokontrolerów. Przeszukałem dysk i nie widzę plików nagłówkowych typu stm32f4xx.h. Podejrzewam, że to jest właśnie przyczyną. Czy te pliki nie powinny być zainstalowane razem ze środowiskiem? Gdzie...
Cześć! potrzebuje pomocy przy interfejsie I2C, kiedyś już bawiłem się I2C bez bibliotek, ale postanowiłem nauczyć się hala, chciałbym postawić komunikacje miedzy I2C2 i I2C3. GPIO jak mniemem zainicjalizowane poprawnie, połączyłem przez płytke stykowa piny PA8 -> PB10 PC9 -> PB11 [syntax=c] void STM32F4_I2C3init() { __GPIOA_CLK_ENABLE(); __GPIOC_CLK_ENABLE();...
Uwierz mi, że wszystko działa jak trzeba, tylko trzeba mieć świadomość różnic między float a double... Np. jak wezmę Twój przykład i zmienie double na float: volatile float f = 123.5434; Niby OK, ale... 123.5434 jest... liczbą typu double, więc faktycznie masz konwersje (ze względu na volatile). Jak dasz 123.5434 f (albo zrzutujesz na float), to już...
Od dwóch dni uruchamiam peryferia STM32F4Discovery oczywiście bez użycia jakichkolwiek ułatwień (bibliotek), poza funkcjami startowymi procesora (dzięki Freddie:). Tak więc mam uruchomiony wyświetlacz graficzny, akcelerometr, komunikację z rejestrami CS43L22 po I2C. Komunikację sprawdziłem modyfikując rejestry i odczytując je czy zmiany zostały wpisane...
Witam, jak w temacie aktualnie opracowuję komunikację uC z kartą SDHC. Korzystam z komunikacji za pomocą interfejsu SDIO 4-bit Wide bus mode. Domyślnie w czasie procesu inicjalizacji przy włączaniu Wide Bus Mode uC wysyłał komendę CMD41 w celu ustalenia SRC. Nie skorzystałem z tego z powodu braku takiej komendy w STM32F446. Ręcznie wpisałem do odpowiedniego...
Zastanów się nad faktem, że jak konfigurujesz DMA to podajesz ilość przesyłanych danych. Jak potem DMA ma odpalić przerwanie, skoro danych z UART jest mniej, niż zostało to określone? Problem i zaproponowane rozwiązanie odbioru danych o nieznanej długości przez UART poruszone zostało w tym wpisie: [url=]STM32 tutorial: Efficiently receive UART data...
Korzystałem z googla i czytałem dokumentacje. Chcę, żeby ktoś mi wytłumaczył co to dokładnie jest np Prescaler i jak mam go rozumieć w kontekście mojego projektu (tak, dokumentacja nie wyjaśniła mi tego dokładnie). Nie wiem jaką dokumentację czytałeś, le niewątpliwie nie tę, którą trzeba. Aby zrozumieć jak działa to wszystko trzeba przeczytać Reference...
Jeśli dobrze zrozumiałem problem: Ustawiając rejestr OTYPER nie ustawiasz pinu jako wyjście, tylko konfigurujesz wyjście, prawdopodobnie włączają się jakieś wewnętrzne rezystory, skonfiguruj resetr GPIOx->PUPDR (pullup) oraz TIMx->BDTR bit BKP (wyzwalanie stanem niskim lub wysokim). pzdr
Problem polega na tym, że po padzie zasilania procek się zablokował na jakiekolwiek próby zapisu. Próbowałem wielu rzeczy, ale nic nie pomogło. Procesora nie da się zaprogramować. Próby zmiany "Option bytes" poprzez st-link utility kończą się tak: 15:29:23 : Could not set Option bytes! Please reset the target and retry. Procesor komunikuje...
Po uruchomieniu układu LIS302DL mam problem z ustawieniem przerwań wywoływanych przez click lub double click. Przerwania od strony kontrolera działają (zmieniają odpowiednio stan LED1 i LED2). Sam pomiar przyśpieszenia w trzech kierunkach działa dość ładnie, stabilnie. Natomiast nie potrafię ustawić rejestrów LIS tak aby ledy zmieniały stan na kliknięcie...
Może głupie pytanie ale gdzie JEST GPIO_PIN_RESET? Zaraz po wejściu zapalasz PING14 potem dopóki niezakończony się konwersja ustawiany jest PING13 ale nawet jak się konwersja zakończy to nic tego rejestru nie resetuje
Więcej widzę, jeżeli mam zapisane cyfry i tutaj nie ma co się spierać. Pan może więcej widzi w makrach, ale to już kwestia personalna każdego człowieka. Nie prosiłem o obsługę FAT. Chcę się połączyć z kartą i czytać surowe dane. Mam problem z podłączeniem do karty. 'Poprawiony' kod, problem ten sam, czyli: Ustawiam breakpoint na __nop(); sprawdzam rejestr...
Cześć, przy próbie montowania dysku (f_mount) software próbuje odczytać pierwszy sektor karty SD, w którym teoretycznie powinny znajdować się informacje do jakiego systemu plików karta została sformatowana. Jednak, gdy podglądam ten sektor to wszystkie wartości są zerami , oprócz 'rejestru' BS_55AA, który faktycznie zawiera wartość 0x55AA, co oznacza,...
Przez calkowity przypadek (oscyloskop zostawiony na DAC-u) zauwazylem ze po resecie (PIN i power) na DAC-u po właczeniu i niezapisaniu któregoś z rejestrów DHxxxx nowa wartościa, DAC generuje napięcie takie jakie generował przed resetem.. Rejestry DHxxxx pokazuja zero zgodnie z RM
Witam, Mam problem z timerem pracującym w trybie input pwm. Chcę zmierzyć współczynnik wypełnienia przebiegu prostokątnego. Ten tryb umożliwia pomiar zarówno częstotliwości jak i współczynnika wypełnienia. Jednak gdy uruchamiam układ współczynnik wypełniania równa się okresowi przebiegu. W rejestrach CCR1 i CCR2 są te same wartości. Mikrokontroler na...
Dziękuję za odpowiedź. Po przeczytaniu tego faktu w erracie czytam w RM0090 co z tym można zrobić. Trzeba zapewne wprowadzić zmiany w rejestrze SDRTR (?) i SDCMR ale ustawiać któreś bity w przerwaniach? Nie wiem jak się do tego zabrać. OK. Doczytałem że trzeba ustawić bity w rejestrze SDCMR na 0x005 żeby SDRAM był w trybie SELF_REFRESH i 0x000 żeby...
Miałem tego pustego na początku, to go wypełniłem do warunkowej kompilacji żeby #error nie wywalał komunikatów o braku wyboru zestawu startowego, na tym github same puste są więc nie wiem także jakie dokładnie definicje podać. Po pogrzebaniu troche w necie doszedłem do wniosku, że problemem były instrukcje assemblera do przerwań 'cpsid i' i 'cpsid e'...
Sygnał BREAK w stosunku do ramki danych jest dłuższy, stąd użycie Timerów, w taki sposób aby go wyznaczyć. No i co z tego? Pięcioma operacjami na rejestrach uart-a sie to zalatwia. Albo brzydką metodą błedu. Przynajmniej po krótkim obejrzeniu standardu
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ł...
Sprawdzałeś w podglądzie rejestrów czy te wartości się rzeczywiście wpisują? To jest tak proste że nie może nie działać. Zegar tez nie ma mozliwości zmiany źródła więc to co masz wyżej powinno wystarczyć, ale sprawdź czy rzeczywiście się wpisuje.
Hej Chciałem zapytać czy jak chcę używać na przykład IIC. To moim zadaniem jest tylko ustawienia odpowiedniej wartości w rejestrach MODER, AFRL i AFRH, dla pinów pełniących rolę linii SCL i SDA? Czy muszę jeszcze ustawiać linie odpowiadające za ustawienie pinu jako PP OD i stanu na tych pinach ? Ponieważ nie do końca wiem gdzie to jest napisane w dokumentacji...
-Ox zależy od tego co robisz. Najbardziej przyspiesza dobrze napisany -Os - nawyk pewnie z AVR-ów :) -O3 - z reguły ja tak kompiluję docelowo (wzrost zajętości pamięci mało mnie z regułu obchodzi) Program musi chodzić na każdej optymalizacji - jezeli chodzi na -O0 a nie na -O3 to znaczy że jest tam jakiś wredny bład i trzeba go odszukać. program Masz...
Witam, jak w temacie programuję odtwarzacz audio. Korzystam z dekodera Helix, dane pobieram z karty uSD poprzez FAT i interfejs SDIO. Korzystam z DMA przy odczycie jak i przy przesyłaniu danych do I2S. Biblioteki z których korzystałem ustawiały priorytet DMA I2S na niski. Powodowało to problem z odtwarzaniem. Po zmianie priorytetu na wysoki(0 lub 1)...
Oczywiście, problem leży w tym iż druga linia w której ustawiam GPIOA->AFR Sprawdź jaką wartość ma rejestr po resecie. To Nie AVR i nie ma tam 0. GPIOA->AFR[0] odnosi się do GPIOx_AFRL czyli niższej części tego rejestru.GPIOA->AFR[1] to GPIOx_AFRH, 4 bajty dalej. Moim zdaniem jest OK.
Witam od 2 dni próbuje zsynchronizować TMI1 (podczas generowania przebiegu PWM) i ADC2 w taki sposób aby przetwornik ADC2 próbkował w czasie gdy gdy nastąpi przepełnienie w liczniku jak poniżej na rysunku: Dodam, że Timer pracuje w trybie "Center-aligned mode 2" a przetwornik ADC2 używa kanału wstrzykiwanego "INJECTED", który pobudzany jest "trigerem"...
... efekt faktu, że ktoś gdzieśtam zdefiniował, że PORT jest wskaźnikiem na adres, który reprezentuje określony zasób MCU, a cośtam, to wartość, która wpisana pod ten adres akurat powoduje, że jakieś tam piny stają się wyjściami... I właśnie tego nie rozumiem, dlaczego ktoś gdzieś tam zdefiniował to inaczej, przecież mógł tak samo zrobić dla obu procesorów...
- nie zapoznał się ze schematem elektrycznym, I tutaj trafiłeś w sedno Zerknąłem jeszcze raz na schemat: i zauważyłem zworkę SB50 która idzie do MCO, ale na schemacie nie widać gdzie idzie, więc zmierzyłem miernikiem i okazało się, że idzie do kwarcu Usunąłem ją i teraz wszystko działa :-) Teraz mój "program" wygląda tak: [syntax=c] RCC->CFGR = RCC_CFGR_SW_HSI...
Do tego RCC_APB2ENR_ADC1EN to nie rejestr tylko definicja jedynki tego bitu (1<< coś tam) Może źle się wyraziłem, ale chodziło mi o to, że nie chciał bym się kiedyś zdziwić wpisując do rejestru wartość RCC_APB2ENR_ADC1EN zapiszę w nim ((uint32_t)0x00000200) zamiast ((uint32_t)0x00000100)
Bit ADC_SR_EOC jest u Ciebie kasowany z automatu, bo pewnie w debuggerze podglądasz sobie rejestr DR, co oczywiście liczy się jako jego odczyt, kasujący automatycznie flagę.
Witam wszystkich po raz kolejny. Potrzebuję rady doświadczonych kolegów na temat wydajności kodu. Otóż pracuję nad kodem w którym będą istnieć nawzajem różne procesy - adc, uart itd. Aktualnie piszę kod do obsługi SPI, w celu komunikacji z urządzeniem. Potrzebuję wysłać przynajmniej 7 bajtów do urządzenia a potem odczytać odpowiedź. Wszystko gra i komunikacja...
Adres rejestru danych zapisałeś tak: Tutaj akurat USART3_BASE jest liczbą, która dopiero później w nagłówku jest używana jako część definicji struktury USART3, więc problemu nie ma. Poza tym konfiguracje peryferiów razem z tymi wielkimi strukturami przenieś do oddzielnych funkcji, niech te struktury nie będą zmiennymi globalnymi! Przecież nie są globalne...
to ze nie może być PP to wiadome, ale istnieje przynajmniej zapis co trafia do rejestru odpowiedzialnego za typ wyjścia.
Bo to finalna wersja ustawień, nie zapisu. Kiedy szukam co jest nie tak, nie mam czasu na komentarze itp. Dopiero jak zadziała, czyszczę i komentuję. Dlatego też ustawienia rejestru na raty, bo dotyczą ustawiania różnych parametrów, choć w jednym rejestrze. Natomiast dla czytających, wyjaśnienie magicznego 0x0050 jest na dole - to czego brakowało.
Witam Używają stm32 i FSMC + LCD +GUI segger chcąc obrócić obraz wystarczy: [syntax=c] pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLO... GUICC_M565, 0, 0); Config.Orientation = GUI_SWAP_XY |GUI_MIRROR_X; GUIDRV_FlexColor_Config(pDevice, &Config);[/syntax] Sprawa się komplikuje używając stm32F429 + LTDC, LCD-ILI9341 Próbowałem modyfikować rejestry:...
Nadal nie mogę znaleźć błędu. Nie chce korzystać z tego typu biblioteki. 1. Po co się ustawia NSS , bo nie rozumiem tego chyba ? 2. Czy do PE3 dać pull_down pullup? 3. SCK w idle chyba powinno być =1 a w tej wyżej bibotece =0; 4. Co robie źle? Proszę o pomoc:) ROZWIĄZANIE: Podczas pobierania danych , trzeba wysłać też dane aby zegar chodził: uint8_t...
W niższych procesorkach (STM32F1xx) były rejestry BKP, w tych z Cortex M4 jest BKP_SRAM i mam kłopot z zapisem wartości do tego obszaru. Mam w tej chwili tak: [syntax=c] uint8_t *ram = (uint8_t *) 0x40024000; int main(void) { --- --- RCC->AHB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_DBP; RCC->AHB1ENR |= RCC_AHB1ENR_BKPSRAMEN; FLASH->OPTCR &= 0xFFFF00FF;...
Potrzebuję opóźnień rzędu 1-3 us, czasem kilkadziesiąt ns. Procesor taktowany jest 21MHz. Timer odpada, bo samo kasowanie flagi, ładowanie rejestru licznika i sprawdzanie w pętli flagi trwa zbyt długo. Używam pustego rozkazu NOP, ale nie wiem ile cykli zegarowych on trwa. Poza tym - czy asm("NOP"); nie jest pomijane przy optymalizacji?
ten dziwaczny zapis nie jest ani trochę szybszy od normalnego testowania stanu bitu TXE bez upycia bitbandingu. Problem leży więc zapewne nie w optymalizacji kodu przez kompilator, ale w zbędnej optymalizacji przez programistę Bitbandingu używam głównie z powodu wygody zapisu. Jakiś czas temu brałem tu udział w dyskusji w której wszyscy tu zachwalali...
Wadzą w redukcji powierzchni płytki, a w niczym nie pomagają. Dlaczego mam na płytce umieścić tylko dwa zbędne elementy? Może powinienem dać ich ze 20? Zauważ, że w tym fragmencie manuala jest mowa o przycisku RESET - to uzasadnia użycie kondensatora. Jakoś jednak na wklejonym przez Ciebie firmowym obrazku ST nie widać rezystora, który tak rekomendujesz....
Stan DMA tzn? Jakiś rejestr statusowy? Dalej nie rozumiem czym może się różnić DMA dla pamięci SRAM wewnętrznej, a dla SDRAM? I dlaczego za pierwszym razem DMA bez problemu kopiuje do SDRAMu jedną ramkę? Co się może później zmieniać?
Witam, od jakiegoś czasu testuję zestaw uruchomieniowy STM32F429 discovery. Bazuje na modyfikacji przykładu Freddiego Chopina. Od jakiegoś czasu próbuje coś wyświetlić bez korzystania z bibliotek od ST (to mam już za sobą). Na początku dodam, że wyświetlacz startuje, wyświetla kolorowe tło (LTDC->BCCR). Następnie ustawiam żądany rozmiar okna korzystając...
Ja potrzebuję generować te dane z częstotliwościami od ułamka herca do max. 18-20kHz, czyli w paśmie akustycznym, bo chcę właśnie generować dźwięki. Nie wiem, jak w ARM z precyzyjnym generowaniem dźwięku przez DMA, ale w AVR to nie przeszło ze względu na brak precyzji, dlatego skupiam się obecnie na tradycyjnej metodzie DDS. Znaczy masz coś skopane...