Oczywiście, że można to zrobić bez użycia HAL, czy SPL. Kod, który tu przedstawiłeś wymaga bardzo wielu poprawek. Nie uważasz, że funkcja zapisu do pamięci jest zbyt skomplikowana? Długa na 88 linii, zawiera dziwne stałe typu: 1 << 14, 0xF3. Np co robi ta instrukcja: [syntax=c]FLASH->CR &= 0x1FFE;[/syntax], albo taka: [syntax=c]while(FLASH->SR...
Kontroler flasha to nadal tylko peryferial memory-mapped, wiec SFR w ktorym ustawiasz protekcje niczym sie nie rozni od SFRów od np. SPI, i dokladnie tak samo mozna go zapisać przez SWD/JTAG . A to juz wprost odpowiedz na twoje pytanie. SWD/JTAG pozwala na rw dowolnego 32bitowego adresu w losowym momencie, niezaleznie od tego, czy rdzen wykonuje kod,...
C-SKY Flash Programmer jest oprogramowaniem dostarczanym do pobrania przez XuanTie na stronie https://www.xrvm.cn/community/download?i... https://obrazki.elektroda.pl/1504579400_... Narzędzie to współpracuje z programatorami CK-Link do odczytu i zapisu w pamięci flash procesorów C-Sky z rdzeniem RISC. Procesory...
Są jakieś mechanizmy odczytu flash, jednak to nie jest ani bardzo proste ani za bardzo legalne. Tutaj jakaś wstępna lektura https://sec-consult.com/blog/detail/secg...
Pomijając sensowność używania sprintf do SKOPIOWANIA stringa do jakiejś zmiennej, to błędów jest bardzo dużo. 1. Skasowałeś stronę którą chcesz zapisywać? 2. Odblokowałeś zapis do flasha? 3. Twój zapis jest dziurawy, bo jak zero będzie na nieparzystej pozycji, to pętla nie zakończy się wtedy kiedy będziesz chciał 4. Odczytujesz FlashStatus, to sprawdź...
Witam! Mam pytanie o kwestię banalną przy pracy z programatorem, ale niewiadomą puki co dla mnie, przy pracy z j-tagiem. Jak włączyć zabezpieczenie przed odczytem flash-a?
Czy tak trudno odpowiedzieć na pytanie? Sam się czasami dziwie, że to taki trudne. Nie specjalizuje się w angielskim, a trudno przetłumaczyć/znaleźć zagadnienie w pdfie. Wszystko wynika ze specyfiki takiej pamięci. Pomijając aspekty fizyczne, czysta komórka pamięci flash odpowiada stanowi "1". Podczas zapisu do pojedynczej komórki można tylko i wyłącznie...
Cześć. Tak się zastawałem, czy w STM32 istnieje możliwość zabezpieczenia wgranego programu do pamięci Flash przed odczytem a tym samym skopiowaniem? Jeśli tak to gdzie i jak się to robi? A AVR-ach były bity konfiguracyjne, które pozwalały na taki odczyt, a w STM32?
Niezależnie od tego, co z nimi potem robisz, najwygodniej czytać je zwyczajnie przez adresy po jednokrotnym ustawieniu odwzorowania QSPI w przestrzeni adresowej, a nie poleceniami odczytu pamięci. W EP możesz kupić elektronicznie dowolny numer.
Czy da się zrobić tak, aby wszystko działało, ale aby pamięc nie była widziana? Jedno drugiemu przeczy. Ma działać debuger a odczyt pamięci ma być niemożliwy? Po co więc zabezpieczenie przed odczytem, skoro podłączając debuger można odczytać pamięć? W drugą stronę, skoro nie da sie pamięci odczytać, to jak ma to zrobić debuger?
Jestem nowy w STM32. Podłączyłem flash w25q128jv poprzez QSPI z poradnika https://controllerstech.com/w25q-flash-s... działa, ale podczas próby odczytu pamięci zwraca mi zawsze 0x88, lecz gdy odłączę GND do pamięci odczyt działa z artefaktami.
W wyszukiwarce wpisz "stm32 eeprom emulation".
Dałem radę już cokolwiek zrobić, jednak nadal mam problem z odbiorem drogą radiową (wysyłania jeszcze nie sprawdziłem). Zaraz opiszę co dokładnie nadal nie działa. W załączniku dodaję cały projekt. Kody (obecne): main.c [syntax=c]/** ****************************************... * File Name : main.c * Description : Main...
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"...
Czytałem o tym i faktycznie coś w tym jest, czyli podsumowując nie da się po prostu podłączyć kabelki TX RX jak w stm32 i jakimś flash downloaderem zgrać wsadu?
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...
stm32f407vet6+st link i do tego ST-LINK Utility, i tak... po podłączeniu automatycznie ładuje program z procka klikam zapisz Upewnij się czy masz dobrze określony obszar flash do odczytu odpowiedni do danego uC, bo Stlink nie ustawia tego automatycznie. Może odczytujesz i wgrywasz później tylko część istotnego obszaru flash i stąd te dziwy. Przykładowo,...
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ż....
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...
Yup. O wiele lepszy będzie jakiś odczyt z pamięci czy coś takiego. 4\/3!!
(at)JacekCz Przejrzyj ofertę pamięci dataFLASH, są pamięci z intgefejsem SPI (obudowy zazwyczaj SO08) lub równoległym (większe obudowy). Odczyt sekwencyjny jest szybki (do kilkunastu MB/s), zapis odbywa się blokami o stałej długości dla danego typu pamięci i jest raczej wolny (do kilkuset kB/s przy zapisie do wcześniej skasowanych bloków). Masz też...
Znalazłem kod obsługi wyś 7-segmentowego, pozmieniałem rejestry pod swój mikro procesor (ATmega32). Tylko mam problem z linia " static const uint8_t __flash DIGITS To standardowy błąd eclipse i pluginu do AVR, nie wpływa ten błąd na kompilację, jedynie na "podkreślanie" składni w Eclipse. Rozwiązanie tego problemu znajdziesz m.in. w tym wątku: https://forum.atnel.pl/topic15543.html#p...
Podczas zapisu do Flash w uC, które mają jeden bank Flash, próba odczytu powoduje zatrzymanie procesora i poczekania do końca zapisu. Nie jest to problemem przy obsłudze przerwań UART, bo czas zapisu jest krótszy, niż czas transmisji znaku przez UART.
Wprawdzie program mojego bootloadera napisałem korzystając z bibliotek ST, ale odblokowanie dowolnych stron FLASH'a do zapisu bardzo ładnie działa i nie mam z nim najmniejszych problemów. Zrobiłem to w następujący sposób (kolejność jest ważna): 1. Odblokowanie FLASH'a: FLASH_Unlock(); 2. Skopiowanie ustawień bitów rejestru USER OPTION BYTES: KopiaOBR...
Nie mam żadnej płytki z STM32F072CBxx, dlatego sprawdzić na żywym nie mogę. Odczyt rejestru nie może generować błędu, jeżeli projekt jest skompilowany dla tego właśnie mikrokontrolera. Jeżeli błąd jest podczas odczytu, a projekt zawiera definicjami rejestrów dla stm32f072xb, to sprawdziłbym co jest podłączone do programatora. Czy to na pewno jest STM32F072CBTx?...
zujnik jest podłączony bez rezystorów wzmacniających, ponieważ odczytałem ze schematu, że nie są potrzebne(próbowałem także z rezystorami 4k7). Przy sprawdzeniu bufora z danymi w programie Stm Studio, nic się nie zmienia a flaga busy jest ustawiona jedynie przy odłączeniu kabla SDA od czujnika. Proszę o pomoc w znalezieniu przyczyny braku odczytu i...
Szanowni, Napotkałem na problem z zabezpieczeniem pamięci Flash przed odczytem. Pracuję na płytce testowej STM32F103 Nucleo, piszę w C z użyciem SPL, edytor: System Workbench for STM32. Mianowicie, po zaprogramowaniu procesora za pomocą ST-LINK Utility v4.1.0 swoim kodem, w opcjach oprogramowania Target->Option Byts ustawiam opcję Read Out Protection...
Po zdjęciu nie trzeba odłączać zasilania. Tylko po włączeniu (zabezpieczenia). Dowodem na to jest np. w trybie automatycznym ST-Link zdejmuje zabezpieczenie (o ile jest poziom 1), programuje i ustawia zabezpieczenie bez konieczności wyłączenia zasilania. Korzystam z tego dość często jak muszę przeprogramować układy (np zmiana bootloadera).
Ciężko odpowiedzieć na tak zadane pytanie. To tak jakbyś zapytał jak sprawdzić wartość jakiejś komórki pamięci RAM (czyli powiedzmy jakąś zmienną). No po prostu odczytując ją :D Tak samo różne opcje zabezpieczeń. One są zapisane w pamięci, tyle że FLASH. Żeby je sprawdzić to trzeba je odczytać. No inaczej się nie na napisać. Ale mała podpowiedz: Option...
Pierwsza rzecz to ponowna próba odbezpieczenia "obszaru opcji" powoduje u mnie lądowanie w HardFault. Piszę o tym: [syntax=c] FLASH->OPTKEYR = 0x08192A3B; FLASH->OPTKEYR = 0x4C5D6E7F; while( FLASH -> SR & FLASH_SR_BSY ) {}; -> FLASH->KEYR = 0x08192A3B; -> FLASH->KEYR = 0x4C5D6E7F; -> while( FLASH -> SR & FLASH_SR_BSY ) {}; [/syntax] Po drugie po co...
Wcześniej użyłem volatile bo chciałem wymusić odczyt tych tablic za każdym razem z pamięci FLASH. A nie z jakiegoś rejestru gdzie wartość mogła by zostać zapamiętana. W tym celu, żeby po przeprogramowaniu pamięci, program na pewno operował na nowych wartościach. Ale mam rozumieć że w tym wypadku volatile nie pełni roli wymuszenia każdorazowego dostępu,...
Okazało się, że podszedłem do tematu z niewystarczającą wiedzą. Przed każdym zapisem, należy określony sektor wyczyścić instrukcja Sector Erase. Chcialbym móc kasować pojedyncze komórki i aktualizować tam niektóre dane, jednakże pamięci flash tego nie umożliwiają, cóż coś za coś. Może uda się niektóre zmienne zapisywać do flashu procesora. Coś wymyślę,...
Proszę bardzo! Wersja minimalna - zapamiętywanie jednej zmiennej na F0. No fakt, aż 36 wierszy. Nie no błagam... nie rozśmieszaj mnie. Chodziło o kod który dla DOWOLNEJ ilości zmiennych (oczywiście w granicach rozsądku tak aby wszystkie mieściły się w emulowanym EEPROMie) pozwala NA ŻĄDANIE odczytać/zapisać WYBRANĄ zmienną. A ty wrzucasz tu jakieś...
A czy da się jednocześnie zadeklarować magistralę FSMC do LCD(magistrala 16 bitowa) i zadeklarować magistralę do pamięci FLASH NAND (magistrala 8bitowa). I w pętli odczytywać z pamięci NAND FLASH dane i wysyłać je do LCD? Chciałbym użyć 8 bitowej bo są tańsze i jest są ogólnie dostępne. Czy trzeba użyć 16 bitową NAND FLASH?
Temat jakoś umiera śmiercią naturalną. Pozwolę sobie nieco odświeżyć. Hardware: - HY-mini (Cortex M3) - LCD ze sterownikiem ssd1289 (FSMC) - karta sdhc (SDIO) Software: - fatfs R0.10 („testowałem” też wcześniejsze wersje) - „HAL” dla fatfs – silnie wzorowany na przykładach dołączonych do HY-mini i przykładach sugerowanych...
0.8.0 Połączyło tylko czemu źle rozpoznaje device ID ?? Open On-Chip Debugger 0.8.0-dev-00094-gc658229 (2013-07-21-11:25) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... srst_only separate srst_gates_jtag srst_open_drain connect_deassert_srst adapter_nsrst_assert_width: 100 adapter_nsrst_delay: 100...
Kontaktował się ktoś z ST w tej sprawie? Ciekaw jestem co oni na to? Mają zamiar to poprawić, czy będą udawać że nic się nie dzieje? Pisałem już wcześniej, że z ST się kontaktowałem i razem doszliśmy do wniosku, że przyczyną zakłóceń jest odczyt z pamięci flash. Teoretycznie gdyby napisać program działający z RAMu powinno być ok, ale już nie miałem...
Ta procedura jest po prostu błedna. Po każdym zapisie trzeba flash odczytać. Tu tego nie ma. Faktycznie jest gdzes tak napisane w manualu ze trzeba odcztac po zapisie ? Bo powazne mam watpliwosci. Ale oczywiscie jutro sprawdzę na zywym (chorym) organizmie.
0. Konfiguracja FMC wymaga poprawy. Wszystkie czasy masz ustawione domyślnie, więc interfejs niepotrzebnie czeka z wykonaniem każdej operacji. Popatrz na parametry MEMxSET, MEMxWAIT, MEMxHOLD i porównaj z tym co może pamięć. Przykład: MEMxSET jest ustawiony na 0xFC, czyli jakieś 252 x 4,63ns = 1,16us. Pamięć potrzebuje około 20ns -12ns = 8ns. Dostosuj...
Witam. Mam STM32F030 i próbuję zabezpieczyć programowo procesor przed odczytem (Level1) - funkcją uruchamianą przy starcie programu. Proszę zwracać uwagę na pisownię. Proszę używać znaczników syntax dla kodu. Poprawiłem post.
Występuje wyjątek bo nastepuje dostęp RW do pamięci flash ktora jest tylko do odczytu a wszystkie stałe umieszczane są bezpośrednio we flash. Najprościej do funkcji dodać jeszcze jeden argument ze wskaźnikiem na bufor wyjściowy. [syntax=c]char *STRING_DeleteStr(char * dst, const char *string, const char *del, u8 mode)[/syntax]
U mnie podobnie. Próbowałem odczytać chińskiego st-linka i też soft wyparował. Jakiś "feature" jlinka. Po wykryciu zabezpieczonego procka "odbezpiecza go" automatycznie. Tyle że cholera nawet o to nie pytał. Under Windows, there is an unlock dialog, which asks the user whether he wants to unsecure the device or not. In Linux this is always done without...
W jaki sposób to się odbywa skoro MCU ma RDP level 1 Twój program może sobie pisać w dowolnym RDP do FLASH. Tylko firmowy bootloader nie działa. Musisz sobie napisać własny. dodatkowo bootloader jest nienaruszony podczas aktualizacji oprogramowania, bo urządzenie jest "żywe" podczas tej operacji (świecą i migają diody). No i co w tym takiego nadzwyczajnego....
wiem że niektóre uC potrzebują kilku taktów zegara aby ustawić stan logiczny na porcie. W starszych LPC opartych o ARM7 porty IO były bardzo wolne... W nowszych LPC21xx poprawiono to. Chciałem się dowiedzieć jak w tej kwestii wypadają STM32 (przy różnych zegarach) i chciałbym mieć porównanie do Atmegi8 bo na razie takie programuje. Zależy mi na szybkim...
Witam Chcę wykorzystać część pamięci FLASH do zapisu danych, aby nie utracić ich po wyłączeniu zasilania. Udaje mi się zarówno zapisać jak i odczytać z FLASHa ale nie jest możliwe nadpisanie danej komórki. Po próbie nadpisania wcześniejsza wartość pozostaje bez zmian. Funkcję do zapisu i odczytu: u8 FLASH_odczytaj(u32 Address) { return...
Zdecydowanie w rejestrze SR procesor zapisuje wszystko co go boli a również poprawność operacji. Zapis do flash'a jest dość mocno "strzeżony" i jeżeli pominiesz coś po drodze to się skończy odmową ( a czasem procesor może "polecieć"do wyjątku). Akurat w przypadku obsługi tej pamięci można podejrzeć biblioteki standardowe ST. A tak na marginesie to bez...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
Hmm, chodzi o to, że Level 1 to cokolwiek oprócz 0xAA i 0xCC, czyli również 0xFF? Właśnie we flash programming manual to jakoś tak tajemniczo i krótko było opisane ;) Bo pomyślałem sobie jeszcze, że może jest odczyt bieżących RDP, WRP, Data0 itp., potem erase i zapis nowych, po czym dopiero po Launch (czyli chyba de facto soft reset?), jeśli RDP się...
Witam Próbuje od jakiegoś czasu zmusić jeden procesor do zaprogramowanie części pamięci w drugim za pomocą protokołu swd. Bazowałem na początku na dokumentacji odnośnie EFM32 (jedyny cortex m3 który znalazłem w miarę opisany). Niestety zatrzymałem się na etapie, możliwości odczytu, zapisu do pamięci ram oraz odczytu z pamięci flash. Niestety nie jestem...
to tablicy unsigned charow w flashu stm32 juz nie mozna trzymać? sprawdzilem na tablicy uint8_t zarówno zapis jak i odczyt działa bez zarzutów. W takim razie nie wiem co mogło być przyczyną problemów w przypadku pojedynczych zmiennych. To, że ci nie działa tak jak trzeba to jest wina twojego softu, nie flasha ani kompilatora. Sprawdź jak zmusić GCC...
(...)co zajmie 10 cykli zegara w przypadku wykonywania z ITCRAM. Jezeli z FLASH to trochę dużej, bo FLASH jest wolniejsza. Wiesz o ile wolniej? Bo u mnie właśnie z flasha się to wykonuje. W sumie, nie dałoby się po prostu zliczać jakoś cykli zegarowych? Albo może użyć timera, tylko czy on wyrobi przy częstotliwości np 100MHz?
Witam. Pętle opóźniające niespecjalnie nadają się do precyzyjnego odmierzania czasu, niemnej chciałbym się dowiedzieć co dokładnie wpływa na czas ich wykonania. Funkcja opóźniająca wygląda tak: [syntax=c]void Delay(unsigned int delay) { for(;delay>0;delay--) { } } [/syntax] Przy niskiej optymalizacji kompilator kompiluje ją do trzech instrukcji: SUBS,...
Musisz najpierw zewrzeć pin BOOT0 do masy Błąd binarny się wkradł - BOOT0 trzeba podciągnąć do "plusa", BOOT1 do masy.
Pytanie 1: http://infocenter.arm.com/help/index.jsp... CORTEX nie koniecznie wykonuje czynności w spodziewanej kolejności czy w spodziewany sposób, przekonałem się o tym dobitnie po kilku dniach nieustającej próby napisania tego w c/c++ bez podglądu na wygenerowany kod (tzn algorytm działał jednak występowały jittery...
Czy można skopiować jakiś program bezpośrednio z jednego urządzenia na drugie (STM32F4 Discovery)? Trochę mało konkretne to pytanie. Jeśli przypadkiem Ci chodzi o skopiowanie programu z jednego Discovery do drugiego (tego samego typu), to nie ma problemu (jeśli akurat nie jest ustawiona opcja blokady odczytu). Programem ST-LINK odczytuje się i zrzuca...
Witam, Mam mały problem związany właśnie z tą pamięcią. Buduję układ z wykorzystaniem LCD 7' i potrzebuję do pamięci FLASH wgrać kilka ikonek do interfejsu graficznego. Ikonki generuję sobie przez program Pixel Factory i tam generuje mi się tablica z ciągiem bajtów dla określonego obrazka(ikonki). I moje pytanie czy da się takie dane (tablicę z bajtami)...
Niestety nie mam oryginalnego wsadu demo żeby porównać to w podobny sposób jak kolega (swoją drogą możesz zmierzyć na oscyloskopie mniej więcej jakie tam są czasy dostępu) bo te w źródłach programu uCOS demo z Bootloaderem są szybsze niż wynikają z obliczeń, ale sam próbowałem we wszystkich kierunkach, w trybie SRAM jak i NOR Flash. Co do odczytu to...
To teraz jest jeszcze weselej, zrobiłem nową płytkę, wlutowałem komponenty, znalazłem nawet jeden błąd (zwarłem ścieżki, ale nic poważnego), a tu łaskawie keil zwraca mi coś takiego przy flashowaniu przez JLinka: Okazało się, że nie mam podłączonego VDDA do VCC.... Uruchomiłem drugą płytkę i coś widać. Mierzyć płytka mierzy, ale dostaję dwa razy mniej...
tmf napisał: Kolego, kompilator nic nie wie o adresach, typach pamięci i całym tym bałaganie. Cóś jednak wie czasami - bo jak by nie wiedział to jak by avr-gcc generował poprawny kod dla NAS? Przecież nie generuje. NAS powoduje tylko związanie z danym obiektem jednobajtowego identyfikatora przestrzeni, a reszta leży po stronie frontendu. Każde odwołanie...
Chyba nie proponujesz, żeby bootloader na żywo starał się odczytywać te współczynniki skądś i modyfikować przesyłany firmware wstawiając do niego odczytane wartości... To byłoby niezłe kombinowanie... To chyba nie jest jakiś wielki problem. Ten manewr chyba stosowany jest w niektórych PIC-ach, które mają fabrycznie wgrywane dane kalibrujące oscylator....
Witam, Do poruszenia tego tematu zachęcił mnie sąsiedni wątek, w którym kolega pisze, że wyrabia się z kodem wynikowym poniżej 32kB (ograniczenie darmowej wersji Keila). A że nie chcę mu zaśmiecać wątku, to otwieram nowy....;-) Sprawdziłem swój "szkieletowy" program, w którym zaimplementowana jest póki co obsługa kilku peryferiów (klawiatura 4x4, wyswietlacz...
Cześć :) W związku z tym, że w miejscu w którym pracuję istnieje potrzeba programowania pamięci SPI których wsad jest taki sam, stwierdziłem że zbuduję urządzenie, które będzie kopiowało zawartość jednej kości do drugiej. Niby nic, ale z czasem chciałbym zająć się zawodowo projektowaniem oraz programowaniem mikrokontrolerów, więc jako pierwszy projekt...
PS. Jak załadować program za pomocą BootLoadera po RS232? Szukam i szukam w necie i nie widzę. Dokładnie to chodzi mi o to jakim programem. Program nazywa się Flash Magic http://www.flashmagictool.com/ Jak by jakiś pin był podłączony do GND a ja na nim bym wymuszał stan niski (a raczej próbował wymusić) i procesor by się palił to bym zrozumiał. Akurat...
Bazując na https://obrazki.elektroda.pl/4178510200_... https://obrazki.elektroda.pl/8769073400_... main.c [syntax=c] /* Virtual address defined by the user: 0xFFFF value is prohibited */ uint16_t VirtAddVarTab[NB_OF_VAR]={0}; uint16_t Virtval[NB_OF_VAR]={0}; uint16_t VarValue= 0; int main(void) { HSE_init(); //systick_init();...
Mam również problemy z układem STM32F030 (obudowa TSSOP20). Główny problem polega na tym, że ST-Link (wykorzystuję ST-Link na płytce discovery) łączy się prawidłowo z układem ale nie programuje go. Nie działa również programowanie option bytes. Za każdym razem wyskakuje błąd weryfikacji już na pierwszym adresie flash (0x08000000). Natomiast odczyt pamięci...
Bzdura. Do lock/fuse/itp są zupełnie inne komendy. Programowanie tego wygląda kompletnie inaczej niż flasha. Nie jest to żaden "oddzielny adres". Chyba nie do końca masz rację. Zrobiłem taki eksperyment. Wziąłem STM32L152RE (bo ma EEPROM) i spreparowałem jeden plik hex z trzema obszarami. Flash (od 0x08000000, blink jakiś), EEPROM (od 0x08080000, tekst...
No ok, ale problem leży w tym, że nie mogę wpisać nic pod adres 0x00000000. Więc nie mogę wpisać nic do Flasha. STLink Utility samo odczytuje typ procesora po podłączeniu i wybiera go dobrze, z tym że pisze "Flash size: unknown"
Witam Ja bym to zrobił tak: 1. Kompiluje sobie moja funkcję- mam .bin. 2. W pliku .map lub debugując patrzę jaki funkcja ma adres. 3. Kopiuję bin'a na kartę SD i potem czytam .bin'a od adresu gdzie się zaczyna moja funkcja i kopiuję ramu procesora. 4. Wywołuje funkcję z ramu, przez wskaźnik. Jak nie zależy ci na szybkości to ok, bo trzeba odczytać z...
Witam, Zaczynam przygodę z mikrokontrolerami STM32, posiadam STM32F429IDISCOVERY. Zaczynam pracę z kursem na youtube: https://www.youtube.com/watch?v=kSVNG3sC... Wykonałem konfigurację środowiska jak w poprzednim odcinku, jednak gdy teraz próbuję wgrać program (zwykłe zapalenie diody) to w STM32CubeIDE 1.3.0 pojawia się komunikat: Debugger connection...
Oczywiście tak nie zaprogramujesz option bytes. Ten rejestr FLASH-OBR jest tylko do odczytu i jest jedynie kopią odpowiedniego bitu w option bytes. Musisz najpierw odblokować zapis do option bytes (rejestr OPTKEYR) , następnie je zaprogramować i zresetować uK Poszczególne bajty option bytes masz opisane w RM/.
Wygenerowany jest bezpośrednio z CooCoxa Linkera tutaj nie ma chyba jest zaszyty w środowisku. Wersja CoIDE to: Version: 1.7.8 [syntax=c] /** ****************************************... * (at)file startup_coide.c * (at)author Coocox * (at)version V1.0 * (at)date 20/07/2010 * (at)brief M0 M3 Devices Startup code. *...
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...
4,7k jest wyliczony raczej dla 5V, DS18B20 jak i STM32 może działać na 3.3V i wtedy proporcjonalnie to już jest ~3k. A jak zasilasz układ czujników jednak 5V to tym gorzej dla układu. Nie mam styczności z MacOS, sprawdzałeś to: http://macappstore.org/stlink/ ? Poza tym przy wgraniu bootloadera trzeba pamiętać o zworkach, bo się kasuje, może uległeś...
Próbuję uruchomić przetwornik do współpracy z DMA. Bez DMA wszystko działa ale przy użyciu DMA nie do końca. Przy pomocy CubeMX wygenerowałem taki oto kod: [syntax=c] /* USER CODE BEGIN Header */ /** ****************************************... * (at)file : main.c * (at)brief : Main program body ****************************************...
Żeby programować STMy potrzebujesz najtańszego ST-Linka, np. takiego jak w pierwszym linku i programu ST-Link Utility. Obsługa tego programu jest intuicyjna i nie powinna sprawiać kłopotu. Do programatora podłączasz tylko SWDIO, SWDCLK i masę. Twoim największym problemem może być zablokowany odczyt danych z uC co jest bardzo prawdopodobne skoro jest...
Powyższy przykład jest właśnie implementacją 'sensownego' mechanizmu odbioru danych przez DMA. Procek tak czy siak musi parsować kazdy odebrany bajt, ale po co ma - co bajt - marnować 12 cykli na wejście do ISRa? Gdy nadawca przerwie strumien, nie stanie się nic. Jak rozsynchronizuje - stanie się to samo - nic . Zauwaz, ze DMA pracuje w trybie circular,...
w razie czego jakbym zablokował sobie linie od SWD. Nie da się trwale zablokować SWD (poza blokada odczytu pamięci flash, ale wtedy BOOT0 i tak Ci nie pomoże). W razie jakbyś zablokował sobie SWD z poziomu softu, to w ST-LINKu w opcjach zmieniasz tryb połączenia na "connect under reset" i jeśli masz wyprowadzony reset, ST-LINK sam sobie poradzi. A...
Na płytce z STM32F207ZG ustawiłem BusTurnAround = AddrSetup = 0, AddrHold = 1, DataSetup = 3, FSMC clock = 60MHz. Dostosowałem Twój kod (mam pamięć w innym banku) i nie zwiększają mi się liczniki errorX. Sprawdziłem kilka razy. Którego trybu używasz (A,B,C,D)? Czy masz wyzerowany bit EXTMOD? Czy wyzerowane są pozostałe bity (te które dotyczą pamięci...
Witam serdecznie. Niżej kawałek kodu z pliku main.c W tym kodzie odczytuje sekundy z zewnętrznego układu RTC po I2C. Jak widać stworzyłem sobie funkcję "odczytaj_sekunde" w pliku "main.c" przed funkcją główną: unknown type name I2C_HandleTypeDef Co oznacza, że funkcja nie wie czym jest "I2C_HandleTypeDef" i to jest dla mnie jasne. Próbowałem zainkludować...
Cześć! Po kilku małych projektach opartych na Nucleo i Discovery postanowiłem wykonać trochę bardziej skomplikowany i praktyczny projekt - odtwarzacz plików WAV z karty SD i... zwracam się do Was z prośbą o pomoc 😄 Projekt oparty jest o STM32F103RCT6 do którego podłączone jest gniazdo kart microSD i DAC (PCM1780). Za pomocą FatFs odczytuję plik WAV...
Portuję projekt z PIC'a (32MX) na STM'a (F0) i mam problem z wydajnością. Szybkość zegarów jest taka sama. Mimo włączonej w kompilatorze maksymalnej optymalizacji program działa zauważalnie wolniej niż na PIC, gdzie był kompilowany w darmowej wersji XC32 (czyli z najsłabszą optymalizacją -o1). Mam przez to problemy z wyrobieniem się z obsługą zadań...
Potrzebujesz: " RM0041: STM32F100xx advanced ARM-based 32-bit MCUs " -> www.st.com To też będzie potrzebne: " DS6517: Low & medium-density value line, advanced ARM-based 32-bit MCU with 16 to 128 KB Flash, 12 timers, ADC, DAC & 8 comm interfaces " i to (zakładam ,że to chociaż już masz) : " UM0919: STM32VLDISCOVERY STM32 value line Discovery...
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...
Czy znane są wam inne skuteczne algorytmy pomiaru amplitudy PWM? Pracuje na STM32F072CB i tylko taki mam do dyspozycji wedle założeń projektu więc przesiadką choćby na F1 nie wchodzi w grę... Do tego celu jest więcej niż wystarczający. Metoda pomiaru jest dobra. Dodatkowe pytania: 1. Czy oglądałeś ten przebieg na oscyloskopie? Może po prostu nie jest...
Witam Mam następującą konfiguracje : https://obrazki.elektroda.pl/9301426500_... Dla Timera2 jest APB1 i jak widać jest ustawiony na 84MHz zatem TIM2 ustawiam tak : https://obrazki.elektroda.pl/8953606600_... Ustawienie ma służyć dla funkcji opóźnienia w µs z krokiem co 1µs. Realizowane jest to w następujący...
Teraz to już się zupełnie pogubiłem. Założyłem ten wątek tylko by zapytać, czy będą problemy z odczytem danych z pamięci Flash powyżej 64kB w ARM cortex M4, i czy spodziewać się tutaj jakichś problemów. W AVR8 trzeba było użyć Named Adress Spaces, tutaj nie trzeba i w sumie moja ciekawość została zaspokojona. Jeden z Kolegów zapytał po co mi to, to...
No tak, bez funkcji HAL i LL nijak nie dałoby się odczytać trzech słów z pamięci Flash. Zresztą takie czytanie pamięci bez wywołania funkcji wygląda niepoważnie i nieprofesjonalnie. Weźmy np. taki kod: #define UID ((uint32_t *)0x1FFFF7AC) idhash = UID[0] ^ UID[1] ^ UID[2]; - czysta amatorszczyzna. żeby go napisać, trzeba wiedzieć, że UID jest trójelementowym...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
STMicroelectronics to jeden z najpopularniejszych producentów mikrokontrolerów w Polsce. Swoją renomę zawdzięcza nie tylko udanym konstrukcjom, ale i wdrażaniu najnowszych technologii oraz bogatej ofercie. W niniejszym artykule prezentujemy niektóre z ostatnio wprowadzonych układów ST oraz wybrane ciekawe modele, które od jakiegoś czasu cieszą się dużą...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Formalnie coocox nie obsługuje jeszcze tej wersji, ale w praktyce da się to obejść. 1) podczas tworzenia projektu wybierasz podobny uC np. STM32F407VG 2) kopiujesz skrypt .ld z przykładowego projektu dla Atollic oraz plik startowy .S (możliwe, że będziesz musiał zakomentować tam jedną linijkę) 3) w zakładce Link wyłączasz adresy z coocox'a i wskazujesz...
Wejdź sobie w ST-link Utility i tam w ustawieniach Option Bytes można wybrać z listy poziom RDP. 0 to brak ochrony, 1 to ochrona przed odczytem i przy zmianie z 1 na 0 wykonuje się z automatu MassErase, a poziom 2, który da się ustawić tylko z programatora jest niby permanentny i już nic z tym nie zrobisz. Wydaje mi się natomiast, że mylisz się co do...
To nie jest STM32 i tu zasada działania jest inna. Wszystko masz tu opisane -> http://mikrokontrolery.blogspot.com/2011...
Mam przed sobą Cortex™-M3 Revision r2p1 Technical Reference Manual i tam napisane jest iż MLA trwa dwa cykle a np ADD, MUL jeden czyli ja zysku nie widzę przy wykorzystaniu tego rozkazu (Czasowego bo to tylko chyba objętościowy zysk). Staram się w sposób świadomy pisać w C tak aby kod wykonywał się jak najszbiciej. ale jeśli nie ma różnicy w czasie...
Witam Jestem początkujący w dziedzinie mikrokontrolerów ARM. Robię właśnie projekt na płytce STM32F0 discovery z stm32f051r8t6 na pokładzie. Pierwszy problem dotyczy emulacji EEPROM. Wykorzystałem gotowca ze strony ST. Problem polega na tym, że po wykonaniu instrukcji [syntax=c] EE_Init(); [/syntax] poprzedzonej [syntax=c] FLASH_Unlock(); [/syntax]...
https://obrazki.elektroda.pl/3479042800_... Efektem nocnych dłubanin jest sterownik taśm RGB/RGBW. https://obrazki.elektroda.pl/6143799100_... https://obrazki.elektroda.pl/6487351400_... https://obrazki.elektroda.pl/8955729600_... Głównym przeznaczeniem jest sterowanie oświetleniem...
https://obrazki.elektroda.pl/8808596700_... Pokażę tu jak łatwo uruchomić MAX31855 z Arduino a potem omówię jego protokół komunikacji. MAX31855 oferuje 14-bitowy pomiar temperatury z zakresu zależnego od użytej sondy, od -270°C aż do 1800°C. MAX31855 oferuje prosty protokół komunikacji oparty o SPI, zasadniczo odczytujemy z niego tylko...
Witam. Mam problem z komunikacją przez SPI z BMA180. Chciałbym na razie tylko odebrać ID czujnika czyli wartość 3 spod adresu 0x00. Żeby odczytać cokolwiek trzeba przejść w tryb READ MODE czyli na adresie zrobić operację adres |= 0x80 (MSB musi być równy 1). Ja tą operację na adresie zrobiłem ręcznie i już wysyłam "gotowy" adres, jest to u mnie zmienna...
Nie wiem o co chodzi, support STM mi powiedział, żebym wgrał kod do ramu oraz wektor przerwań. Cały problem od początku: Zadanie programu jest następujące: ze sterownika sczytuję wartości enkoderów i zapisuję je do pamięci flash. (powinno to być wykonywane timerem co 10ms). Następnie odczytuję te wartości z flasha w celu odtworzenia ruchu i odpowiednie...
Czyli chodzi tutaj o to, że bez ustawienia opóźnienia może błędnie działać dalej opóźnienie FLASH i FLASH będzie źle programowany? To moja prywatna hipoteza, ale obstawiam, że jeśli nie ustawisz opóźnienia, to dane odczytywane z flash są błędne i program się wysypuje.
stm32 flash odczyt odczyt pamięć flash stm32 odczyt pamięci flash stm32
makro kolumna deska rozdzielcza laguna obliczać metoda prawić
silnik synchroniczny zasada działania silnik synchroniczny zasada działania
Equivalent for 6208A Transistor, PLC, or Bearing Philips 55PUS6401/12 Boot Loop – Firmware Download & Forced Upgrade for QM163E Chassis