spi.lst
来自「显示屏驱动源代码」· LST 代码 · 共 412 行 · 第 1/2 页
LST
412 行
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN .\Output\spi.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE spi.c COMPACT OPTIMIZE(9,SIZE) BROWSE INCDIR(.\Include\) DEBUG OBJECTEXTEND
- PRINT(.\Source\spi.lst) OBJECT(.\Output\spi.obj)
stmt level source
1 //-------------------------------------------------------------
2 //-------------------------------------------------------------
3
4 #include "Config.h"
5
6 #ifdef SUPPORT_DELTA_RGB
7
8 #include "reg.h"
9 #include "typedefs.h"
10 #include "spi.h"
11 //#include "main.h"
12 #include "printf.h"
13 #include "main.h"
14
15 #define SPI_SCL P1_0
16 #define SPI_SDA P1_1
17 #define SPI_CS_EN (P4 = P4 | 0x02) //P4_1=1
18 #define SPI_CS_DS (P4 = P4 & 0xfd) //P4_1=0
19
20 extern BYTE DebugLevel;
21
22 /*****************************************************************************/
23 /* SPI */
24 /*****************************************************************************/
25
26 void DeltaRGBPanelInit(void)
27 {
28 1 //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
-SE);
29 1
30 1 SPI_CS_EN; //SPI_CS = 1; // EN = High CS high
31 1 SPI_SCL=1; // SCL High
32 1 SPI_SDA = 1; // Data High
33 1
34 1 dPrintf(">> 2.8inch lcd test...ready!\r\n");
35 1
36 1 dPrintf(">> 2.8inch lcd test...start!\r\n");
37 1 delay(7); // DonGo
38 1
39 1 ///////////////////////////////////////////////////////////////////
40 1 // Power on Reset and Display off
41 1 //////////////////////////////////////////////////////////////////
42 1 WriteSPI(0x07, 0x0000); //R07 <--0000h
43 1 SPIdelay(5*10); //delay about 25us
44 1 WriteSPI(0x12, 0x0000); //R07 <--0000h
45 1
46 1 // delay about 10ms --18ms
47 1 delay(1);
48 1
49 1 ///////////////////////////////////////////////////////////////////
50 1 // Power Setting Function 1
51 1 ///////////////////////////////////////////////////////////////////
52 1 WriteSPI(0x11, 0x0510); //R07 <--0000h
53 1 SPIdelay(50); //delay about 25us
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 2
54 1 WriteSPI(0x12, 0x0020); //R07 <--0000h
55 1 SPIdelay(50); //delay about 25us
56 1 WriteSPI(0x13, 0x1f2d); //R07 <--0000h
57 1 SPIdelay(50); //delay about 25us
58 1 WriteSPI(0x14, 0x0000); //R07 <--0000h
59 1 SPIdelay(50); //delay about 25us
60 1 WriteSPI(0x15, 0x03ed); //R07 <--0000h
61 1 SPIdelay(50); //delay about 25us
62 1 WriteSPI(0x16, 0x0000); //R07 <--0000h
63 1 SPIdelay(50); //delay about 25us
64 1 WriteSPI(0x18, 0x7705); //R07 <--0000h
65 1 SPIdelay(50); //delay about 25us
66 1
67 1 ///////////////////////////////////////////////////////////////////
68 1 // Power Setting Function 2
69 1 ///////////////////////////////////////////////////////////////////
70 1 WriteSPI(0x10, 0x0004); //R07 <--0000h
71 1
72 1 // delay about 150ms --180ms
73 1 delay(15);
74 1
75 1 ///////////////////////////////////////////////////////////////////
76 1 // Display Setting Function
77 1 ///////////////////////////////////////////////////////////////////
78 1 WriteSPI(0x01, 0x0000); //R07 <--0000h
79 1 SPIdelay(50); //delay about 25us
80 1 WriteSPI(0x02, 0x0300); //R07 <--0000h
81 1 SPIdelay(50); //delay about 25us
82 1 WriteSPI(0x03, 0x0001); //R07 <--0000h
83 1 SPIdelay(50); //delay about 25us
84 1 WriteSPI(0x04, 0x0001); //R07 <--0000h
85 1 SPIdelay(50); //delay about 25us
86 1 WriteSPI(0x05, 0x000a); //R07 <--0000h
87 1 SPIdelay(50); //delay about 25us
88 1 WriteSPI(0x06, 0x0014); //R07 <--0000h
89 1 SPIdelay(50); //delay about 25us
90 1 WriteSPI(0x0b, 0x0200); //R07 <--0000h
91 1 SPIdelay(50); //delay about 25us
92 1 WriteSPI(0x0c, 0x0200); //R07 <--0000h
93 1 SPIdelay(50); //delay about 25us
94 1 WriteSPI(0x0e, 0x0000); //R07 <--0000h
95 1 SPIdelay(50); //delay about 25us
96 1 WriteSPI(0x0f, 0x0000); //R07 <--0000h
97 1 SPIdelay(50); //delay about 25us
98 1 WriteSPI(0x20, 0x0000); //R07 <--0000h
99 1 SPIdelay(50); //delay about 25us
100 1 WriteSPI(0x21, 0x0700); //R07 <--0000h
101 1 SPIdelay(50); //delay about 25us
102 1 WriteSPI(0x2a, 0x0000); //R07 <--0000h
103 1 SPIdelay(50); //delay about 25us
104 1 WriteSPI(0x2b, 0x0000); //R07 <--0000h
105 1 SPIdelay(50); //delay about 25us
106 1 WriteSPI(0x30, 0x0000); //R07 <--0000h
107 1 SPIdelay(50); //delay about 25us
108 1 WriteSPI(0x31, 0x0000); //R07 <--0000h
109 1 SPIdelay(50); //delay about 25us
110 1 WriteSPI(0x32, 0x0907); //R07 <--0000h
111 1 SPIdelay(50); //delay about 25us
112 1 WriteSPI(0x33, 0x0907); //R07 <--0000h
113 1 SPIdelay(50); //delay about 25us
114 1 WriteSPI(0x34, 0x0001); //R07 <--0000h
115 1 SPIdelay(50); //delay about 25us
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 3
116 1 WriteSPI(0x35, 0x0001); //R07 <--0000h
117 1 SPIdelay(50); //delay about 25us
118 1 WriteSPI(0x36, 0x0c06); //R07 <--0000h
119 1 SPIdelay(50); //delay about 25us
120 1 WriteSPI(0x37, 0x0c06); //R07 <--0000h
121 1 SPIdelay(50); //delay about 25us
122 1 WriteSPI(0x38, 0x1f00); //R07 <--0000h
123 1 SPIdelay(50); //delay about 25us
124 1 WriteSPI(0x39, 0x1f00); //R07 <--0000h
125 1 SPIdelay(50); //delay about 25us
126 1
127 1 // delay about 40ms -- 48ms
128 1 delay(4);
129 1
130 1 ///////////////////////////////////////////////////////////////////
131 1 // Power On Status---Display On Function 1
132 1 ///////////////////////////////////////////////////////////////////
133 1 WriteSPI(0x07, 0x0001); //R07 <--0000h
134 1
135 1 // delay about 40ms -- 48ms
136 1 delay(4);
137 1
138 1 ///////////////////////////////////////////////////////////////////
139 1 // Power On Status---Display On Function 1
140 1 ///////////////////////////////////////////////////////////////////
141 1 WriteSPI(0x07, 0x0101); //R07 <--0000h
142 1
143 1 // delay about 40ms -- 48ms
144 1 delay(4);
145 1
146 1 ///////////////////////////////////////////////////////////////////
147 1 // Power On Status---Display On Function 2
148 1 ///////////////////////////////////////////////////////////////////
149 1 WriteSPI(0x07, 0x0103); //R07 <--0000h
150 1
151 1 }
152
153
154 void SPIdelay(BYTE d)
155 {
156 1 BYTE i;
157 1 for(i=0; i<d; i++){
158 2 }
159 1 }
160
161 void WriteSPI(BYTE addr, WORD dat)
162 {
163 1 //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
-SE);
164 1 int j;
165 1 //unsigned char DELAY=100;
166 1 unsigned char DELAY=1; // delay about 1us
167 1 DWORD xAddress, xData;
168 1
169 1 xAddress = 0x00600000L|(0x000000ffL & addr);
170 1 xData = 0x00620000L|(0x0000ffffL & dat);
171 1
172 1 ///////////////////////address
173 1 SPI_CS_EN; //SPI_CS = 1; // EN = High CS high
174 1 SPI_SCL=1; // SCL High
175 1 SPI_SDA = 1; // Data High
176 1
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 4
177 1 SPIdelay(DELAY); // delay about 1us
178 1
179 1 SPI_CS_DS; //SPI_CS = 0; // EN = Low CS Low
180 1 SPIdelay(DELAY);// delay about 1us
181 1
182 1 SPI_SCL = 0; // SCL Low
183 1 SPIdelay(DELAY);// delay about 1us
184 1
185 1 for (j = 23; j >= 0; j--)//17
186 1 {
187 2
188 2 if ((xAddress >> j) & 0x00000001L) // DATA HIGH or LOW
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?