CH341 à la Bus Pirate - günstig und mäßig nützlich

Ich möchte eine Anwendung vorstellen, bei der es sich um eine Reihe von Testtools handelt, die CH341 als physikalische Schnittstelle verwenden.
Der ursprüngliche Zweck dieser Anwendung war die Reparatur von Laptop-Akkus.
Da ich mich jedoch zunächst mit dem CH341-Chip vertraut machen musste, begann ich mit grundlegenden Funktionen wie der I2C-Unterstützung, und die Anwendung nahm die Form einer Sammlung von lose miteinander verbundenen Modulen an.
Die Programmierung von smart battery erwies sich als komplizierter als erwartet und da ich nur wenige solcher Batterien habe, beschränkte ich mich vorerst darauf, ihre Parameter auszulesen.

Daraus entstand jedoch ein Tool mit einem größeren Funktionsumfang, das an Bus Pirate erinnert.
Derzeit (Version 1.04) umfasst die Funktionalität:
- Erkennung von I2C-Geräten
- Schreiben/Lesen von Rohdaten über I2C, SPI
- Auslesen des Status von smart battery
- Unterstützung von Sensoren: BME280/BMP280, Si7021, BMP180, SHT11, LM75, AHT10/AHT20, AS5600, APDS-9960, L3G4200D, BMI160, MPU6050, VL53L0X
- Unterstützung von Displays: HD44780 direkt und über PCF8574, SSD1306, MAX7219 8x8 LED, CH455 LED von einem DVB-T-Decoder
- Unterstützung für Si5351A Generator
- Unterstützung für den FM-Tuner RDA5807M
- Unterstützung für RTC DS1302 und DS1307
- Unterstützung des MCP4725 DAC und ADC ADS1115
- Lesen/Schreiben von ETH PHY-Registern über die MDIO-Schnittstelle (Clause 22 + MMD)
- Unterstützung der Funktion zur Messung der Ethernet-Kabellänge über LAN8742 (TDR + CBLN)
Einige Screenshots und Fotos:





Als „Spender“ diente der WIWA HD-102 (Netzteil schon vor der Umstellung auf DVB-T2 durchgebrannt), bei dem das Display mit der Steuerung auf einer separaten Platine untergebracht ist, die mit einem Flachbandkabel verbunden ist.





Eine Kuriosität: eindeutig „ausgebrannte“ Segmente des Displays, wo ‚C‘ als „CHANNEL“ angezeigt wurde:

Dies ist bereits der Großteil des elektronischen Kleinkrams, den ich besitze und handhaben kann.
Ich habe auf die typische Verwendung des CH341A als serieller Speicherprogrammierer verzichtet, da es bereits eine große Auswahl an Software gibt, die dies unterstützt. Soweit ich weiß, erlauben die Einschränkungen und Unzulänglichkeiten (begrenzte SPI-Geschwindigkeit, Unregelmäßigkeit der UART-Ausgangswellenform bei höheren Geschwindigkeiten) des CH341 keine Implementierung des 1-Wire- oder des WS2812-Protokolls.
Die Unterstützung für eine bestimmte Schaltung ist meist auf grundlegende oder ausgewählte Funktionen beschränkt, die zwar das Testen, aber nicht unbedingt den Zugang zu allen Möglichkeiten ermöglicht. Ein Großteil des Quellcodes stammt aus anderen Open-Source-Projekten, ich halte mich jedoch an Lizenzen, die bei kommerzieller Nutzung keine Probleme bereiten würden.
Eine etwas längere Beschreibung: https://tomeko.net/software/CH341A_tool/.
Anhänge: Quellcode (Turbo C++ 2006, eine der alten Versionen von C++ Builder) und ausführbare Datei. Die Anwendung funktioniert nur unter Windows x86 oder x64, nicht mit Windows ARM oder Wine.
Es ist erforderlich, den Treiber „CH341PAR“ zu installieren (wenn CH341 als Programmierer verwendet wurde, ist dieser Treiber wahrscheinlich bereits installiert), ohne ihn startet die Anwendung nicht.
Kommentare
Kommentar hinzufügen