Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'stm32f4'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 9 wyników

  1. Witam Staram się podłączyć wyświetlacz na sterowniku SSD1306 do mikrokontrolera STM32F401RE. Posiadam dokładnie ten model wyświetlacza https://kamami.pl/wyswietlacze-oled-graficzne/560775-wyswietlacz-oled-waveshare-096-cala-a.html Chcę połączyć się z nim poprzez i2c i móc wyświetlać na nim tekst czy też figury. Mój kod wygląda aktualnie tak: /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "ssd1306.h" #include "test.h" #include "fonts.h" /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_I2C1_Init(void); /* USER CODE BEGIN PFP */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_I2C1_Init(); /* USER CODE BEGIN 2 */ SSD1306_Init(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ SSD1306_Clear(); SSD1306_GotoXY(5, 0); // coordinates x, y SSD1306_Puts("Hello", &Font_11x18, 1); // print Hello SSD1306_GotoXY(0, 24); // coordinates x, y SSD1306_Puts("ssd1306 OLED", &Font_7x10, 1); SSD1306_GotoXY(0, 40); // coordinates x, y SSD1306_Puts("display!", &Font_11x18, 1); SSD1306_UpdateScreen(); // update screen HAL_Delay(10000); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } Bazuje on głównie na poradnikach znalezionych w internecie. Nie jest zbyt skomplikowany, a jednak wyświetlacz w ogóle nie reaguje. Może ktoś ma pomysł co z tym zrobić lub doświadczenie w podobnym przypadku?
  2. Płytki nowe, oryginalnie zapakowane, kupione do projektu na który nie miałem ostatecznie czasu. - Nucleo-32 STM32L412 (2sztuki) - 45zł/szt https://allegrolokalnie.pl/oferta/zestaw-rozwojowy-edukacyjny-nucleo-32-stm32l412 - Nucleo-144 STM32F439 (2 sztuki) - 120zl/szt https://allegrolokalnie.pl/oferta/zestaw-rozwojowy-edukacyjny-nucleo-144-stm32f439 - Raspberry Pi 3 model A+ (2 sztuki) - 105zł/szt https://allegrolokalnie.pl/oferta/raspberry-pi-3-model-a - Raspberry Pi 3 model B+ (3 sztuki)- 165zł/szt https://allegrolokalnie.pl/oferta/raspberry-pi-3-model-b-5zj Ceny do małej negocjacji. Wysyłka - paczkomat 12 zł lub kurier 15 zł/za pobraniem 20zł
  3. Cześć, Mam problem z płytką nucleo64 f411re. Dziś zainstalowałem CubeIDE, porobiłem jakieś podstawowe rzeczy, pomrugałem diodą, użyłem przycisku itd. Chciałem dalej sie bawić lecz nagle przy wgrywaniu kodu z obsługą pwmu wyskoczył komunikat: "failed to execute MI command" Wszystko widać na screenie. Nie jest to raczej wina programu, bo cube jest na domyślnych ustawieniach i nawet wgranie "pustego" programu kończy się tym błędem. Próbowałem na innym kompie na świeżo zainstalowanym cube i ten sam problem. Znaczy to tyle, że to wina płytki. Nie wiem tylko od czego zacząć, co zrobić by zaczęło działać. Proszę o pomoc.
  4. Witam, chciałbym się dowiedzieć w jaki sposób podłączyć zasilanie do STM32F4 Discovery, aby móc zasilić dołączony do płytki laserowy czujnik odległości Tfmini plus lidar, który potrzebuje zasilania 5V?
  5. Witajcie Realizuję komunikację pomiędzy mikroprocesorem STM32F411RE (NUCLEO) a modułem SIM800L. Wykorzystuję do tego interfejs UART. Inicjalizuję go poprzez bibliotekę HAL'a. Samą wymianę danych postanowiłem zrobić ręcznie, odwołując się bezpośrednio do rejestrów UART. Poniżej funkcja inicjalizacyjna: void uart_init(uint32_t baud) { uart_gpio.Pin = GPIO_PIN_9 | GPIO_PIN_10; //TX RX uart_gpio.Mode = GPIO_MODE_AF_PP; uart_gpio.Alternate = GPIO_AF7_USART1; uart_gpio.Speed = GPIO_SPEED_HIGH; uart_gpio.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA,&uart_gpio); usart.Instance = USART1; usart.Init.BaudRate = baud; usart.Init.Parity = USART_PARITY_NONE; usart.Init.StopBits = USART_STOPBITS_1; usart.Init.WordLength = USART_WORDLENGTH_8B; usart.Init.Mode = USART_MODE_TX_RX; HAL_USART_Init(&usart); } Sama komunikacja odbywa się w funkcji "sim_reception", w przerwaniu od timera mikroprocesora. #define SIM_TX_BUF_SIZE 32 #define SIM_RX_BUF_SIZE 32 volatile unsigned char sim_tx_buf[SIM_TX_BUF_SIZE]; volatile unsigned char sim_rx_buf[SIM_RX_BUF_SIZE]; volatile unsigned char sim_tx_len = 0; volatile unsigned char sim_rx_len = 0; enum { handshake, hdsh_resp }; volatile uint8_t sim_states = handshake; #define SIM_HNDSHK "AT\r\n" void sim_reception(void) { //RX //if Receiver not empty flag is set and we have space in rx buffer, we read byte while(USART1 -> SR & USART_SR_RXNE) { if(sim_rx_len < SIM_RX_BUF_SIZE) sim_rx_buf[sim_rx_len++] = USART1 -> DR; //after reading byte we increment buffer length else break; } //TX //if Transmitter empty flag is set and we have data in tx buffer, we send byte while(USART1 -> SR & USART_SR_TXE) { if(sim_tx_len != 0) { USART1 -> DR = sim_tx_buf[0];//send one byte sim_byte_up(sim_tx_buf); //shift one byte up } else break; } switch(sim_states) { case handshake: sim_tx_buf_put(SIM_HNDSHK); sim_states = hdsh_resp; break; case hdsh_resp: break; default: sim_states = handshake; break; } } Na razie chcę wysłać tylko jedno polecenie i odczytać odpowiedź modułu SIM800L. Krótko opiszę nadawanie, które działa bez zarzutu. Wywołuję funkcję "sim_tx_buf_put", która napełnia bufor komendą "SIM_HNDSHK", zdefiniowaną wyżej za pomocą #define. Funkcja bada ile miejsca mamy w buforze i czy wystarczy go jeszcze dla nowego polecenia. Jeśli tak to wstawia je bajt po bajcie i zwiększa odpowiednio zmnienną "sim_tx_len". Nie będe wstawiał kodu tej funkcji, ponieważ działa ona bardzo dobrze, nie mam z nią problemu. Wyżej w kodzie widać, że jest badany stan flagi "Transmitter Empty", gdy się ona pojawi i w buforze Tx są dane przystępuje się do wysyłania danych bajt po bajcie. Po każdym wysłanym bajcie wywoływana jest funkcja "sim_byte_up", która przesuwa bajty bufora "o jeden w górę", czyli sim_tx_buf[0] = sim_tx_buf[1], sim_tx_buf[1] = sim_tx_buf[2] itd. oraz zmniejsza wartość "sim_tx_len" o jeden, następnie wysyłany jest kolejny bajt i tak do opróżnienia bufora. Nadajnik działa jak należy, co pokazuje screenshot z analizatora stanów logicznych. Po wysłaniu wiadomości "AT\r\n" moduł SIM800L odsyła odpowiedź. Zatem flaga "Receiver Not Empty" powinna zostać aktywowana, bufor Rx jest pusty, tak więc coś powinno zostać zapisane w buforze. Jednak nic takiego się nie dzieje. Screenshoty z debugowania. W buforze Rx pojawia się tylko jeden bajt o wartości 127. Dalszych procedur odbioru nawet nie opracowałem, bo skoro w buforze odbiorczym nic nie ma... Nie bardzo wiem z czym jest związany ten problem, próbowałem wyprowadzić Tx i Rx we wszystkich możliwych konfiguracjach, jednak zawsze jest tak samo, nadajnik wysyła bez żadnego problemu a odbiornik nie może nic odczytać. Jeśli ktoś ma jakiś pomysł co może być przyczyną problemu i jak to rozwiązać to byłbym bardzo wdzięczny za pomoc 😉 Pozdrawiam mw
  6. Dzień Dobry, Piszę w związku z dość nietypowym pytaniem - czy możliwe jest spalenie mikrokontrolera poprzez próbę nadania "za dużego" sygnału sinusoidalnego na jednym z pinów? Dokładnie chodzi o to, że skonfigurowałem odpowiedni pin w swojej płytce (pin PA4, SMTM32F429ZIT6) aby móc wysłać sygnał sinusoidalny na rampie (w celu odpowiedniego zasilania lasera). Płytkę kilkukrotnie podłączałem na oscyloskop aby móc podejrzeć ten sygnał i nic złego się nie działo, aż pewnego razu 3-4 sekundy po podłączeniu płytki do zasilania przestała ona świecić i stała się niewykrywalna przez komputer na każdym wejściu USB. WIem, że gdybym próbował podać za duże napięcie z jakiegoś zewnętrzengo urządzenia na jakiś pin to na pewno mógłbym spalić płytkę, ale czy próba generacji podobnego sygnału jak wspomniałem wyżej również mogła spowodować uszkodzenie? Czy może przyczyną mogło się okazać coś innego?
  7. Dzień dobry, Posiadam mikrokontroler STM32F429ZIT6. Potrzebuję wygenerować sygnał sinusoidalny o zadanej częstotliwości oraz amplitudzie na jednym z pinów, tak aby podłączony zewnętrzy układ (laser) zaświecił się. Jeżeli chodzi o kwestie elektroniki i jej programowania jestem całkowicie zielony. Staram się posiłkować kursem odnośnie STM32F4, który jest dostępny na forum, lecz niewiele mi to rozjaśnia. O ile dobrze rozumiem przy pomocy PWM jestem w stanie wygenerować sygnał, ale prostokątny. Czy jest jakaś możliwość, aby móc zrobić z niego sygnał sinusoidalny? A jeżeli nie, w jaki sposób mógłbym tego dokonać? Druga sprawa, to taka, że potrzebuję odebrać sygnał (w tym przypadku zmierzyć napięcie) z zewnętrzengo czujnika, który również chcę podłączyć do któregoś z pinów. Tutaj powinienem skonfigurować odpowiedni pin na ADC zgadza się? Bardzo prosiłbym o udzielenie pomocy, z góry dziękuję!
  8. Witam, Ostatnio zauważyłem problem podczas wgrywania programu dla mikrokontrolera STM32F429. Problem objawia się następująco: -Tworzę nowy projekt -> zapisuje, builduje, (nie ma błędów) -> wgrywam program poprzez Utility (wybierając plik z rozszerzeniem HEX) -> działa. - Biorę ten sam projekt i wprowadzam pewne modyfikacje (np. zmieniam częstotliwość w CUBE, wybieram inny pin itp, generalnie drobne zmiany) -> zapisuje, builduje (nie ma błędów) -> wgrywam, i niestety bez powodzenia. Załączam screena z Utility po nieudanej próbie wgrania kodu. Doszedłem do tego, że raczej wina leży po stronie Workbencha i niepoprawnie utworzonego pliku z rozszerzeniem HEX (plik ten jest praktycznie pusty, sprawdziałem go notatnikiem), ponieważ gdy chcę wgrać inny projekt wówczas wszystko działa poprawnie. Próbowałem odinstalować oprogramowanie i zainstalować od nowa. Nie pomogło. Czy ktoś spotkał się z czymś takim?
  9. Witam, posiadam płytkę STM32F407G-DISC1. Celem mojego projektu jest stworzenie programu, który będzie inkrementował pewną zmienną z losowym czasem. Wartość średnia tego czasu będzie zadawana z potencjometru, odchylenie standardowe będzie proporcjonalne do wartości średniej. Jestem początkującym w programowaniu mikrokontrolerów i próbowałem to rozwiązać za pomocą aktualizacji prescalera dla timera lecz to chyba nie jest właściwie rozwiązanie. Czy ktoś z forumowiczów posiada wiedzę jak coś takiego zrobić?
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.