23 screen_t* ssd1331_init(
char sdi,
char sclk,
char cs,
char rs,
char rst,
int _width,
int _height) {
61 loadFonts(dev, eeBus);
74 ssd1331_resetDisplay(dev);
76 int mask_cs = (1 << cs);
77 int mask_sdi = (1 << sdi);
78 int mask_clk = (1 << sclk);
79 int mask_dc = (1 << rs);
81 ssd1331_writeLockSet(dev->
dev_id);
84 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_DISPLAYOFF, 0);
85 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SETREMAP, 0);
86 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x72, 0);
87 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_STARTLINE, 0);
88 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x00, 0);
89 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_DISPLAYOFFSET, 0);
90 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x00, 0);
91 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_NORMALDISPLAY, 0);
92 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SETMULTIPLEX, 0);
93 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x3F, 0);
94 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SETMASTER, 0);
95 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x8E, 0);
96 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_POWERMODE, 0);
97 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x0B, 0);
98 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_PRECHARGE, 0);
99 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x31, 0);
100 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_CLOCKDIV, 0);
101 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0xF0, 0);
102 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_PRECHARGEA, 0);
103 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x64, 0);
104 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_PRECHARGEB, 0);
105 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x78, 0);
106 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_PRECHARGEA, 0);
107 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x64, 0);
108 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_PRECHARGELEVEL, 0);
109 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x3A, 0);
110 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_VCOMH, 0);
111 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x3E, 0);
112 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_MASTERCURRENT, 0);
113 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x06, 0);
114 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_CONTRASTA, 0);
115 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x91, 0);
116 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_CONTRASTB, 0);
117 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x50, 0);
118 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_CONTRASTC, 0);
119 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x7D, 0);
120 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_DISPLAYON, 0);
122 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_CLEAR, 0);
123 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x00, 0);
124 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0x00, 0);
125 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, _width - 1, 0);
126 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, _height - 1, 0);
128 ssd1331_writeLockClear(dev->
dev_id);
136 void ssd1331_resetDisplay(
screen_t* dev) {