Guten Tag Leute, neues Spielzeug! Hab ich Freundlicherweise zugespielt bekommen. Das Modell habe ich hier noch nicht antreffen können, ist mal eine ganz andere Nummer als die üblichen Einweg Systeme und auch als die hier anzutreffenden Podsysteme. Deutlich hochwertiger verarbeitet, weniger Undichtigkeiten, verachraubter Korpus der PCB und Akku trägt, ganze Platine mit flexiblem Silikon versiegelt. Deshalb hab ich auch noch nicht alle Beschriftungen erkennen können. Als MCU kommt ein Cmsemicon BAT32G135 in QFN32 zum Einsatz. Der kleinere IC links nebendran, ziemlich sicher der SPI Flash, der Haupt Transistor für die Heizung oben links am Display Laderegelung und ein Step Wandler sind drauf. Display trägt keine Beschriftung auf der Rückseite, 13 Pins. Ausgerechnet der MCU taucht nicht in der Liste bei JLink auf. (G133/G157 hingegen schon?!) Jetzt erst mal schauen, erster Versuch eine Verbindung zum MCU aufzubauen ist leider fehlgeschlagen, SWDIO/SWDCLK sind als Testpunkte verfügbar. Wer hier hat mit diesen MCU schon mal etwas gemacht?
:
Bearbeitet durch User
Schöner Akku, schönes Display. Ich habe für die am Boden teils brach liegenden Akkus noch keine Verwendung gefunden. Gleichzeitig habe ich von Ali für umsonst eine Unmenge von 1-3W LED Platinen für Taschenlampen. Da suche ich noch nach einer sehr günstigen Quelle für Treiber und Lade-ICs. LCSC ist mittlerweile schweineteuer beim Versand. Mach das Teil mal an und zähl die Pixel. Da findet sich schon was passendes bei Ali zur Identifizierung.
Keks F. schrieb: > Mach das Teil mal an und zähl die Pixel. Die Infos kommen bei Zeiten aus dem SPI Flash, Farbgebung/Bildaufbau ist weniger zum Zählen geeignet. Ja, es würde gehen, aber wieso abmühen wenn ich die Größe aus dem flash ziehen kann. ;-) Aber ich weiß gerade nicht wann ich genau dazu komme. 0,96 TFT, so viel verrät schon mal die Werbung. Angaben zur Auflösung gibt es leider aktuell nicht. Hmm mit generischem M0+ connect geht's nicht mit JLink. Ich muss gleich mal das Datenblatt genauer ansehen. Vermutlich endet es damit das ich den MCU auf einen Adapter bringen werde, wenig Platz um ohne Verrenkungen an RESET (Pin 1=SWDIO, 2=RESET, 3=SWDCLK) zu kommen, die sind direkt bei der Spule die ich für einen Step Wandler halte, mit der glibbergrütze eingekleistert. Da muss ich erst schauen ob ich mit meinen Testnadeln dran komme, ob es ein Stück Draht wird, oder ich ihn runter Nehmen werde. Im zweiten Bild, roter Punkt, markiert Pin 1, gezählt wird von der rechten Seite gegen den Uhrzeigersinn.
:
Bearbeitet durch User
Paar Details zum Display. Also, was es halt zu zeigen gibt.
Könnte passen: https://de.aliexpress.com/item/1005010441457177.html Controller wäre dann ST7735 Auflösung: 80x160
:
Bearbeitet durch User
Harry L. schrieb: > Könnte passen: Denke für deine Hilfe. Ja, der Punkt (weiß) unten links passt auch. Werde ich testen.
Ahhh, immerhin kurz!
1 | Reset: Core did not halt after reset, trying to disable WDT. |
2 | Reset: Halt core after reset via DEMCR.VC_CORERESET. |
3 | Reset: Reset device via reset pin |
4 | Reset: VC_CORERESET did not halt CPU. (Debug logic also reset by reset pin?). |
5 | Reset: Reconnecting and manually halting CPU. |
6 | Found SW-DP with ID 0x0BC11477 |
7 | DPv0 detected |
8 | CoreSight SoC-400 or earlier |
9 | AP map detection skipped. Manually configured AP map found. |
10 | AP[0]: AHB-AP (IDR: Not set, ADDR: 0x00000000) |
11 | AP[0]: Core found |
12 | AP[0]: AHB-AP ROM base: 0xE00FF000 |
13 | CPUID register: 0x410CC601. Implementer code: 0x41 (ARM) |
14 | Found Cortex-M0 r0p1, Little endian. |
15 | |
16 | ************************** |
17 | WARNING: CPU could not be halted |
18 | ************************** |
Brauch nen anderen programmer, meiner hat kein reset! Glitchen ist hier aber wegen WDT scheinbar nicht machbar, oder timing stimmt noch nicht.
Moin. Erst mal 1000ccm Kaffeeinfusion. Brutal wie der KI slob alles nützliche in den Suchergebnissen so unglaublich weit nach hinten drängt, das GitHub bezüglich PA1 (RESET) an meinem China JLink-OB war so weit am Ende der liste das hätte ich fast nicht gefunden! Keks F. schrieb: > Ich habe für die am Boden teils brach liegenden Akkus noch keine > Verwendung gefunden. Wollte ich gestern schon kurz drauf eingehen, irgendwie verloren gegangen. Erster Beitrag, letztes Bild, die mit Isolierband umwickelte Plastik umverpackung von "Fugenglättern", gefüllt mit 10x850mAh 3,7V Vape Zellen, altes Powerbank PCB drauf gepappt. Meine "is mir egal was damit passiert" Powerbank. Egal was ich an 5V Geräten finde, ob ich weiß es funktioniert oder nicht, bekommt seine Reanimation über diese Powerbank! Die hat mich an Material absolut nichts außer kurz bisschen Strom zum löten gekostet. Das PCB der Powerbank hab ich ebenfalls "gerettet". Sind die Zellen irgendwann ganz oll, kommen einfach neue rein.
:
Bearbeitet durch User
Am Pullup des Reset war genug Platz. Generic M0, 1kHz, keinerlei FW/Read protection.
Ghidra output mal durch die KI gejagt:
1 | void display_init(void) {
|
2 | |
3 | // === 1. HARDWARE RESET === |
4 | // Basis: DAT_40040000 = 0x40040000 (GPIO-Port-Basisadresse) |
5 | // Bit 3 (0x08) = RESET-Pin |
6 | |
7 | GPIO[0x07] |= 0x08; // RESET → HIGH |
8 | delay_ms(1); // FUN_00004df8(1) |
9 | GPIO[0x07] &= 0xF7; // RESET → LOW (AND mit ~0x08) |
10 | delay_ms(1); // FUN_00004df8(1) |
11 | GPIO[0x07] |= 0x08; // RESET → HIGH |
12 | delay_ms_with_check(10); // FUN_00004e34(10) |
13 | |
14 | // Zusätzlich: CS-Pin setzen (DAT_40040001, Bit 5 cleared via AND 0xDF) |
15 | GPIO[0x01] &= 0xDF; // CS → LOW (Chip Select aktiv) |
16 | |
17 | // === 2. REGISTER UNLOCK (GC9A01-spezifisch) === |
18 | spi_write_byte(CMD, 0xFE); // Inter-register command unlock 1 |
19 | spi_write_byte(CMD, 0xEF); // Inter-register command unlock 2 |
20 | |
21 | // === 3. DISPLAY KONFIGURATION === |
22 | spi_write_byte(CMD, 0xB0); |
23 | spi_write_byte(DATA, 0xC0); // Interface mode |
24 | |
25 | spi_write_byte(CMD, 0xB2); // FRMCTR2 - Frame rate normal mode |
26 | spi_write_byte(DATA, 0x24); |
27 | |
28 | spi_write_byte(CMD, 0xB3); // FRMCTR3 - Frame rate partial mode |
29 | spi_write_byte(DATA, 0x03); |
30 | |
31 | spi_write_byte(CMD, 0xB7); // ETMOD - Entry mode |
32 | spi_write_byte(DATA, 0x01); |
33 | |
34 | spi_write_byte(CMD, 0xB6); // DISSET5 - Display function control |
35 | spi_write_byte(DATA, 0x19); |
36 | |
37 | spi_write_byte(CMD, 0xAC); |
38 | spi_write_byte(DATA, 0xDB); |
39 | |
40 | spi_write_byte(CMD, 0xAB); |
41 | spi_write_byte(DATA, 0x0F); |
42 | |
43 | spi_write_byte(CMD, 0x3A); // COLMOD - Pixel format |
44 | spi_write_byte(DATA, 0x05); // 16-bit RGB565 |
45 | |
46 | spi_write_byte(CMD, 0xB4); // INVCTR - Display inversion control |
47 | spi_write_byte(DATA, 0x04); |
48 | |
49 | spi_write_byte(CMD, 0xA8); |
50 | spi_write_byte(DATA, 0x0C); |
51 | |
52 | spi_write_byte(CMD, 0xB8); // Power control sequence |
53 | spi_write_byte(DATA, 0x08); |
54 | |
55 | spi_write_byte(CMD, 0xED); |
56 | spi_write_byte(DATA, 0x03); |
57 | |
58 | spi_write_byte(CMD, 0xEA); |
59 | spi_write_byte(DATA, 0x9F); |
60 | |
61 | spi_write_byte(CMD, 0xC6); // FRCTRL2 |
62 | spi_write_byte(DATA, 0x2A); |
63 | |
64 | spi_write_byte(CMD, 0xC7); |
65 | spi_write_byte(DATA, 0x10); |
66 | |
67 | // === 4. GAMMA POSITIV (0xF0) — 13 Bytes === |
68 | spi_write_byte(CMD, 0xF0); |
69 | spi_write_byte(DATA, 0x09); |
70 | spi_write_byte(DATA, 0x35); |
71 | spi_write_byte(DATA, 0x2A); |
72 | spi_write_byte(DATA, 0x4A); |
73 | spi_write_byte(DATA, 0xA9); |
74 | spi_write_byte(DATA, 0x39); |
75 | spi_write_byte(DATA, 0x35); |
76 | spi_write_byte(DATA, 0x60); |
77 | spi_write_byte(DATA, 0x00); // ← Sonderfall: mov r0,r1 bei 0x364A |
78 | spi_write_byte(DATA, 0x14); |
79 | spi_write_byte(DATA, 0x0A); |
80 | spi_write_byte(DATA, 0x16); |
81 | spi_write_byte(DATA, 0x10); |
82 | spi_write_byte(DATA, 0x1F); |
83 | |
84 | // === 5. GAMMA NEGATIV (0xF1) — 14 Bytes === |
85 | spi_write_byte(CMD, 0xF1); |
86 | spi_write_byte(DATA, 0x13); |
87 | spi_write_byte(DATA, 0x24); |
88 | spi_write_byte(DATA, 0x55); |
89 | spi_write_byte(DATA, 0x3C); |
90 | spi_write_byte(DATA, 0xC6); |
91 | spi_write_byte(DATA, 0x16); |
92 | spi_write_byte(DATA, 0x3F); |
93 | spi_write_byte(DATA, 0x60); |
94 | spi_write_byte(DATA, 0x08); |
95 | spi_write_byte(DATA, 0x06); |
96 | spi_write_byte(DATA, 0x0D); |
97 | spi_write_byte(DATA, 0x1F); |
98 | spi_write_byte(DATA, 0x1C); |
99 | spi_write_byte(DATA, 0x10); |
100 | |
101 | // === 6. SLEEP OUT + DISPLAY ON === |
102 | spi_write_byte(CMD, 0x11); // SLPOUT - Exit sleep mode |
103 | delay_ms_with_check(100); // Pflicht-Delay nach SLPOUT (r0=0x64) |
104 | |
105 | spi_write_byte(CMD, 0x29); // DISPON - Display on |
106 | delay_ms_with_check(10); |
107 | |
108 | // === 7. BACKLIGHT EINSCHALTEN === |
109 | GPIO[0x01] |= 0x20; // BL-Pin → HIGH (Bit 5 setzen) |
110 | set_pwm_backlight(0); // FUN_00005666(0) → PWM init mit Standardhelligkeit |
111 | } |
Der Adapter hat sich mehr als lange Zeit gelassen um aus China hier Einzutrudeln, hat sich aber echt gelohnt! Wer sowas sucht: https://amzn.eu/d/07pQ0dVY Seine 5€ ist er jedenfalls wert.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.














