STM32F412 - SBC-OLED ansteuern

OP (Firma: Pforzheim University) #7643201

Hallo,

ich möchte in Keil mit einem STM32F412G-Disco ein Display (SBC-OLED01) ansteuern. Ich benutze I2C für SDA und SCL die Pins PB9 und PB10.

Jetzt ist meine Frage wie ich "CH1", oder "Hallo" auf dem Display ausgeben kann? Bin neu auf KEIL.

vorgehensweise: #define PinSCL PB10
#define PinSDA PB9

#define OLED_RESET 4

uint16_t _buffer_height = 64;
uint16_t _buffer_width = 128;

Gruß

Niklas G. schrieb:

Du brauchst eine Library welche den Text rendert.

Nö, braucht er nicht. Jedenfalls nicht so etwas Hoch- gestochenes wie TouchGfx.

Es reicht sich hier zu orientieren.

https://controllerstech.com/oled-display-using-i2c-stm32/

Ein gutes Tutorial wie ich finde. Allerding fliegen einem auch hier keine gebratenen Tauben in den Mund. Etwas Eigeninitiative und Denkarbeit ist trotzdem erforderlich, schon wegen Keil ....

Das hier: Aaron P. schrieb im Beitrag #7643201:

Bin neu auf KEIL.

deutet darauf hin, daß er mit TouchGFX ganz sicher vollkommen überfordert sein wird. Der von Wastl verlinkte Beitrag ist da deutlich zielführender!

Das ist sowieso generell kein Problem der genutzten IDE, sondern ganz offensichtlich mangelt es dem TO an Erfahrung und Grundlagenwissen.

Niklas G. schrieb:

Aber lohnt sich das?

Der TO wird (nach langer Zeit) erst mal froh sein dass er überhaupt irgendwelche Schriftzeichen auf seinem Display anzeigen kann. Wie Harry bereits erwähnte dürfte er mit so einer "advanced" Lib überfordert sein.

Ich empfehle die STM hauseigene Cube IDE, da kann man sich weitaus leichter tun wenn es um Tutorials geht.

OP (Firma: Pforzheim University)

danke für die guten Links :)

#include "stm32f4xx_hal.h"

I2C_HandleTypeDef hi2c1;

void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_I2C1_Init(void);

void OLED_Init(void); // Initialisiert das OLED-Display void OLED_Clear(void); // Löscht den Inhalt des Displays void OLED_ShowString(uint8_t x, uint8_t y, char* str); // Zeigt einen String an einer bestimmten Position

int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init();

OLED_Init(); // Initialisieren Sie das OLED-Display OLED_Clear(); // Löschen Sie das Display

// Zeigen Sie "CH1" an der Position (0,0) an OLED_ShowString(0, 0, "CH1");

while (1) { // Ihre Anwendungslogik } }

static void MX_I2C1_Init(void) { hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; // 100kHz hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c1); }

so hab ich gedacht gehabt

Persönliche Seite

Warum benutzt du eigentlich nicht das Display was auf dem STM32F412G-Discovery drauf ist? Das hat eine höhere Auflösung und ist schneller weil es den parallelen Bus und nicht I2C verwendet. Für TouchGFX gibt es ein template dafür, damit müsstest du nahezu automatisch ein funktionierendes Projekt für das Display anlegen können, inklusive Treiber. Dann kannst du im grafischen TouchGFX-Designer eine interaktive Oberfläche mit Text & Co zusammenklicken ohne manuell mit Schriftarten hantieren zu müssen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.