Hallo zusammen
Hier mal für alle die es interessiert eine Quick and Dirty
initialisierung für ein SSD1302 LCD
Display konfig: VCC offen, VDD & VBAT zusammen an 3.3V
IREF ca. 470kOhm Widerstand nach GND
BS0 = 1, BS1&2 = 0
1 | void write_spi (unsigned char data_out)
|
2 | { //msb first
|
3 | unsigned char mask;
|
4 | for (mask=0x80; mask; mask=mask>>1)
|
5 | {
|
6 | GPIO_ResetBits(GPIOA,SPI1_SCK);
|
7 | if (data_out & mask)
|
8 | {
|
9 | GPIO_SetBits(GPIOA,SPI1_MOSI);
|
10 | }
|
11 | else GPIO_ResetBits(GPIOA,SPI1_MOSI);
|
12 | GPIO_SetBits(GPIOA,SPI1_SCK);
|
13 | }
|
14 | GPIO_ResetBits(GPIOA,SPI1_SCK);
|
15 | }
|
16 |
|
17 |
|
18 | void display_cmd(unsigned char ucData)
|
19 | {
|
20 |
|
21 | GPIO_SetBits(GPIOA,SPI1_CS);
|
22 |
|
23 | GPIO_ResetBits(GPIOA,DISP_DC);
|
24 |
|
25 | GPIO_ResetBits(GPIOA,SPI1_CS);
|
26 |
|
27 | write_spi(ucData); //Standard SPI Port
|
28 |
|
29 | GPIO_SetBits(GPIOA,SPI1_CS);
|
30 |
|
31 | }
|
32 |
|
33 | void display_data(unsigned char ucData)
|
34 | {
|
35 |
|
36 | GPIO_SetBits(GPIOA,SPI1_CS);
|
37 |
|
38 | GPIO_SetBits(GPIOA,DISP_DC);
|
39 |
|
40 | GPIO_ResetBits(GPIOA,SPI1_CS);
|
41 |
|
42 | write_spi(ucData);
|
43 |
|
44 | GPIO_SetBits(GPIOA,SPI1_CS);
|
45 |
|
46 | }
|
47 |
|
48 |
|
49 | void ssd1302_init(void)
|
50 | {
|
51 |
|
52 | GPIO_SetBits(GPIOA,DISP_RESET); //Reset high -> low -> high
|
53 | delay(60000);
|
54 | GPIO_ResetBits(GPIOA,DISP_RESET);
|
55 | delay(60000);
|
56 | GPIO_SetBits(GPIOA,DISP_RESET);
|
57 | delay(60000);
|
58 |
|
59 | display_cmd(0xAE);
|
60 | display_cmd(0xD5);
|
61 | display_cmd(0x80);
|
62 | display_cmd(0xA8);
|
63 | display_cmd(0x3F);
|
64 |
|
65 | display_cmd(0xD3);
|
66 | display_cmd(0x00);
|
67 | display_cmd(0x40);
|
68 |
|
69 | display_cmd(0x8D);
|
70 | display_cmd(0x14);
|
71 | display_cmd(0x20);
|
72 | display_cmd(0x00);
|
73 | display_cmd(0xA1);
|
74 | display_cmd(0xC8);
|
75 |
|
76 | display_cmd(0xDA);
|
77 | display_cmd(0x12);
|
78 | display_cmd(0x81);
|
79 | display_cmd(0xCF);
|
80 | display_cmd(0xD9);
|
81 | display_cmd(0xF1);
|
82 | display_cmd(0xD8);
|
83 | display_cmd(0x40);
|
84 | display_cmd(0xA4);
|
85 | display_cmd(0xA6);
|
86 | display_cmd(0xAF); //Display on
|
87 |
|
88 | }
|