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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren