Popularny post H1M4W4R1 Napisano Listopad 16, 2023 Popularny post Udostępnij Napisano Listopad 16, 2023 Wstęp Ostatnio podkusiło mnie i zafundowałem sobie taki zestaw: Dzisiaj dotarł i w wolnej chwili zabrałem się za testy tego mniejszego mikrokontrolera (CH32V003)... Parametry układu (dla obudowy TSSOP20) Architektura: RISC-V 32bit Taktowanie rdzenia: 48MHz RAM: 2kB FLASH: 16kB Napięcie: 3.3V, 5V Maksymalnie dostępne I/O: 18 Piny ADC: 8 Rozdzielczość ADC: 10 bit (do przetestowania) Interfejs Debuggera: SWIO (Single Wire I/O) Zegary: 2x16-bit Interfejsy: 1x USART, 1xI2C, 1xSPI Cena: ~0.9 PLN (przy zakupie jakichś 250 sztuk, przy MoQ w oficjalnym sklepie sprzedawcy wychodzi nieco drożej, bliżej 1.2-1.5 PLN) Dostępne są też inne obudowy: TSSOP20, SOP16, SOP8, QFN20 😉 Wyprowadzenia Środowisko programistyczne Mikrokontrolery RISC-V firmy WCH programujemy w środowisku MounRiver. Jest to całkiem udana kopia STM Cube IDE, która działa bardzo wydajnie i nie ma za bardzo do czego się przyczepić. Może poza tym, że czasem ma problemy z buildem i trzeba go kliknąć dwa razy 😉 Do dyspozycji mamy też program WCH-Link, który umożliwia wgrywanie oprogramowania bezpośrednio na mikrokontroler. W obu przypadkach wgrywanie oprogramowania odbywa się za pomocą programatora WCH-Link, który wspiera zarówno procesory ARM jak i RISC-V od firmy WCH. (Tak jest wspierany przez OpenOCD). Piszemy program Jestem masochistą i skorzystałem z dokumentacji i kilku przykładów w internecie by napisać kod na rejestrach... Tak jestem szalonym człowiekiem. #include "ch32v00x_rcc.h" #include <stdio.h> #include "debug.h" #define GPIO_CNF_OUT_PP 0 int main() { SystemInit(); // Init delay Delay_Init(); // Enable GPIOs RCC->APB2PCENR |= RCC_APB2Periph_GPIOC; // GPIO C0 Push-Pull GPIOC->CFGLR &= ~(0xf<<(4*0)); GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0); while(1) { // Turn on GPIO GPIOC->BSHR = (1<<0); Delay_Ms( 1500 ); // Turn off GPIO GPIOC->BSHR = (1<<16); Delay_Ms( 1500 ); } } (jest to finalna wersja kodu) Skompilowałem go (za pierwszym razem kompilacja nie przeszła, za drugim już bez problemu, ale to widocznie kwestia jakiegoś buga w IDE). Wgrywanie... Otworzyłem konfigurację "downloadu" kodu na mikrokontroler i pokazało się okienko aktualizacji programatora. Bezmyślnie je kliknąłem i co się okazało? Że posiadałem podpięty scalak do programatora i sobie zbrickowałem programator 😄 Odłączać scalak od programatora do aktualizacji kodu narzędzia! Dobra lekcja na przyszłość. Windows nie wykrywa urządzenia, pokazuje błąd 28. Przekopałem folder MounRiver Studio i znalazłem sterowniki. Wgrałem je używając narzędzia Windowsowego i załapał, że programator zgubił program. Nie wiem dokładnie jak go naprawiłem, ale zrobiłem to w okienku konfiguracyjnym MounRiver (prawdopodobnie zrobiłem Query programatora i samo znalazło programator bez softu i go wgrało). Po ustawieniu wszystkich zmiennych kliknąłem Download i program się wgrał. Ale nie działa... Okazało się, że dioda świeci cały czas. Jako, że oscyloskop miałem odpięty i za bardzo nie chciało mi się go podpinać poszedłem "drogą przez mękę" i poszukałem źródeł z przykładami. Znalazłem oficjalne, pobrałem i wgrałem ich Blink'a. Okazało się, że działa poprawnie. Skoro u mnie dioda świeci cały czas, a w oficjalnym mruga to problem leży zdecydowanie w Delay'u. Porównując kody okazało się, że mikrokontroler (SysInit) inicjuje dzielniki zegarowe Delay'a na 0 i trzeba ręcznie wywołać funkcję inicjacji, by dzielniki dostosowały się do taktowania procesora. Okej, w STM ogarnia to CubeMX, może też trzeba (szczerze nie pamiętam), mój błąd. Po poprawieniu mojego kodu wgrałem go i działał poprawnie. Na tym zakończyłem swoje aktualne testy (do mojego zapotrzebowania przełączanie wyjścia cyfrowego jest wystarczające, w wolnej chwili poczytam o ADC i potestuję 😄) Opinia Czy układ jest wart swojej ceny? No a gdzie znajdziecie 32-bitowy mikrokontroler z taktowaniem 48MHz za niecałą złotówkę? W wielu projektach hobbystycznych nie potrzeba gigantycznej mocy obliczeniowej i wystarczy takie małe coś, co przełączy odpowiednie wyprowadzenia. Jak za tą cenę to jestem bardzo zadowolony z jego możliwości i nie ma co narzekać na to, że programator idzie ubić zapominając o odłączeniu kabelków (przynajmniej dało się naprawić). Firma WCH posiada w ofercie też dużo bardziej zaawansowane układy oparte o architekturę RISC-V np. CH32V307 z wbudowanym USB 2.0 HS (razem z PHY, co rzadko się spotyka w przypadku ARM), a idąc tym tropem posiadają nawet CH565 z wbudowanym USB 3.0 (też razem z warstwą fizyczną). A dla zwolenników bardziej klasycznych układów: klon STM32F103 na architekturze RISC-V 😉 Lub konkurencja dla ESP w dziedzinie BLE... Konkludując - warto zainteresować się architekturą RISC-V do zastosowań hobbystycznych ze względu na niską cenę tych układów. Zwłaszcza CH32V003, który jest wystarczający do wielu projektów, a obecne ceny ATTiny oscylują w granicach 3-4 PLN za sztukę. Post Scriptum Myślę nad serią artykułów z projektowania PCB na bazie CH32V003, czy byliby chętni na taki zestawik? 7 Cytuj Link do komentarza Share on other sites More sharing options...
DeadGeneratio Listopad 22, 2023 Udostępnij Listopad 22, 2023 Niedługo będę go zamawiał z ciekawości ale bawi mnie trochę cena na aliexpress, gdzie za samą płytkę wychodzi 11 zł, a za zestaw z programatorem już 28. Cytuj Link do komentarza Share on other sites More sharing options...
H1M4W4R1 Listopad 22, 2023 Autor tematu Udostępnij Listopad 22, 2023 57 minut temu, DeadGeneratio napisał: Niedługo będę go zamawiał z ciekawości ale bawi mnie trochę cena na aliexpress, gdzie za samą płytkę wychodzi 11 zł, a za zestaw z programatorem już 28. Bo programator ma sporo mocniejszy MCU na pokładzie niż sama płytka 😉 Uprzedzam: łatwo go uceglić (ale da się odceglić, więc nie jest źle). Sam CH32V003 w hurcie to koszt jakichś 10 centów w najtańszej wersji 😄 W sam raz w miejsca, gdzie nie chcesz wkładać czegoś droższego, bo może to zeżreć kwas czy sprzęt może "wybuchnąć" (aka. mcu steruje przetwornicą wysokiego napięcia itp.) Cytuj Link do komentarza Share on other sites More sharing options...
DeadGeneratio Listopad 22, 2023 Udostępnij Listopad 22, 2023 A jak tam idzie czytanie o ADC? Ja zaczynam dopiero na rejestrach ADC ale w STM32 i z chęcią zobaczyłbym jak to działa na innych płytkach, więc jestem jak najbardziej za serią artykułów. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
DeadGeneratio Grudzień 1, 2023 Udostępnij Grudzień 1, 2023 (edytowany) Myślę, że możesz dodać do recenzji temat przywracania zbrickowanego programatora, z zapałem kliknąłem aktualizację oprogramowania mając go wpiętego do płytki. W przypadku gdy w menadżerze urządzeń widnieje on jako nieznane urządzenie to dobrze. Jak pojawia się w jakikolwiek inny sposób to należy odinstalować urządzenie wraz z sterownikiem. W tym momencie gdy programator jest przygotowany w taki sposób należy odpiąć go od laptopa i znaleźć w folderze z IDE WCH-Link Utility. W moim przypadku ścieżka dostępu wygląda tak: Dysk D -> MounRiver -> MSR_Community -> ExTool -> SWDTool -> WCH-LinkUtility.exe. Nie musiałem go uruchamiać na uprawnieniach administratora. Gdy pojawi się główne okno programu wpinamy programator, powinien zostać wykryty w dolnej części programu w miejscu gdzie u mnie pokazało poprawne wgranie softu: Klikamy drugą opcję od góry od lewej strony o nazwie Connect WCH-Link zostawiając takie ustawienia jak są, i program powinien automatycznie wykryć brak oprogramowania. W dolnej części pojawi się pasek postępu, a po ukończonym wgrywaniu wyświetli stosowny komunikat. Edit: myślę, że za szybko szampana otworzyłem, co prawda z płytki zgasła mrugająca niebieska dioda zagłady, ale IDE nie wykrywa jeszcze programatora. Edit2: po instalacji sterowników z MounRiver -> MRS_Community -> LinkDrv -> WCHLink -> DRVSETUP64 -> DRVSETUP64.exe w menadżerze urządzeń widoczny jest poprawnie jak przed ucegleniem jednak IDE ma dalej problem. Nawiązuje połączenie ale krzyczy o statusie Read-Protect. Open On-Chip Debugger 0.11.0+dev-02415-gfad123a16-dirty (2023-09-22-10:36) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : only one transport option; autoselect 'sdi' Warn : Transport "sdi" was already selected Ready for Remote Connections Started by GNU MCU Eclipse Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : WCH-LinkE mode:RV version 2.11 Info : wlink_init ok Info : clock speed 6000 kHz Info : [wch_riscv.cpu.0] datacount=2 progbufsize=8 Info : [wch_riscv.cpu.0] Examined RISC-V core; found 1 harts Info : [wch_riscv.cpu.0] XLEN=32, misa=0x40901105 [wch_riscv.cpu.0] Target successfully examined. Info : starting gdb server for wch_riscv.cpu.0 on 3333 Info : Listening on port 3333 for gdb connections Info : accepting 'gdb' connection on tcp/3333 Info : device id = 0x683aabcd Info : flash size = 64kbytes Warn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333" Error: Read-Protect Status Currently Enabled Error: failed erasing sectors 0 to 6 Error: flash_erase returned -4 Info : dropped 'gdb' connection Edit3: okej, okazuje się, że w domyśle jest ochrona, którą należy wyłączyć. Należy wejść w strzałkę i kliknąć raz na trzecią ikonkę. Po wszystkim program się wgrywa oraz działa. Edytowano Grudzień 1, 2023 przez DeadGeneratio 2 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!