BK7231GUIFlashTool wersja 98 i wyższa wprowadza nową metodę flashowania Beken poprzez SPI. Wymagany jest tylko programator SPI CH341. Metoda ta może być używana do odzyskiwania uszkodzonych urządzeń Beken, których bootloader został nadpisany. Może również służyć jako uniwersalny flasher SPI, obsługujący różne układy pamięci.
Zalecane lektury
Ten temat opiera się na mojej poprzedniej prezentacji, BK7231 Programowanie przez SPI w trybie pamięci Flash - Python i Banana Pi . Tutaj rozszerzę tę wiedzę i dostosuję tę samą logikę do użytku z CH341 i C#.
Ponadto obecne podejście opiera się na pracy @divadiow - patrz ten post . Główną różnicą jest to, że przeszliśmy na bardziej kompletne i odpowiednie narzędzie.
Wymagany sprzęt
Do tego poradnika będziesz potrzebował programatora CH341 - tego samego, który został użyty w naszym filmie lub podobnego modelu:
Dodatkowo będziesz potrzebował lutownicy, aby podłączyć przewód do pinu D2, który będzie używany do sterowania CEN:
Oto jak to wygląda w mojej konfiguracji:
Alternatywnie można użyć innej wersji CH341 - tej z wyprowadzonymi pinami:
Upewnij się, że zworka urządzenia jest ustawiona w pozycji I2C , aby system Windows wykrył go jako USB-EPP/I2C.... CH341A .
Następnie podłącz CH341 do urządzenia Beken w trybie SPI:
Użyj następujących pinów: P20, P21, P22, P23 (SCK, CSN, SI i SO).
Jak zwykle należy podłączyć MOSI → SI i MISO → SO . Dodatkowo należy podłączyć CEN do wspomnianego wcześniej pinu D2 .
Można również sprawdzić oznaczenia płyty - mogą być dostępne na niektórych urządzeniach.
Oto przykładowe zdjęcie od @divadiow:
Podsumowanie połączeń:
| Generic IO | Tuya Doorbell Pads | CH341A |
| CE/CEN | CE | D2 |
| SCK | TCK | SCK |
| CSN | TMS | CS0 |
| SI | TDI | MOSI |
| SO | TDO | MISO |
| GND | GND | GND |
Tak więc nazewnictwo padów może się różnić, ale połączenie pozostaje takie samo. Nie zapomnij podłączyć zasilania.
Szczegóły implementacji
Omiń tę sekcję, jeśli chcesz po prostu sflashować swoje urządzenie!
Chipy Beken zawierają tryb SPI - w tym trybie zachowują się jak standardowa pamięć SPI, używając tych samych szczegółów protokołu i poleceń. Opisałem to w poprzednim temacie .
Jednak ten tryb jest dostępny tylko po wejściu w tryb SPI - dlatego potrzebujemy niestandardowego skryptu i pinu D2 podłączonego do CEN. Nowe narzędzie flasher wykorzystuje wiązania CH341 DLL C#, aby najpierw przełączyć CEN, resetując urządzenie Beken, a następnie wysyła 0xD2 bajty, aby przełączyć je w tryb SPI. Następnie obsługuje układ Beken tak, jak każdą inną pamięć flash SPI. W naszej implementacji, klasa SPIFlasher_Beken dziedziczy z generycznej klasy SPIFlasher, dzięki czemu jest wielokrotnego użytku i daje nam "darmową" obsługę generycznej pamięci flash SPI.
Kod: C#
Co ciekawe, po przełączeniu w tryb SPI można nawet użyć ogólnego narzędzia do flashowania SPI, takiego jak CH341 Programmer lub NeoProgrammer . Nie jest to jednak konieczne - szczegóły w następnej sekcji.
REKLAMA
Użycie narzędzia Flash dla Beken
Najpierw pobierz nasze narzędzie z poniższego linku:
https://github.com/openshwprojects/BK7231GUIFlashTool
Możesz pobrać jeden z gotowych plików binarnych lub skompilować go samodzielnie w Visual Studio.
Po uruchomieniu narzędzia powinieneś zobaczyć okno jak poniżej - wybierz typ układu Beken SPI :
Następnie można użyć przycisków do Read , Write , Weryfikuj lub Erase firmware.
Jeśli napotkasz błąd taki jak ten poniżej:
Backup name has not been set, so output file will only contain flash type/date.
Now is: niedziela, 5 października 2025 00:35:37.
Flasher mode: BekenSPI
CH341 error Failed to open CH341 device.
Starting flash read, ofs 0x0, len 0x0
Done!
Performing a Beken CEN reset on D2 of CH341...
Failed to toggle CEN - is CH341 connected and ok?
Sprawdź, czy CH341 jest prawidłowo skonfigurowany i wykryty przez komputer.
Jeśli układ Beken nie wchodzi w tryb SPI, sprawdź połączenia SPI i CEN.
Po prawidłowym podłączeniu narzędzie powinno poprawnie zidentyfikować ID i rozmiar pamięci flash oraz rozpocząć wybraną operację.
Przykładowe wyjście ID (wartości mogą się różnić):
JEDEC ID: FF-EF-40-16
Detected flash size: 4096 KB
Poczekaj na zakończenie całej operacji:
Aby zapisać oprogramowanie układowe, wystarczy przeciągnąć i upuścić plik binarny do okna flashera:
Przykładowa aplikacja
Ta metoda może być użyta do odzyskania zablokowanego urządzenia kamery BK7252:
Użycie narzędzia Flash dla generycznego SPI
Narzędzie może również obsługiwać generyczne układy SPI. Chociaż nie ma jeszcze pełnej listy identyfikatorów JEDEC, próbuje dekodować rozmiar pamięci flash bezpośrednio z identyfikatora - może to ulec poprawie w przyszłych aktualizacjach.
Wystarczy podłączyć pamięć SPI tak, jak w przypadku każdego innego flashera i wybrać tryb Generic SPI :
To powinno działać bez problemu. W razie wątpliwości zawsze można uruchomić Verify w celu potwierdzenia.
Podsumowanie .
Dzięki najnowszym wersjom BK7231GUIFlashTool (v98 i wyżej), możesz łatwo odzyskać uszkodzone urządzenia Beken i sflashować nowe oprogramowanie układowe przy użyciu tylko programatora CH341. Nowy BK7231GUIFlashTool wykorzystuje CH341 do łatwiejszego sterowania trybem BK SPI i flashowania.
Podsumowując:
- Ustaw zworkę CH341 na tryb I2C (jeśli dotyczy).
- Podłącz linie SPI ( P20, P21, P22, P23 ) i CEN do D2 , zasil urządzenie.
- Użyj trybu Beken SPI w narzędziu flasher.
- Sprawdź połączenia, jeśli pojawi się błąd CEN toggle lub CH341 not detected .
- Narzędzie może również obsługiwać Generic SPI chipy flash w razie potrzeby.
To podejście jest znacznie prostsze niż wcześniejsza metoda Banana/Raspberry PI i mam nadzieję, że sprawi, że flashowanie SPI chipów Beken będzie łatwiejsze dla każdego.
Pobierz tutaj: https://github.com/openshwprojects/BK7231GUIFlashTool
Wciąż pracujemy nad dodaniem kolejnych funkcji do naszego flashera, w tym wsparcia dla innych platform, więc bądź na bieżąco i daj nam znać, jeśli masz jakieś prośby o funkcje!
Fajne? Ranking DIY Pomogłem? Kup mi kawę.