Harry L. schrieb:
> Ist das selbe Display, nur an eiem PCF8574-Portexpander
>
> In dem Code kannste dir sicher was abschauen:
>
> Beitrag "Re: [STM32/HAL] generischer Treiber für die beliebten
> I²C-Text-Displays"
Ich habe mir das lcd.c angesehen, jedoch verstehe ich das in dem
Zusammenhang wie ich es benötige überhaupt nicht.
Beispielsweise wird im Init das Senden send_nibble() verwendet.
In der 3. Zeile im lcd_Init wird 0x30 geschickt.
Der Vorgang ist dabei so:
1 | uint8_t cmd[2];
|
2 | port_state = (port_state & 0x0f) | nibble;
|
3 | cmd[0]= port_state | ( 1<< E_PIN);
|
4 | cmd[1] = port_state
|
5 |
|
6 | Im ersten Durchlauf:
|
7 | port_state & 0x0f ergibt 0x00
|
8 | ( 1<< E_PIN) ist 0x04
|
9 | port_state = (port_state & 0x0f) | nibble; ergibt port_state = nibble;
|
10 | port_state | ( 1<< E_PIN) ergibt 0x06
|
Ich verstehe zwar was in jeder Zeile passiert, aber wozu das Ganze soll,
verstehe ich nicht.
Er sendet also cmd[] = {0x06, 0x02) an irgend ein IC per I2C.
Die Zeiten im Init mit HAL_Delay(MILLISEKUNDEN), entsprechen auch nicht
gerade den Zeiten im Datenblatt des entsprechenden LCD Controllers.
Ich möchte das Ganze auch nicht in Frage stellen, weil das so
funktioniert.
Kann mir niemand sagen, was bei mir das Problem ist? Ich arbeite nicht
mit I2C.