BOOTLOADER
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
bootloader
drivers
spi0.c
Go to the documentation of this file.
1
/******************************************************
2
* Function: s3c2440 spi0 driver
3
*
4
* File: spi0.c
5
* Author: Book Chen
6
* Date: 2008.07.18
7
*******************************************************
8
*/
9
#include "
includes.h
"
10
11
#define Spi0IdleState 0
12
13
SPI0_CONTROL
Spi0Ctrl
;
14
15
void
F_Spi0Init
(
void
);
16
void
F_Spi0Svc
(
void
);
17
INT8U
F_Spi0InUseCheck
(
void
);
18
INT8U
F_Spi0Allocate
(
INT16U
UserId);
19
INT8U
F_Spi0Release
(
INT16U
UserId);
20
INT8U
F_Spi0SpconSet
(
INT16U
UserId,
INT8U
SpconValue);
21
INT8U
F_Spi0SpstaGet
(
INT16U
UserId,
INT8U
*pSpstaValue);
22
INT8U
F_Spi0SppinSet
(
INT16U
UserId,
INT8U
SppinValue);
23
INT8U
F_Spi0SppreSet
(
INT16U
UserId,
INT8U
SppreValue);
24
INT8U
F_Spi0SptdatSet
(
INT16U
UserId,
INT8U
SptdatValue);
25
INT8U
F_Spi0SprdatGet
(
INT16U
UserId,
INT8U
*pSprdatValue);
26
INT8U
F_Spi0IsrHookFunctionSet
(
INT16U
UserId,
INT32U
Function);
27
28
void
F_Spi0Init
(
void
){
29
// hardware initial
30
rGPEUP
&=~0x3800;
// enable GPE[13.12.11] pull up resistor
31
rGPEUP
|= 0x2000;
// disable GPE[13.12.11] pull up resistor
32
rGPECON
&=~0x0fc00000;
//
33
rGPECON
|= 0x0a800000;
// set GPE[13.12.11] to SPICLK0,SPISI0,SPISO0
34
rGPGUP
&=~0x0004;
// disable GPG[3] pull up resistor
35
rGPGCON
&=~0x00000030;
//
36
rGPGCON
|= 0x00000030;
// set GPG[3] to nSS0...spi chip select for slave mode
37
38
// data struct initial
39
Spi0Ctrl.
pSpi0Register
=(
SPI0_REGISTER
*)0x59000000;
40
Spi0Ctrl.
pSpi0Register
->
SPCON
=0x00000000;
41
Spi0Ctrl.
pSpi0Register
->
SPSTA
=0x00000001;
42
Spi0Ctrl.
pSpi0Register
->
SPPIN
=0x00000002;
43
Spi0Ctrl.
pSpi0Register
->
SPPRE
=0x00000000;
44
Spi0Ctrl.
Id
=
ID_SPI0
;
45
Spi0Ctrl.
InUse
=
FALSE
;
46
Spi0Ctrl.
State
=
Spi0IdleState
;
47
}
48
void
F_Spi0Svc
(
void
){}
49
INT8U
F_Spi0InUseCheck
(
void
){
50
if
(Spi0Ctrl.
InUse
==
TRUE
)
return
TRUE
;
51
else
return
FALSE
;
52
}
53
INT8U
F_Spi0Allocate
(
INT16U
UserId){
54
if
(Spi0Ctrl.
InUse
==
FALSE
){
55
Spi0Ctrl.
InUse
=
TRUE
;
56
Spi0Ctrl.
UserId
=UserId;
57
return
TRUE
;
58
}
59
else
return
FALSE
;
60
}
61
INT8U
F_Spi0Release
(
INT16U
UserId){
62
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
63
Spi0Ctrl.
InUse
=
FALSE
;
64
Spi0Ctrl.
State
=
Spi0IdleState
;
65
return
TRUE
;
66
}
67
else
return
FALSE
;
68
}
69
INT8U
F_Spi0SpconSet
(
INT16U
UserId,
INT8U
SpconValue){
70
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
71
Spi0Ctrl.
pSpi0Register
->
SPCON
=(
INT32U
)SpconValue;
72
return
TRUE
;
73
}
74
else
return
FALSE
;
75
}
76
INT8U
F_Spi0SpstaGet
(
INT16U
UserId,
INT8U
*pSpstaValue){
77
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
78
*pSpstaValue=(
INT32U
)Spi0Ctrl.
pSpi0Register
->
SPSTA
;
79
return
TRUE
;
80
}
81
else
return
FALSE
;
82
}
83
INT8U
F_Spi0SppinSet
(
INT16U
UserId,
INT8U
SppinValue){
84
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
85
Spi0Ctrl.
pSpi0Register
->
SPPIN
=(
INT32U
)SppinValue;
86
return
TRUE
;
87
}
88
else
return
FALSE
;
89
}
90
INT8U
F_Spi0SppreSet
(
INT16U
UserId,
INT8U
SppreValue){
91
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
92
Spi0Ctrl.
pSpi0Register
->
SPPRE
=(
INT32U
)SppreValue;
93
return
TRUE
;
94
}
95
else
return
FALSE
;
96
}
97
INT8U
F_Spi0SptdatSet
(
INT16U
UserId,
INT8U
SptdatValue){
98
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
99
Spi0Ctrl.
pSpi0Register
->
SPTDAT
=(
INT32U
)SptdatValue;
100
return
TRUE
;
101
}
102
else
return
FALSE
;
103
}
104
INT8U
F_Spi0SprdatGet
(
INT16U
UserId,
INT8U
*pSprdatValue){
105
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
106
*pSprdatValue=(
INT32U
)Spi0Ctrl.
pSpi0Register
->
SPRDAT
;
107
return
TRUE
;
108
}
109
else
return
FALSE
;
110
}
111
INT8U
F_Spi0IsrHookFunctionSet
(
INT16U
UserId,
INT32U
Function){
112
if
((Spi0Ctrl.
InUse
==
TRUE
)&&(Spi0Ctrl.
UserId
==UserId)){
113
pISR_SPI0
=Function;
114
return
TRUE
;
115
}
116
else
return
FALSE
;
117
}
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Generated on Wed Jun 13 2012 00:03:08 for BOOTLOADER by
1.8.1.1