Hallo Forengemeinde, Ich habe ein kleines Verständnis Problem mit dem I2C Datenpaket, es handelt sich um ein SSD1306 Controller für OLED. Ich möchte den Command Befehl aus dem Angehangenen Bild SSD1306_1 zu dem Controller schicken. Ich würde es in dem Format schicken wie ich es "Skizziert" habe in InkedSSD1306_2_LI. Einzelne Command befehle kann ich ohne Probleme versenden, aber bei Command Befehlen die in mehreren Registern schreiben habe ich anscheinend so meine Problem. Die Slave Adresse des SSD1306 ist 0x78 für Command befehle. Ich freue mich auf eure Antworten. mfg Mathias
Schau dir einfach die Funktion 'lcd_gotoxy' in dem File 'lcd.c' aus folgendem Beitrag an: Beitrag "SSD1306/1309 Library zum Darstellen von Text auf OLED Displays" Da wird die Startadresse und Endadresse nacheinander geschrieben.
Mathias G. schrieb: > aber bei > Command Befehlen die in mehreren Registern schreiben habe ich > anscheinend so meine Problem. Fehlt noch die Beschreibung wie sich dein(e) Problem(e) äussert(n).
Das OLED zeigt leider nicht das an was es soll. Also ich möchte immer in der ersten Page schreiben und den ersten column. leider wandert mein Text immer über das Display hier mal ein bissel c Code von meinen Programm.
1 | void Display_cursor(uint8_t x, uint8_t y) |
2 | {
|
3 | uint8_t data[8]; |
4 | |
5 | x = x * 6; |
6 | |
7 | data[0] = 0x00; |
8 | data[1] = 0xb0 + y; |
9 | data[2] = 0x00; |
10 | data[3] = 0x21; |
11 | data[4] = 0x00; |
12 | data[5] = x; |
13 | data[6] = 0x7F; |
14 | data[7] = 0x00; |
15 | |
16 | HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)0x78, data, 8, 1); |
17 | }
|
Das ist das was ich zum OLED schicke. Das hier habe ich auch schon probiert:
1 | void Display_cursor(uint8_t x, uint8_t y) |
2 | {
|
3 | uint8_t data[8]; |
4 | |
5 | x = x * 6; |
6 | |
7 | data[0] = 0x00; |
8 | data[1] = 0xb0 + y; |
9 | data[2] = 0x21; |
10 | data[3] = x; |
11 | data[4] = 0x7F; |
12 | |
13 | HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)0x78, data, 5, 1); |
14 | }
|
Funktioniert leider auch nicht.
1ms Timeout bei HAL_I2C_Master_Transmit dürfte sehr knapp sein. Der bricht vermutlich bereits ab, bevor alle Bytes raus geschoben sind. Stell das mal auf 20ms!
Hier hab ich meinen Code für HAL & SSD1306 veröffentlicht: Beitrag "Universelles Oled-Libary (SSD1306) für AVR(8bit) und STM32/HAL"
Leider keine Veränderung. Hier ist mal der ganze Code den ich benutze um das OLED anzusteuern. Text, Kontrast usw. Funktioniert ich gehe mal davon aus das es ein Config Problem ist.
JimKnopf schrieb: > Schau dir einfach die Funktion 'lcd_gotoxy' in dem File 'lcd.c' aus > folgendem Beitrag an: Und ich vermisse die längliche Init-Sequenz die in anderen Beispielen gebracht wird. Ob es die braucht? Ich habe es nicht ohne ausprobiert.
Mathias G. schrieb: > ich gehe mal davon aus das es ein > Config Problem ist. Ich sehe in deinem Code keine Init-Sequenz. Ohne wird das nix....
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.


