Chciałbym przedstawić aplikację będącą zbiorem testowych narzędzi używających CH341 jako interfejsu fizycznego.
Pierwotnym przeznaczeniem tej aplikacji miała być naprawa baterii laptopowych.
Musiałem jednak wcześniej zapoznać się z układem CH341, zacząłem od bardziej elementarnych funkcji jak obsługa I2C a aplikacja przybrała formę zbioru luźno powiązanych modułów.
Programowanie smart battery okazało bardziej skomplikowane niż się spodziewałem i biorąc pod uwagę że mam takich baterii tylko kilka, poprzestałem na razie na odczycie ich parametrów.
Powstało z tego jednak narzędzia o szerszym zakresie funkcji, przypominające Bus Pirate.
Obecnie (wersja 1.04) funcjonalność obejmuje:
- wykrywanie urządzeń I2C
- zapis/odczyt surowych danych z użyciem I2C, SPI
- odczyt stanu smart battery
- obsługę czujników: BME280/BMP280, Si7021, BMP180, SHT11, LM75, AHT10/AHT20, AS5600, APDS-9960, L3G4200D, BMI160, MPU6050, VL53L0X
- obsługę wyświetlaczy: HD44780 bezpośrednio i poprzez PCF8574, SSD1306, MAX7219 8x8 LED, CH455 LED z dekodera DVB-T
- obsługę generatora Si5351A
- obsługę tunera FM RDA5807M
- obsługę RTC DS1302 i DS1307
- obsługę DAC MCP4725 i ADC ADS1115
- odczyt/zapis rejestrów ETH PHY poprzez interfejs MDIO (Clause 22 + MMD)
- obsługę funkcji pomiaru długości kabla Ethernet przy pomocy LAN8742 (TDR + CBLN)
Kilka zrzutów ekranu i zdjęć:
O sterowniku LED i klawiatury CH455 dowiedziałem się z tematu https://www.elektroda.pl/rtvforum/topic4066595.html, ale u mnie "dawcą" była WIWA HD-102 (spalony zasilacz jeszcze przed przejściem na DVB-T2) w której wyświetlacz ze sterownikiem umieszczony jest na osobnej płytce połączonej taśmą.
Ciekawostka: wyraźnie "wypalone" segmenty wyświetlacza na których wyświetlane było "C" jak "CHANNEL":
Jest to już większość elektronicznej drobnicy jaką posiadam i którą da się obsłużyć.
Pominąłem typowe użycie CH341A jako programatora pamięci szeregowych, ponieważ jest już spory wybór obsługującego to oprogramowania.
Według mojego obecnego stanu wiedzy, ograniczenia i niedoróbki (ograniczona szybkość SPI, nieregularność przebiegu na wyjściu UART dla wyższych szybkości) CH341 nie pozwolą na zaimplementowanie 1-wire albo protokołu WS2812.
Obsługa danego układu najczęściej ogranicza się do podstawowych lub wybranych funkcji, umożliwiając przetestowanie ale niekoniecznie dając dostęp do wszystkich możliwości.
Spora część kodu źródłowego pochodzi z innych projektów otwartoźródłowych, ale trzymam się licencji które nie wprowadzałyby problemów przy komercyjnym użyciu.
Trochę dłuższy opis: https://tomeko.net/software/CH341A_tool/.
W załącznikach: kod źródłowy (Turbo C++ 2006, jedna z antycznych wersji C++ Builder) oraz plik wykonywalny.
Aplikacja działa tylko pod kontrolą Windows x86 lub x64, nie działa z Windows ARM ani z Wine.
Wymagane jest zainstalowanie sterownika "CH341PAR" (jeżeli CH341 był używany jako programator, to ten sterownik jest już prawdopodobnie zainstalowany), aplikacja nie uruchomi się bez niego.
Fajne? Ranking DIY