Powrót

WinnerMicro w801-c400 microcontroller

08.03.2023

Wstęp

Witaj w tym oto pierwszym wpisie na Pomidorowym Blogu. [Kreatywne rozwinięcie wstepu]. Od razu uprzedzam że wpis ten jest raczej nie dla całkowitych świerzaków, poniewż nie wyjaśniam w nim zbyt szczegółowo wielu kwesti. Ma on raczej na celu zainteresować potencjalnych nabywców płytki. A więc od poczatku.

W801-C400

w801-c400-front w801-c400-back

Jest to 32-bitowy mikrokontroler z rdzeniem o taktowaniu 240 MHz i 2MB pamięci Flash, 288 KB RAM oraz wbudowanym WiFi i Bluetooth 4.2. Wyposarzony jest on w usb C do zasilania, wgrywania kodu i komunikacji poprzez port szeregowym. Płytkę (dev-kit) można zakupić w przedziale od 9zł do 16zł a sam mikrokontroler za około 5zł w zależności od wersji (stan na 08.03.2023).

Sam mikrokontroler występuje w 3 wersjach

  1. W800-C400 Wersja z łącznością bezprzewodową ale z okrojonym GPIO
  2. W801-C400 Najbogatsza wersja płytki na której skupi się reszta tego wpisu
  3. W806-C200 Wersja z pełnym GPIO lecz bez opcji łączności bezprzewodowej
Płytka posiada:

Osoby bardziej zainteresowane odsyłam do strony producenta

Pierwsze kroki

Przygodę z płytką należy zacząć od pobrania wszytkich potrzebnych narzędzi.
Opcje są conajmniej dwie, ponieważ można skorzystać z dedykowanego IDE opartego o Eclipse (工具 -> 集成开发环境-CDK -> V2.18.2)
Lub jak w moim przypadku skorzystać z samego SDK na linuxie za pośrednictwem WSL2 dotępnego np. tutaj oraz Toolchaina dla procesorów o architektórze C-sky dostepnego tutaj w 工具 -> 工具链-800系列 -> V3.10.30 (dla linuxa csky-elfabiv2-tools-x86_64-minilibc-20230301.tar.gz)
Natomiast do samego wgrywania kodu na windowsie wygodny bedzie ten pogram 开发工具 -> 串口烧录工具_V1.4.18.rar kóry pobieramy z strony produktu podobnie jak SDK. Od razu warto wspomniec o jednym z problemów płytki pod linuxem, z przyczyn technicznych należy umieścić 10uF kondestaror między piner resetu a masą. Szczegółowo ten problem został opisany tutaj. Nas jednak nie będzie on dotyczył ponieważ skorzystamy z innego narzedzia do wgrywania kodu na płytkę.

Innym mankamentem płytki jest błąd w druku oznaczeń. Pin opisany jako PB24 znajdujący się przy porcie USB jest tak naprawdę pinem PB4 prawdziwe PB24 znajduje się na krawędzi płytki.

W przypadku pobierania z chińskiej strony "occ.t-head.cn" polecam kożystać z tłumacza google. Dodatkowo będzie wymagana tam rejestracja polegająca na podaniu maila i przepisaniu kodu weryfikacyjnego, nie trzeba podawać żadnego chasła ani dodatkowych danych.

Kod twojej apliakcji będzie się znajdował w katalogu app/. jednak w pierwszej kolejności trzeba będzie skonfigurowac toolchain. Posłuży temu poniższa komenda

make menuconfig

W terminalu otworzy się prosty konfigurator SDK. W zakładce "Toolchain Configuration" należy ustawić "toolchain path" na ścieżke do wypakowanego i pobranego wcześniej toolchaina. Co BARDZO ważne na końcu ścieżki należy dodać /bin/ Bez tego SDK nie zadziała prawidłowo

Następnie możemy skompilować kod

make

W katalogu /bin/w800/ pojawią się pliki. Nas bedzie interesować w800.img ponieważ to własnie go bedziemy wgrywać na płytkę. Aby to zrobić otwóżmy wcześniej pobrane narzędzie "Upgrade Tools". Interfejs jest w pełni po Chińsku ale nie powinno to sprawić problemu. Jedynce co trzeba wiedzieć to że przycisk w lewym dolnym rogu odpowiada za otworzenie portu skonfigurowanego powyżej natomiast największy guzik po prawej odpowiada za wgranie kodu na płytkę. Należy upewnić się że mamy wybraną opcje "Flash" oraz platformę "w800". Czasem wgranie może wymagać kilku prób. Jak wszytko się uda uświadczymy w oknie logów listę komend.

I tutaj pora na zabawę sdk zawiera bardzo wiele dem pokazujących różne funckjie, można je włączać i wyłączać w /demo/wm_demo.h polecam pobawić się owymi aby lepiej zrozumieć jak działa sama płytka. Lektura kodu wraz z pomoca dokumenacji zawartej w /doc/w800_apis.chm mocno wskazana. Co warte wspomnienia z płytką komunikujemy się z bound 115200 oraz w przypadku korzystania z oprogramowania takiego jak Realterm trzeba ustawić Hardware Flow Control na RS485-rts lub w przypadku innych programów XON/XOFF, również komendy należy wysyłać bez znaków nowej lini.

Idąc dalej warto by napisać pierwszy kawałek kodu. Przykład mający na celu naprzemiennie mrugać diodami wlutwanymi w płytkę można pobrać tutaj

w801-c400-blink

Wartym wspomnienia jest jeszcze kompatybliność tej serii mikrokontrolerów z LuatOS ponieważ układy te są bliźniaczo podobne do seri układów Air103. LuatOS umożliwia programowanie za pomoca Lua z znacznie bardziej przyjaznym w porównaniu do c++ api. Na chwile obecną LuatOS pokrywa około 95% funkjonalności oryginalnego API układu w806 o czym informuje ta podstrona. Niestety na chwile obecną nie ma wsparcia wifi oraz ble/bt w w801.

Zakończenie

Na chwile obecną to chyba tyle. Mam nadzieje że w dość zwięzłej formie przekazałem trochę wiedzy na temat tego układu i zainteresowałem tym tematem. Moim zdaniem płytka ta jest godna polecenia osobom chcącym pobawić się czymś nowym. Szczególnie że w internecie nie ma jakiś ogromnych zasobów informacji na jej temat co sprawia że nie da się polegać na kodzie skopiowanym z internetu a trzeba samemu pomyśleć i coś napisać.
Kolejny wpis lub rozwiniecie tego KiEdYś™

Rakso