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ß
Du brauchst eine Library welche den Text rendert. z.B. TouchGFX enthält u.a. entsprechende Funktionalität: https://support.touchgfx.com/docs/introduction/welcome
:
Bearbeitet durch User
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 ....
Wastl schrieb: > Nö, braucht er nicht. Jedenfalls nicht so etwas Hoch- > gestochenes wie TouchGfx. Kann man auch selber machen, klar. Aber lohnt sich das? Besonders auch wenn man beliebige Schriftarten inklusive nicht-lateinischen Zeichen verarbeiten möchte?
Das hier: Aaron P. schrieb: > 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.
:
Bearbeitet durch User
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.
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
Aaron P. schrieb: > so hab ich gedacht gehabt Und was willst du uns damit sagen? Übrigens, hast du schon einmal die Hinweise zum Posten von Beiträgen gelesen und verstanden?
1 | ............. |
2 | Formatierung (mehr Informationen...) |
3 | ............. |
... insbesondere jetzt "C-Code" für dich relevant .....
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.
Weil ich gerade die Schnittstelle I2C testen möchte und einfach nur was ausgeben möchte.
Aaron P. schrieb: > Weil ich gerade die Schnittstelle I2C testen möchte Dann setz nur mal ein paar Pixel oder so. Sich die ganze Arbeit des Font-Renderings zu generieren nur um I2C zu testen scheint mir etwas übertrieben.
Bekomme die Fehlermeldung: error: L6047U: The size of this image (33956 bytes) exceeds the maximum allowed for this version of the linker Wo finde ich einen anderen Compiler?
Aaron P. schrieb: > Wo finde ich einen anderen Compiler? Beratungsresistenz? Schon vor fast einer Woche: Wastl schrieb: > Ich empfehle die STM hauseigene Cube IDE, da kann man sich > weitaus leichter tun wenn es um Tutorials geht.
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.