Czy są jakies wady takiego zapisu w porównaniu do poczciwego eeproma? Kasować można tylko całą stronę, więc jeśli często uaktualniasz małe fragmenty to stosuje się metodę emulacji EEPROMu opisaną choćby w notach aplikacyjnych od ST.
Proszę bardzo.
Z kodu wynika pewna ciekawa rzecz... Otóż z tego co widzę stos znajduje się... w środku sekcji .bss - nie wiem czy to normalne, ale nie sądzę... 4\/3!!
Żeby był dostęp bez opóźnień z wielu źródeł. (CPU/DMA/...) CPU nie musi czekać na SRAM1 kiedy DMA zajmuje się SRAM2. Do pamięci CCM ma dostęp tylko CPU. Jest to pamięć tylko na dane.
zepsuta pamięć
Witam Rozumiem, że chcesz aby cały kod wynikowy został umieszczony w pamięci RAM. Żeby tego dokonać należy zmienić adres sekcji ROM w skrypcie linkera: "rom (rx): org = 0x08000000, len = 128k" na pamięć RAM(zaczyna się od adresu 0x20000000 dla stm32). Pamięć RAM również należy przesunąć o odpowiedni adres. Jeżeli masz w kodzie przerwania to nie zapomnij...
No to wyjątkowo słabo tą dokumentację przeglądałeś (; Na pierwszej stronie manuala masz coś takiego: For information on programming, erasing and protection of the internal Flash memory please refer to: ● PM0075, the Flash programming manual for low-, medium- high-density and connectivity line STM32F10xxx devices ● PM0068, the Flash programming...
Nie piszesz o Cortex-M, a o STM32 - popraw temat. U innych producentów uC wygląda to zupełnie inaczej. Pamięć spod adresu 0x08000000 w normalnym trybie pracy STM32 zostaje odwzorowana również pod adresem 0 - jest dostępna do odczytu (tylko) pod dwoma adresami.
Być może, że twoje opóźnienie wcale nie jest takie jak myślisz (skoro 3ms to typowy czas to 5ms spokojnie powinno wystarczyć). Zauważ, że jeśli zapisujesz pierwszą stronę to kolejną możesz zapisać jeśli wysłanie control byte zwróci ACK jeśli nie to pamięć jest zajęta i należy ponownie wysłać start i control byte. Co jeśli najpierw zapiszesz druga stronę...
Ale... float to przecież bity w pamięci! To co one przedstawiają, powinno cię mało obchodzić, gdy chcesz to zapisać w pamięć nie ulotną... Jeśli float ma 4 bajty (a chyba ma), to wystarczy dobrać się do tych czterech bajtów intem... [syntax=C] float ulamek=54.75701; unsigned int *ple=(unsigned int*)&ulamek; ZapiszZmienną([adres],*ple); //tu wlasnie...
//wlaczenie opoznienia FLASH FLASH ->ACR |= (FLASH_ACR_LATENCY_1); Dla częstotliwości 72 MHz, żeby pamięć Flash działała musisz ustawić jej dwa cykle opóźnienia a nie jeden.
Zacznijmy od tego, że OpenOCD nie uruchamia się poprawie, wiec warto byłoby dochodzić do sprawy "krok po kroku". Przede wszystkim plik lpc2xxx.cfg NIE JEST przeznaczony do uruchamiania bezpośredniego, należy ZAWSZE użyć któregoś z konkretnych plików. Tymczasowo możesz użyć pliku lpc2148.cfg, ale najlepiej przerób go sobie na lpc2146 - komentarze w środku...
bez apelacyjne operator extern powinno się tam znaleźć. To zleży jak przebiega proces kompilacji. Jeżeli kompilujemy wszystkie pliki na raz to w sumie ta dyrektywa o której wspominasz działa tak jak oczekujesz i rzeczywiście zmienna jest zadeklarowana tylko raz. Natomiast jak kompilujemy każdy plik źródłowy osobno do postaci pośredniej i później linkujemy...
Zainstaluj STLink utility. W jego opcjach wybierzesz connect under reset, i skasuj pamięć procesora. Program popraw. I miłej zabawy życzę.
Witam, podłączyłem kość pamięci 23K256 do SPI3 układu STM32F107. Procedura konfiguracji SPI: void RAM_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Perip... , ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Perip...
OMG, ale po co ładujesz wciąż plik .bin... Załaduj po prostu plik .hex czy .elf - parametr offset nie ma wtedy żadnego znaczenia (jest ignorowany), bo pliki te zawierają adresy. Co do parametru "unlock" - jeśli masz układ z zablokowaną pamięcią, to ta komenda nie zadziała zawsze - jak widzisz - w niektórych układach po odblokowaniu pamięci konieczny...
Cześć, W wolnym czasie uczę się układów STM32 na płytce STM32_Smart_v2 (https://stm32-base.org/boards/STM32F103... Próbuję uruchomić pamięć eeprom, która jest na tej płytce na podstawie kursu (https://forbot.pl/blog/kurs-stm32-11-i2... Niestety program nie działa - funkcja I2C_EVENT zwraca error....
To trzeba w linkerze dopisać jeszcze jedną pamięć ?
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
Mogę się mylić ale ten STM32 raczej nie da rady... Ma mniej więcej 2 razy za mało RAM'u, żeby zbuforować jeden wyświetlony obraz... Dla TouchGFX typowa konfiguracja to pamięć QSPI + zewnętrzny SRAM/SDRAM + RTOS. Bez TouchGFX myślę, że da się to zrobić, kosztem braku animacji, przejść i innych bajerów.
To od razu zapytam, czy przy STM32F103VC można obsłużyć pamięć nand flash?
o super. Jak to teraz podłączyć i uruchomić pod jakiegoś AVRa? Się uparłeś z tymi AVRami :) Naprawdę, jeśli masz wypasionego ARMa, to dodanie AVR niczemu nie służy. Co innego, gdyby projekt dało się całkowicie zrealizować na AVR. Ale konkretnie - wybierz AVR z magistralą pamięci zewnętrznej, z klasycznych AVR to masz jakieś ATMega128 lub nowsze serie....
Witam. Zaopatrzyłem się niedawno w aplikację zwaną Flash loader demonstrator. Umożliwia ona m.in. zapis i odczyt pamięci programu mikrokontrolera STM32 przez bootloader poprzez RS232. Gdy chciałem odczytać pamięć flash i zapisać obraz pamięci w pliku hex mocno się zdziwiłem, gdyż plik miał rozmiar 319744 bajtów, a flash mojego STM32F103RB ma "tylko"...
Moim zdaniem nie jest to wina kompilatora. Powinieneś sprawdzić rozmiar sterty, ponieważ funkcja malloc właśnie w tym obszarze rezerwuje pamięć.
Witam. Mikrokontrolery STM32 mają w sobie embedded flash memory. Jest to pamięć EEPROM, NAND Flash czy NOR Flash? Nie znalazłem tego w manualu.
Tak, jestem 100% pewien bo sobie porobiłem debugger na wyświetlaczu LCD. To jest kod: [syntax=c]#include <stdint.h> #include <string.h> #include "stm32f10x_map.h" #include "LCD.h" #include "Init.h" #include "RESET_SYSTEM.h" #include "FLASH.h" int i = 0; uint32_t useroptionbyte = 0, WRPR = 0; int main(void) { rcc_init(); //RCC init włączający...
Ponieważ systemy są wielozadanione i program nie jest sam. Dodatkowo jest pamięć wirtualna.
Widać, że coś się odczytało i jest czysta pamięć. Nowy układ nie będzie zabezpieczony przed odczytem. A jeszcze dopytam, z tego starego STM32 zero szans żeby coś odczytać? Jedyne co o nim wiem że robi zwarcie pomiędzy 3.3V a GND. Jeżeli jakiś np. port jest uszkodzony nie oznacza to, że na 100% rdzeń się uszkodził i interfejs do pamięci flash również....
W skrypcie linkera masz zadeklarowaną zbyt małą pamięć. 4\/3!!
Jest to płytka STM32F103RB NUCLEO. Podpięcie pinu BOOT0 pod masę nic nie daje nadal program zanika Sprawdziłem pamięć flash poprzez STM32 ST-LINK Utility i jest w niej program aczkolwiek nie działa http://obrazki.elektroda.pl/5116944600_1... Dodam jeszcze, iż kiedy połączę się płytką w STM32 ST-LINK Utility to wciśnięcie przycisku reset...
Nie mogę sobie poradzić z odczytem pamięci która jest podpięta pod stm32discovery. Funkcja którą mam odczytuje jedynie 1 stronę z pamięci NAND. Patrzyłem na przykłady które są dołączone do stlink utylity lecz przykładu do NAND nie znalazłem. Może ktoś posiada źródła do przykładu z kością NAND512W3A lub podpowie co dodać do mojej funkcji żeby czytała...
Witam. Mam odbiornik SDR Radio "Malachit". Chcę do niego uzyskać pełne autorskie oprogramowanie. Instalacja najnowszego firmware za pomocą STM32CubeProgrammer 2.6.0. przebiegła normalnie. Jednak radio nie do końca działa jak powinno. Muszę wrócić do wersji testowej firmware. Przedtem jednak trzeba "wyczyścić" pamięć FRAM urządzenia dedykowanym oprogramowaniem...
Ja w takich przypadkach stosuję metodę którą na swoje potrzeby nazwałem "split objects". Obiekt u mnie składa się po prostu z dwóch części - stałej i zmiennej. Zwykle "główny" obiekt jest stały, a ten "zmienny" fragment jest podrzędny, jednak są sytuacje w których robię to odwrotnie, głównie wynikające z polimorfizmu lub dlatego że łatwiej/lepiej jest...
Witajcie, właśnie się bawię pamięcią Flash w STM32F0DISCOVERY (chcę się nauczyć obsługi). Efekt? Chyba zablokowałem możliwość zapisu... Kod (dopiero się uczę, więc komentarze mogą zawierać błędy): [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" int main(void) { RCC -> AHBENR |= RCC_AHBENR_GPIOCEN;//LEDY GPIOC -> MODER |= GPIO_MODER_MODER8_0...
https://obrazki.elektroda.pl/2759406900_... 8-bitowe mikrokontrolery nadal można znaleźć w wielu projektach, ale dzięki nowemu, niedrogiemu 32-bitowemu z rdzeniem AMR Cortex-M0+ taktowanym 48 MHz — STM32C0 — firma STMicroelectronics dąży do wyparcia 8-bitowych jednostek. Co może się odbyć wskutek: „ograniczonego wpływu...
Tadzik85: Wygląda na to, że dziechu zmierzył dokładnie to, o co chodziło, a wyszło mu to, co przewidywałem. Ten sam kod (taka sama sekwencja instrukcji), piszący raz do bitband, drugi raz do tego samego rejestru/komórki ale przez zwykły dostęp - zapis 32-bitowy. Na zdrowy rozsądek - pamięć w mikrokontrolerze nie może mieć dostępu bitowego sama z siebie...
Tutaj udokumentuję moją podróż z tanią płytką deweloperską / hobbystyczną STM32F103C8T6 "blue pill" zakupioną w Ali Express. Pomimo układu scalonego oznaczonego jako "STM32F103C8T6", wewnętrzna pamięć flash wydaje się mieć 128k zamiast 64k, co czyni go bardziej podobnym do STM32F103CBT6. Wydaje się, że nie jest to nieoczekiwane w przypadku podróbek/klonów...
pamięć wirtualna Pamięć wirtualna bez MMU? Niezłe wyzwanie.
To, że tam jest podłączone 8 MHz, to nie znaczy, że z taką częstotliwością pracuje, tym bardziej że bez podkręcania STM32F405 działa do 168 MHz. Racja, czyli... jeszcze gorzej. Przejrzałem źródła i rzeczywiście STM32 w tym projekcie pracuje z taktowaniem 168MHz. Wiem, że takie emulatory pamięci ROM w 8-bitowcach od biedy dają radę (oczywiście STM32...
Wykrywanie przez system programatora ST-Link jako dysk wymienny jest poprawne. Taki pytanie czy program demonstracyjny działa poprawnie, przełączanie diody zielonej na niebieską przy wciśnięciu przycisku USER?
Z nagrywaniem jest kwestia "na co?" - ale to zależy od tego, czego użyjesz. Można programowo wygenerować wzorce sygnałów, jakie są potrzebne, i na jakimś Pi odczytywać z karty SD (czy mikroSD - różne bywają tam gniazda na kartę) odpowiednie wzorce i puszczać je na pin, który będzie połączony z wejściem wzmacniacza. Na każdy sygnał trzeba będzie ze 200kB,...
1) Czy dla zmiennych o rozmiarze poniżej 32bity zawsze przydzielane jest 4 bajtowy rozmiar pamięci? To nie ma nic wspólnego z 32 bitami :) Masz wyrównywane adresy do 4 bajtów, dlatego kompilator dodał Ci w środku tablicę 3 bajtową. Jeżeli chcesz żeby taka struktura miała 9 bajtów to musisz jej nadać atrybut packed. 2) Czy stosowanie zmiennej 8 bitowej...
Może pamięć się "zalock'owała" (ustawiły się przypadkiem flagi "option bytes") ? Mnie się to zdarzyło wielokrotnie. Do unlock'owania procesorów STM32 używam programatora J-Link i oprogramowania z firmy SEGGER a konkretnie "JLinkSTM32.exe". Jest to specjalnie napisany program do takich właśnie sytuacji. W ST-Linku powinien pomóc Masss Erase z programu...
Może źle wgrywasz swoje programy? Nie znam konkretnie tych procesorów, ale np. w STM32 trzeba ustawić pamięć, do której ma być załadowany program? Próbowałeś modyfikacji przykładu i wgrywanie spod tego samego projektu? Może stale masz wskazany do wgrania stary plik wsadowy?
Przeczytaj sobie np ten temat: http://www.elektroda.pl/rtvforum/topic17... Od siebie napiszę tylko tyle, że jak porównasz kody bez bilioteki ze źródłem biblioteki to zauważysz jedną rzecz: coś co często można zrobić w dwóch linijkach (konfiguracja) tam jest robione w dwustu. Jest tam mnóstwo niepotrzebnych obliczeń do sprawdzania jaki bit gdzie...
Znalazłem informację, że gwarantowana ilość zapisów to 1000. A nie wiem ile wcześniej była zapisywana ta pamięć. Jakie komendy powinny być ?
Connect under reset, reset: hardware, reset after connect, SWD (a nie JTAG), częStotliwość poniżej 1 MHz i musi zadziałać. Możesz jeszcze spróbować nacisnąć guzik reset podczas łączenia. I ZAWSZE zachowuj funkcję SWD na obu nogach (AF0), nie ustawiaj ich jako GPIO ani nic innego. Spróbuj zrobić to pod Keil MDK-ARM (przynajmniej skasować pamięć).
Przydałoby się jeszcze 2 rzeczy: 1. zmniejszyć FLASH o odpowiednią wartość, tak aby na siebie nie najeżdżały - możesz od LENGTH odjąć ile tam potrzeba ... LENGTH = 128k - XXX 2. Dodać profilaktycznie } > VAR AT > VAR Tym sposobem skrypt linkera będzie w 100% poprawny. Jeśli nadal będą jakieś błędy, to już nie po stronie linkera. Jeśli dalej coś nie...
Ja mam tak: __attribute__ ((section(".bootloader&... int program_page(unsigned short *data, unsigned int adr) {... } i linker: .bootloader 0x08000000+128K-1K : { *(.bootloader) } i działa
Pytanie 1 - dlaczego uważasz kolego, że jest Ci niezbędny większy RAM Pytanie 2 - dlaczego nie użyjesz mikroprocesora z obsługą zewnętrznej pamięci - czyli od Mega64 wzwyż. Pytanie 3 - dlaczego nie użyjesz mikroprocesora z większą pamięcią wbudowaną na innej architekturze (np. ARMowe LPC, STM32)
W przypadku wciągnięcia śmieci ze zmiennej automatycznej dostajemy przewaznie, kolokwialnie mowiac, syf, nie zero. To samo dotyczy nie zainicjalizowanego statica w funkcji. Już to przerabiałem z powodu 'zapomnienia' zainicjalizować strukturki do liczenia CRC. Problem polega jedynie na pomyleniu adresu zmiennej / rejestru z ich zawartością. Oj polega....
Dziękuję Panowie za pomoc. Opcja z podaniem "1" na Boot0 zadziałała, można wtedy wyczyścić pamięć przy pomocy jtaga.
A jeśli chciałbym mój program wgrać do RAM to musiałbym w tym Twoim skrypcie linkera dla sekcji np .text zamiast > rom AT > rom wpisać > ram AT > ram czy wewnątrz {} tez trzeba coś zmieniać? Jeśli wystarczy Ci, że program będzie działał jedynie przez debugger, to wystarczy ta pierwsza opcja. Jeśli byś chciał, żeby program normalnie działał z RAM, to...
To jest tzw. bluepill i wszystkie opisy, które się go tyczą pasują. Zworki, w dużym uproszczeniu, służą do wyboru bootloatera. Masz wgrany jakiś soft, który emuluje pamięć masową. Ja zawsze używam ST-Link'a, nie korzystam z bootloaderów, ale można wgrywać przez port szeregowy, jak i USB (ale musisz mieć wcześniej wgrany jakiś niestandardowy bootloader,...
Tak, da się. Zgrana pamięć ma niektóre komórki pamięci wykasowane (ustawione 0xFFFFFFFF)...
To bardzo proste i opisane w DSie. Są rózne tryby. Możesz podłączyć tylko 8 linii danych i wtedy musisz odczytywać po jednym bajcie aby oczytać całe słowo z pamięci (16 bitów). Wtedy używasz trybu 2 Możesz podłączyć tylko 16 linii danych odczytujesz całe słowo z pamięci (16 bitów). Wtedy używasz trybu 1 Analogicznie jest z trybami pisania - których...
Tak jak napisałem jeżeli nie implementujesz MSD przez USB to nie ma sensu. Inaczej robisz sobie na około. Pozdrawiam
Wg dokumentacji MINIMALNA wytrzymałość pamięci w STM32 to 10k cykli. Jest taki jeden wyjątek: STM32F030 Można zerknąć np. do datasheeta (DM00088500), tabela 38. Miałem zabawną dyskusję z przedstawicielem producenta: Ja: Czemu ST daje tu gorszą pamięć? PP: Ta pamięć nie jest gorsza, niż w innych STM32, po prostu jest mniej testowana i dlatego producent...
Jeśli zmiana rozmiaru buforów powoduje że program przestaje działać oznacza to że prawdopodobnie kończy się pamięć na stosie. Kilka rozwiązań jest. 1. zwiększyć stos 2. zdefiniować bufory jako static albo zmienne globalne wtedy nie trafią na stos 3. jeżeli idea projektu na to pozwala podzielić odczyt na mniejsze paczki i zapisywać po trochu(używając...
o ile pamięć mnie nie myli to jest tam pole lfname
... czy da sie to zrobić jakoś wydajniej? Bo w tym przypadku dla każdej ikony tworzę oddzielna funkcję, która różni się tylko tablicą. Napisz jedną funkcję do wyświetlania z parametrami. Funkcję tę uruchom z RAM'u. Kompilator i tak rozmieści "liniowo" tę dwuwymiarową tablicę więc możesz używać wskaźnika zrzutowanego na "u16". Jakbyś nie zrobił (wskaźniki...
Witam! Zbieram informacje na temat obsługi dużych kart pamięci >16gb przez mikrokontroler. Są to oczywiście w tym momencie jedynie wolne przemyślenia. Do tej pory rzuciły mi się w oczy jedynie dwie karty warte uwagi: - SDXC - mam stosunkowo niewiele informacji na ten temat. Obsługa przez SPI (za wolny - przydałoby się chociaż 1mb/s), UHS (o tym nie...
1. W Debug Configuration zamień DBG (DSF) na Standard DBG (na samym dole). 2. W Startup, w pierwszym okienku, wpisz reset halt (razem!). 3. Wywal komendę exit. 4. Odblokowałeś pamięć FLASH STM32?
Odkryłem, że zawsze podczas używania wskaźnika do zapisu adresy: [syntax=c]*( volatile uint8_t * )( Bank2 | Address ) = x;[/syntax] np. podczas próby zapisu do pamięci uC się zawiesza. Chciał się zapytać co może być przyczyną tego zjawiska ? A może bym wymienił pamięć na nową ?
Ależ jest i to znacznie lepszy mechanizm bo zabezpieczyć procesor można zarówno programatorem jak i z poziomu programu a odbezpieczenie wymaga skasowania całej pamięci i odblokowanie nie nastąpi do momentu kiedy cała pamięć nie będzie wykasowana (algorytm sprawdza wszystkie komórki - zabezpieczenie przed trikiem z wyłączeniem zasilania po rozpoczęciu...
Ostatnia rzecz jaka przychodzi mi do głowy, to zabezpieczenie pamięci przed zapisem. Do odbezpieczenia może być konieczne ustawienie pinu WP w stan wysoki, po czym zapisanie do rejestru statusu (instrukcja WRSR) wartości 0x00 (cała pamięć odbezpieczona, brak zabezpieczenia rejestru statusu pinem WP) [zapis musi być poprzedzony przez WREN]. Innych firmwareowych...
Ale chyba Arduino nie ma USB, tylko zainstalowany port szeregowy na USB (może jeszcze kwestia, który model, ale Arduino Nano na pewno) - podłączenie do komputera Arduino przez USB to podłączenie portu szeregowego i komunikacja z Arduino poprzez ten port - komputer nie może "zobaczyć" Arduino jako pendrive-a. Natomiast można to zrobić z STM32F103C8T6...
ARM to zarówno układy z 4kB ramu pracujące na 20MHz jak i wielordzeniowe specjalizowane układy w telefonach komórkowych obsługujące pamięć DDR i taktowane gigahercami. STM32 znajdują się bliżej tych pierwszych niż tych drugich. 4\/3!!
Najtaniej : STM32 z magistralą zewnętrznej pamięci + podstawka pod pamięć podłączona do tejże magistrali + klon jLinka + oprogramowanie jFlash. Kilka lat w ten sposób programowałem różne pamięci serii S29GL. Teraz przerzuciłem się na BX48 Batronixa, ale to droga zabawka a te tanie nie koniecznie chcą programować S29GL.
Nie da się - STM32 z zewnętrzną magistralą do podłaczenia pamięci dopiero mają wejść do produkcji w tym roku...
Właśnie generacji z Excel'a chciałem uniknąć bo jak napisałem będzie to nie wygodne przy dużej liczbie elementów tablicy. Musi być wyliczony cały sinus ponieważ operacje które muszą się wykonać jak najszybciej. Jak na razie zostaje tylko Excel. Bądź Pan Pro-Inżynier, użyj Pan fid = mopen('probki.c', 'w'); if (fid == -1) error("upss...
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
Flash musisz kasować blokami, to nie działa jak EEPROM, że możesz skasować pojedynczą komórkę. Gdzieś widziałem przykład emulacji pamięci EEPROM za pomocą pamięci flash... O, już wiem, w książce p. Lucjana Bryndzy o ARMach 9 jest przykład, który wykorzystuje 2 bloki pamięci flash. Jest tam zrobione wirtualne adresowanie itp. Ale można zrobić też tak,...
Ten element stabilizuje napięcie 3,3V dla STM32, pamięci i inne - na pozostałe pewnie napięcie prosto z zasilacza.
1. W jakim formacie jest skompilowany jest twój program? elf, bin, hex ? 2. Pochwal się nam swoim skryptem debuggera - robisz to przez telnet czy jak? Jakich poleceń używasz do programowania i debugowania? Jak używasz pliku gdb.ini to pokaż go nam. Twój program najwidoczniej ma za duże zapotrzebowanie na pamięć.
Po prostu źle skonfigurowałeś pamięć - pewnie wynika to z niechęci do czytania RM-ów.
Tutaj chodzi o sygnał audio, zwyklą muzykę. Chcę z tych 24 bitów zrobić 16 bitów bo taką mam pamięć SRAM. Potem ten sygnał będzie "domiksowany" do sygnału głównego, 24-bitowego. Jak z tą kompresją czy nieliniowością?
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. A mółbyś tę myśl rozwinąć? Czy stos ma wielkosć nieznaną bo nie rozumiem.
W25Nxxx to zwykła pamięć SPI/qSPI kompatybilna z pamięciami 25xx. Możesz zaprogramować dowolnym programatorem który obsługuje pamięci o rozmiarze 1Gbit, wybierasz dowolny numer kostki o takiej pojemności i wyłączasz opcje sprawdzania ID. W miare tani programator do spi-flashy to program flashrom + jakikolwiek adapter, np serprog https://github.com/dword1511/stm32-vserp...
Stos, pamięć, kto to wie? Raczej HAL-a nikt nie będzie debugował. Takie podmianki część plików stąd część nie wiadomo skąd - raczej nigdy nie działają. Zrób sobie projekt z Cube i zaimportuj. Nie sądze abyś miał problemy. Albo napisz sobie to samo na rejestrach i zobacz. Praca na 10 minut.
Pytanie czy analogowy oscyloskop sie nadaje do takich rzeczy? Sygnał i2c nie jest okresowy, więc na analogowym oscyloskopie wyświetlać się będzie właśnie to, co widzisz. Chyba, że ma pamięć. Możesz ewentualnie użyć zewnętrznej synchronizacji, generując specjalnie w tym celu impuls przed rozpoczęciem transmisji na dodatkowym pinie i korzystając z odpowiednio...
Uruchomiłem kod, który wkleiłeś. Dopisałem tylko definicje dla Bank_NAND_ADDR ( 0x70000000 ), CMD_AREA ( 0x00010000 ), ADDR_AREA ( 0x00020000 ) i DATA_AREA ( 0x00000000 ). W funkcji FSMC_NAND_ReadID() pominąłem zapis do struktury i odczytuję zmienną data - mam w niej prawidłowe dane. Dodano po 8 Może nie włączyłeś taktowania dla FSMC? Ja mam to w innej...
Tak spytam przy okazji poza tematem - w STM32 chyba nie ma sensu dla oszczędności stosować uint8_t czy uint16_t bo chyba i tak zawsze rezerwuje całą komórkę 32 bity Chyba pamięć jest zorganizowana co 8bitow i jest możliwość zapisywania bez data alignment. Jest chyba możliwość zapisu pamięci: word, half-word, byte.
programem dla STM, jest to tylko i wyłącznie definiowanie pinów No... nie tylko :) usbserial zamiast serial do debug przez usb (bo większość arduino ma konwertery bądź atmegi u jako konwertery), mamy z reguły kilka i2c, uart, spi (a do tego alternatywne piny). Nie ma eeprom. I jak dobrze kojarzę tylko PB są 5V tolerant co i tak jest lepsze niż SAMD21...
Witam Odbierając dane w stm32 nie udało mi się zgubić żadnej danej nawet jak dam po każdym odebranej ramce 50ms Delay na testy. Max Transmisja jaką miałem to 4Mbit Akurat używam TCP to przesyłania programu wykonywalnego do STM32. Mam telegramy które wysyłam z PC do STM32 a on na nie odpowiada. Zapytania i odwiedź mam na jednym porcie Chciałem teraz...
Jest napisane: ustaw PSIZE na 32 bity. To wpływa na sposób i czas zapisu i nie ma nic wspólnego z organizacją pamięci. W F4 pamięć zapisuje się w słowach 32-bitowych - zrzutuj wskaźnik na uint32_t na tę tablicę i zapisuj po 32 bity.
no ale flash też jest w ROMie (czy aby na pewno jest to pamięć niezapisywalna - wolałbym aby było inaczej ale jak się nie da to trudno)
Witam! Chcę wgrać parę danych do pamięci mikrokontrolera STM32F107 (ustawienia domyślne). Nie wiem za bardzo jak powinien wyglądać kod linkera do takiego zapisu? Korzystam z CodeSourcery ze strony Freddiego. Nie posiadam debuggera, więc kod mogę wgrywać tylko poprzez bootloader na USART. Pamięć chciałbym zapisać paroma danymi 32bit, a następnie mieć...
Bo ja wiem czy nie wyjdzie. Z tego co pamiętam te SB dosyć proste były, a DMA to chyba nie była jedyna możliwość, tym bardziej, że część z nich miała własną pamięć na próbki. Zresztą DMA na ISA do zasymulowania programowo to też kosmos nie będzie. Poczytaj dokumentację tej karty, może jest jakiś tryb sensowniejszy. Z drugiej strony może wykorzystać...
Znalazłem na jednej stronie 23LC1024 po 12,10zł/szt brutto + dostawa ale czas realizacji to 2-3 tygodnie. To chyba będę wolał dołożyć parę złotych i kupić dekoder VS1053 za 70zł. Przede wszystkim wszystko łatwiej się kompiluje w Arduino niż w tym Eclipse. Niestety nie mam doświadczenia z tym kompilatorem to tak dosyć błądzę cały czas. Dodatkowo szkoda...
Co większe STM32 mają możliwość podłączenia (i to nawet dużej) pamięci zewnętrznej (RAM, ROM, Flash...). Na to trzeba sporo pinów, o ile pamięć nie jest szeregowa.
extern należy dodać wtedy gdy dołączamy ten sam plik .h kilka razy (zresztą kompilator nas o tym uprzejmie poinformuje). Wskaźnik jest zmienną wskazującą na dane w obszarze flash i jest umieszczony w RAM'ie'. Wskaźnik może wskazywać również na dane w RAM'ie.
Zlinkować do projektu? Nie za bardzo wiem o co chodzi. A ten plik obiektowy jak zrobić? Czytałem wczoraj o zapisie danych do FLASH i to wydawało się trudne. Trzeba odblokować możliwość zapisu potem skasować całą stronę, zapisać dane, zablokować możliwość, oczywiście jeszcze po drodze sprawdzać czy pamięć jest gotowa do użycia, i to się wydawało trochę...
FFT o długości okna M probek daje M/2 prążków z rozdzielczością Fsampl/M. Dość proste. Czyli np. Fsampl = 22000Hz dł. FFT = 1024 rozdzielczość 21.48Hz pierwszy prążek to składowa stała. ostatni to 10978 Hz Czyli ni jak wpasować te 21.48Hz czy 42.9Hz w potrzebną nam 30Hz, potrzeba więcej prążków i jeszcze jakieś wagi bo przecież prążki zachodzą na siebie...
Zamiast próbować wgrywać program z Eclipse, to skasuj to co tam jest przez OpenOCD - tylko i wyłącznie. Istnieje też (mało prawdopodobna) opcja, że zablokowałeś pamięć, więc w manualu poszukaj jak ją odblokować ("flash protect" oraz "stm32f1x unlock"). 4\/3!!
Hmm... podejrzyj dezassemblację (plik .lss jeśli korzystasz z moich szablonów) i zobacz co tam ciekawego się dzieje (; Jeśli możesz, to wrzuć tu projekt w jakiejś przyciętej postaci. 4\/3!!
Chodzi cały czas o grafiki typu interfejsu użytkownika - przyciski, suwaki itp. Nie o wyświetlanie skomplikowanych animacji czy filmów, nie ma tu przesyłu dużego strumienia danych, a więc nie ma znaczenia w jakiej pamięci są grafiki i czy są przesyłane przez procesor czy nie - mogą być i przez procesor, i przez DMA, np. SPI->FSMC. LCD_WriteRAM_Prepare();...
Masz rację - wydaje Ci się... (; Latencja to nie jest jakiś delay czy preskaler, po prostu przy nie-sekwencyjnym wykonywaniu rozkazów (skoki), potrzebne są te 2 cykle na załadowanie bufora. Spadek wydajności przez taką latencję oscyluje pewnie w rejonie kilku procent, więc nad czym się tu zastanawiać? Jeśli podniesienie częstotliwości "nic nie dało"...
- Sprawdź, czy pamięć, którą używasz, jest obsługiwana przez DMA (i to konkretnie tę, którą używasz). - Jeżeli włączyłeś Cache na pamięci, w której zapisujesz lub odczytujesz dane, pamiętaj, że musisz ją "invalidate". Inaczej nie masz żadnej gwarancji, że dane zostały zapisane/odczytane z pamięci. DMA nie aktualizuje cache.
Ja nie tworzę żadnej zmiennej tylko wskaźnik któremu każę wskazywać na pewien adres. Fredie :) dziewięć dni temu prosiłem cię oto żebyś wkleił ten kawałek pierońskiego kodu na forum i się doczekałem tylko kilku krotnego chwalenia się tym, że go masz i że jest taki genialny ... . Pamięć jest odblokowana do zapisu tylko jednokrotnego i to zaraz po resecie....
pamięć stm32 pamięć flash stm32 stm32 zewnętrzny pamięć
iskrownik ustawić zwarcie wirnika klatkowego amplituner instrukcja
routera huawei firmware b593s12 momenty dokrecania
Immergas kocioł gazowy gaśnie - przyczyny i rozwiązania Reliable Refurbished iPhones at Arezona: Affordable & Quality