Forum: Mikrocontroller und Digitale Elektronik neuere BluePill (WeAct) I2C1 will nicht


von Christoph K. (chriskuku)


Lesenswert?

Habe ein kleines Programm auf einer älteren BluePill laufen. Macht eine 
Ausgabe auf einem 128x64 OLED Display an I2C (pins PB6/PB7).

Hatte mir dieser Tage (am 30.3. bei Aliexpress) 3 Stck. BluePill, das 
Stück für 2,61€ inkl. Versand bestellt. Kam heute morgen (4 Tage!). Teil 
macht eigentlich einen guten Eindruck. Auf der Unterseite noch footprint 
zum Auflöten eines SPI Rams. Vergoldete Kontakte.

Programmiere es mit einem auf Blackmagic umprogrammierten 
stlinkv2-USB-Dongle. Habe die BluePill in einer 2-reihigen Sockelleiste 
stecken, das Ganze in einer Lochrasterplatine. Alte raus, neue rein. 
Programmiert, OLED geht nicht. Ich kann wahlweise die Bluepill mit 5V 
vom Netzteil auf der Platine oder von 3,3V vom Dongle betreiben, 
natürlich jeweils die andere Spannung inaktiv. Programmierung lief. Ich 
kann auch hineinsteppen ins Programm. Aber hier scheint das Programm zu 
hängen:

<pre>
Thread #1 1 (Suspended : Signal : SIGINT:Interrupt)
  HAL_GetTick() at stm32f1xx_hal.c:305 0x8001e70
  I2C_WaitOnFlagUntilTimeout() at stm32f1xx_hal_i2c.c:7,306 0x8002bda
  HAL_I2C_IsDeviceReady() at stm32f1xx_hal_i2c.c:3,568 0x8002918
  SSD1306_Init() at ssd1306.c:171 0x800134c
  main() at main.c:181 0x8000978

</pre>
Wie gesagt, auf der älteren BP läuft das OLED Display an I2C (PB6/PB7).
Jemand eine Idee?

EDIT: erinnere mich vage: braucht's da irgendwo einen Pullup?

: Bearbeitet durch User
von Bernd N. (_bn_)


Lesenswert?

Christoph K. schrieb:
> Hatte mir dieser Tage (am 30.3. bei Aliexpress) 3 Stck. BluePill, das...
Beim Ali, was erwartest du? fake chip.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Christoph K. schrieb:
> braucht's da irgendwo einen Pullup?

Sollte auf dem Display vorhanden sein (an SCL und SDA), allerdings für 
meinen Geschmack zu hochohmig.

von Christoph K. (chriskuku)


Lesenswert?

Wie ist das mit der I2C clock, könnte es da Unterschiede geben? 400000 
KHz ist eingestellt. Beide CPUs sind STM32F103C8T6. Tragen auch das ST 
Logo. Nichts weggelasert.

von Peter L. (pelikan)


Lesenswert?

>>400000 KHz ist eingestellt

geil, I2C mit 400MHz Takt!

von Christoph K. (chriskuku)


Lesenswert?

Peter L. schrieb:
>>>400000 KHz ist eingestellt
>
> geil, I2C mit 400MHz Takt!

Man kann sich auch mal vertippen. Herabsetzen auf 200 KHz bringt auch 
nichts.

: Bearbeitet durch User
von Peter L. (pelikan)


Lesenswert?

kannst du bitte mal ein Foto vom Chip einstellen?
Habe hier einige gut aussehende Chips mit STM-Aufdruck und doch Fakes.
Haben z.B. keinen Timer5.
Kannst du die I2C Register ansprechen?

von J. S. (jojos)


Lesenswert?

WeAct sind die guten, sofern keine Kopie. Gibt es leider auch, siehe
https://github.com/WeActStudio/BluePill-Plus

Da sind auch Links zu guten/schlechten Shops.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

J. S. schrieb:
> WeAct sind die guten, sofern keine Kopie. Gibt es leider auch, siehe
> https://github.com/WeActStudio/BluePill-Plus
>
> Da sind auch Links zu guten/schlechten Shops.

War eigentlich auch mein Eindruck. Hier Foto. Sorry, das war das falsche 
Foto (das ist vom alten, der funktioniert). Neues kommt gleich...

: Bearbeitet durch User
von Thomas W. (datenreisender)


Lesenswert?

Christoph K. schrieb:
> J. S. schrieb:
>> WeAct sind die guten, sofern keine Kopie. Gibt es leider auch, siehe
>> https://github.com/WeActStudio/BluePill-Plus
>>
>> Da sind auch Links zu guten/schlechten Shops.
>
> War eigentlich auch mein Eindruck. Hier Foto. Sorry, das war das falsche
> Foto (das ist vom alten, der funktioniert). Neues kommt gleich...

Banal: Hast Du sie bei Weact Studio gekauft?

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Thomas W. schrieb:
> Christoph K. schrieb:
>> J. S. schrieb:
>>> WeAct sind die guten, sofern keine Kopie. Gibt es leider auch, siehe
>>> https://github.com/WeActStudio/BluePill-Plus
>>>
>>> Da sind auch Links zu guten/schlechten Shops.
>>
>> War eigentlich auch mein Eindruck. Hier Foto. Sorry, das war das falsche
>> Foto (das ist vom alten, der funktioniert). Neues kommt gleich...
>
> Banal: Hast Du sie bei Weact Studio gekauft?

Ist ja gar nicht mal so leicht, überhaupt herauszukriegen, bei wem man 
hinter Aliexpress gekauft hat.

Auch das Shop könnte natürlich eine Fälschung sein.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

An SDA und SCK mal gegen Vcc gemessen und es war "kein einziges Ohm" zu 
sehen :). 4,7k Pullups eingelötet. Bringt aber nichts. Habe jetzt auch 
alle drei Exemplare durchgetestet. Alle zeigen das gleiche 
Fehlverhalten. Nach wie vor das Hängen in der I2C 
I2C_WaitOnFlagUntilTimeout().

Das Etikett auf der Packung sieht etwas suspekt aus, findet Ihr nicht?

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Christoph K. schrieb:
> Das Etikett auf der Packung

ist irrelevant, zeig ein Bild vom Inhalt.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Christoph K. schrieb:
> An SDA und SCK mal gegen Vcc gemessen und es war "kein einziges Ohm" zu
> sehen :)

Wenn deine Display Module auch die üblichen Spannungsregler enthalten, 
musst du gegen die interne VCC (3,3V) messen, nicht extern. Oder einfach 
im laufenden Betrieb ein Multimeter dran halten. Im Ruhezusatnd sollte 
die Spannung eindeutig HIGH sein.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Inhalt (nach Zusammenbau) s. Foto.

von Harald K. (kirnbichler)


Lesenswert?

Christoph K. schrieb:
> s. Foto.

Darauf kann man nichts erkennen, keine IC-Beschriftungen, gar nichts.

Leg' die Platine auf einen weniger hellen Untergrund, beleuchte sie mit 
möglichst diffusem (aber ausreichend viel) Licht und halte Dein 
Smartphone möglichst parallel zur Platine. Nimm Dir eine Schachtel oder 
ähnliches, stell die neben Deine Platine und leg' Dein Smartphone da 
drauf, dann ist es a) vernünftig ausgerichtet und b) es verwackelt 
nicht, weil Du es nicht in der Hand hältst.

Und sieh Dir das Bild vor dem Hochladen wenigstens selbst mal an.

von Thomas W. (datenreisender)


Lesenswert?

Harald K. schrieb:
> Christoph K. schrieb:
>> s. Foto.
>
> Darauf kann man nichts erkennen, keine IC-Beschriftungen, gar nichts.

Ist auch nicht noetig: Das ist schon der Real Deal, WeAct Studio hat 
auch eine vernuenftige Reputation.

Ich hatte Anfang 2025 Bluepill von WeAct gekauft, auf dem Chip steht:
1
stm32f
2
103cbt6
3
992e4 0893
4
mys 99 223

Unter der letzten Zeile
1
ST-Logo (e4) X
Das X ist (lt. Technical Note TN1433 von ST) die Revision. Gucke bitte 
mal, ob die Revision bei Deiner funktionsfaehigen Bluepill anders ist. 
Gucke bitte auch die Errata-Sheet fuer den F103 fuer den Bereich I2C.

Was fuer ein Display hast Du? Hast Du die SW selbst geschrieben?

Gruesse

Th.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Thomas W. schrieb:
> Gucke bitte auch die Errata-Sheet fuer den F103 fuer den Bereich I2C.

Die HAL enthält funktionierende Workarounds für die I²C Bugs.

von Stefan K. (stk)


Lesenswert?

Christoph K. schrieb:
> War eigentlich auch mein Eindruck. Hier Foto. Sorry, das war das falsche
> Foto (das ist vom alten, der funktioniert). Neues kommt gleich...

Wenn das doppelt vorhandene Bild eins der neuen Boards zeigt ist der 
Controller darauf wahrscheinlich echt. Der 2D Code, den ST für das Werk 
ST MUAR Malaysia Ende 2022 eingeführt hat, dürfte (noch) nicht auf allzu 
viel Fälschungen zu finden sein.
https://www.mouser.com/PCN/STMicroelectronics_13318_merged.pdf

von Christoph K. (chriskuku)


Lesenswert?

Harald K. schrieb:
> Christoph K. schrieb:
>> s. Foto.
>
> Darauf kann man nichts erkennen, keine IC-Beschriftungen, gar nichts.
>
> Leg' die Platine auf einen weniger hellen Untergrund, beleuchte sie mit
> möglichst diffusem (aber ausreichend viel) Licht und halte Dein
> Smartphone möglichst parallel zur Platine. Nimm Dir eine Schachtel oder
> ähnliches, stell die neben Deine Platine und leg' Dein Smartphone da
> drauf, dann ist es a) vernünftig ausgerichtet und b) es verwackelt
> nicht, weil Du es nicht in der Hand hältst.
>
> Und sieh Dir das Bild vor dem Hochladen wenigstens selbst mal an.

Wenn Du den Thread verfolgt hättest, dann hättest Du gesehen, daß ich 
speziell belichtete Fotos der IC Beschriftung hochgeladen habe.

von Harald K. (kirnbichler)


Lesenswert?

Christoph K. schrieb:
> dann hättest Du gesehen, daß ich
> speziell belichtete Fotos der IC Beschriftung hochgeladen habe.

Zu denen Du dazugeschrieben hast, daß das die älteren Platinen wären.

von Christoph K. (chriskuku)


Lesenswert?

Harald K. schrieb:
> Christoph K. schrieb:
>> dann hättest Du gesehen, daß ich
>> speziell belichtete Fotos der IC Beschriftung hochgeladen habe.
>
> Zu denen Du dazugeschrieben hast, daß das die älteren Platinen wären.

Zuerst Foto (Singular) die ältere Platine, dann folgten Fotos 
(Dubletten) nachgeschoben von der neueren.

von Harald K. (kirnbichler)


Lesenswert?

Hättest Du Dich klarer ausgedrückt ...

von Thomas Z. (usbman)


Lesenswert?

Du machst es den Helfern echt schwer. Jetzt check halt mal die  Pullups 
am I2C Bus.
- einmal ohne Display gegen VCC und gegen V33
- einmal mit Display gegen VCC und gegen V33
Das ganze halt einmal mit dem alten und dem neuen Board. Alle 
Widerstandsmessungen ohne Stromversorgung.
Wie hoch sind die Messwerte?

Ist das Display an 3.3V oder Vcc angeschlossen?
Wie sind die Chip Revisionen?

Dir ist schon klar dass du einmal ein Blupill Board hast und einmal ein 
Bluepill+ Board. Die sind schaltungstechnisch nicht 100% gleich.
Eine vernünftige Skizze wie alles verschaltet ist wäre auch nicht 
schlecht. Parameter beim Aufruf von I2C_WaitOnFlagUntilTimeout() wären 
auch nicht schlecht.

https://sourcevu.sysprogs.com/stm32/HAL/symbols/I2C_WaitOnFlagUntilTimeout

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Harald K. schrieb:
> Hättest Du Dich klarer ausgedrückt ...

Ok. Geklärt.
Der funktionierende (nicht WeAct) hat (e4) 2 drauf stehen.
Der WeAct hat neben dem ST auch (e4) und dann folgt der QR-Code.

<PRE>
99217 93 X
MSYS 410 RM
</PRE>

Benutze ein Paket SD1306.c möglicherweise von Stefan Frings. Müßte 
gleich mal in die Source gucken.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

<pre>
ssd1306.c:

/**
 * original author:  Tilen Majerle<tilen@majerle.eu>
 * modification for STM32f10x: Alexander Lutsai<s.lyra@ya.ru>

   ----------------------------------------------------------------------
     Copyright (C) Alexander Lutsai, 2016
        Copyright (C) Tilen Majerle, 2015
</pre>

Aus den Chip Revisionen werde ich momentan nicht schlau.

von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Habe jetzt die Pullup-Situation noch mal untersucht und korrigiert. 
Hatte das Display mit 4.7k an SCL und SDA hoch zu 5V. Sind jetzt an 3.3V 
angeschlossen. Und ich betreibe das Board jetzt auch erst mal bis zur 
Klärung des Problems nur noch an 3.3V über den USB Programmier Dongle.

Situation ist jetzt so, daß die alte BluePill mit dem OLED Display 
funktioniert, die neue nicht.

Die Chiprevision ist nicht aus der Firmware auslesbar? Gut, es nennt 
sich BluePill+. Der Schaltplan weist aber keine Änderungen auf, die für 
meine Anschlüsse relevant sind. OLED geht an PB7-SDA, PB6-SCL. Dann habe 
ich noch PA0-PA3 (Outputs) und PB8-PB15 (Inputs) und ON_BOARD_LED war 
beim alten an PC13 pull down und ist am WeAct an PB2 von Output High 
getrieben. Letzteres habe ich jetzt mal berücksichtigt und im .ioc 
konfiguriert.

Werde mir dann mal die I2C Errata zur Brust nehmen.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Christoph K. schrieb:
> Die Chiprevision ist nicht aus der Firmware auslesbar?

Beim original STM32F103 nicht, bei Fälschungen geht es oft.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?


von Stefan K. (stk)


Angehängte Dateien:

Lesenswert?

Christoph K. schrieb:
> Der WeAct hat neben dem ST auch (e4) und dann folgt der QR-Code.
>
> <PRE>
> 99217 93 X
> MSYS 410 RM
> </PRE>

Die Chiprevision steht nach der oben verlinkten Proccess Change 
Notification am Ende der vorletzten Zeile: "X".
Bei meinem Controller, bei dem das Packaging ebenfalls in Malaysia 
erfolgte, steht dort eine "2" und auch der Wafer Diffusion Plant code 
links daneben ist anders.

von Wastl (hartundweichware)


Lesenswert?

Christoph K. schrieb:
> Jemand eine Idee?

Wenn es dir nicht auf das letzte Quäntchen an Geschwindigkeit
ankommt: Ein Soft-I2C Treiber löst fast alle I2C Probleme
dieser Welt. Und man kann sich die beiden I2C Pins praktisch
völlig frei auswählen.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Gelöst. Mea culpa. Asche auf mein Haupt. Die ganze Diskussion über Fake, 
Errata, Pullups, gute Shops schlechte Shops etc. konnte sich in Luft 
auflösen. Einer hat hier eine Bemerkung gemacht (Thomas Z. usbman), die 
mich noch mal aufhorchen ließ. Bluepill+. Die hat eine etwas andere 
Pinbelegung auf dem Footprint. Pin 1 in einer der beiden Reihen hat 
Vcc(!). Da ist bei der älteren BluePill G drauf.
Zufälligerweise war meine Verdrahtung für das Display so, daß es sich 
den GND von just diesem Pin1 nahm, so daß am Display an GND auch Vcc 
lagen. Zufall und Glück zugleich, sonst hätte es vielleicht schlimmere 
Folgen gehabt.

Danke aber für die lange und aufschlußreiche Diskussion. Bei der 
Gelegenheit möchte ich noch eine kleine Warnung loswerden, die auch in 
die Kategorie Pinbelegung fällt. Ich hatte mir im Zuge der Forschung 
vorgestern noch zwei OLED Displays 1,3" OLED I2C Display Modul Binghe 
auf emerson gekauft. Kurz bevor ich sie auf einem Breadboard verdrahten 
wollte, guckte ich noch mal drauf und stellte fest, daß die 4 Pins wie 
folgt belegt waren:

Vcc GND SCK SDA

Währen die alten, die ich in die Lochrasterplatine eingelötet hatte, die
(eigentlich intuitivere) Belegung wie folgt tragen:

GND Vcc SCK SDA

: Bearbeitet durch User
von 900ss (900ss)


Lesenswert?

Christoph K. schrieb:
> Gelöst. Mea culpa. Asche auf mein Haupt.

Mir ist es auch schon so gegangen mit diesen Boards. "Keines" gleicht 
dem anderen, nur der Name. Man muss wirklich sehr genau prüfen, was man 
in der Hand hat und ob das Schaltbild auf dem Bildschirm dazu gehört.

Schön auch dass du die Lösung hier beschreibst.

: Bearbeitet durch User
von G. K. (zumsel)


Lesenswert?

900ss schrieb:

> Mir ist es auch schon so gegangen mit diesen Boards. "Keines" gleicht
> dem anderen, nur der Name. Man muss wirklich sehr genau prüfen, was man
> in der Hand hat und ob das Schaltbild auf dem Bildschirm dazu gehört.

Und dieser Laden ( https://weactstudio.de.aliexpress.com/store/910567080 
) verkauft auch verschiedene Varianten von diesem Board.

Teilweise sind in dem Shop auch u.a. unterschiedliche CPUs als "Farbe" 
in dem Shop auswählbar.

Ich habe dort letztes WE selbst was bestellt und war zuerst auch etwas 
verwirrt, letztendlich ist es aber besser wenn solche Unterschiede 
ausgewiesen sind.

: 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
Noch kein Account? Hier anmelden.