STM32F412 - SBC-OLED ansteuern

OP (Firma: Pforzheim University) #7643201
Lesenswert?
• ▲
▼

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ß

#7643207
Lesenswert?
• ▲
▼

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 ....

#7643211
Lesenswert?
• ▲
▼

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.

OP (Firma: Pforzheim University) #7643629
Lesenswert?
• ▲
▼

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 #7643749
Lesenswert?
• ▲
▼

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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.