BOOTLOADER
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
bootloader
drivers
spi1.c
Go to the documentation of this file.
1
/******************************************************
2
* Function: s3c2440 spi1 driver
3
*
4
* File: spi1.c
5
* Author: Book Chen
6
* Date: 2008.07.18
7
*******************************************************
8
*/
9
#include "
includes.h
"
10
11
#define Spi1IdleState 0
12
13
SPI1_CONTROL
Spi1Ctrl
;
14
15
void
F_Spi1Init
(
void
);
16
void
F_Spi1Svc
(
void
);
17
INT8U
F_Spi1InUseCheck
(
void
);
18
INT8U
F_Spi1Allocate
(
INT16U
UserId);
19
INT8U
F_Spi1Release
(
INT16U
UserId);
20
INT8U
F_Spi1SpconSet
(
INT16U
UserId,
INT8U
SpconValue);
21
INT8U
F_Spi1SpstaGet
(
INT16U
UserId,
INT8U
*pSpstaValue);
22
INT8U
F_Spi1SppinSet
(
INT16U
UserId,
INT8U
SppinValue);
23
INT8U
F_Spi1SppreSet
(
INT16U
UserId,
INT8U
SppreValue);
24
INT8U
F_Spi1SptdatSet
(
INT16U
UserId,
INT8U
SptdatValue);
25
INT8U
F_Spi1SprdatGet
(
INT16U
UserId,
INT8U
*pSprdatValue);
26
INT8U
F_Spi0IsrHookFunctionSet
(
INT16U
UserId,
INT32U
Function);
27
28
void
F_Spi1Init
(
void
){
29
//hardware initial
30
rGPGUP
&=~0x00e0;
// enable GPG[7.6.5] pull up resistor
31
rGPGUP
|= 0x0080;
// disable GPG[7.6.5] pull up resistor
32
rGPGCON
&=~0x0000fc00;
//
33
rGPGCON
|= 0x0000fc00;
// set GPE[13.12.11] to SPICLK0,SPISI0,SPISO0
34
rGPGUP
&=~0x0008;
// disable GPG[3] pull up resistor
35
rGPGCON
&=~0x000000c0;
//
36
rGPGCON
|= 0x000000c0;
// set GPG[3] to nSS1...spi chip select for slave mode
37
//data struct initial
38
Spi1Ctrl.
pSpi1Register
=(
SPI1_REGISTER
*)0x59000020;
39
Spi1Ctrl.
pSpi1Register
->
SPCON
=0x00000000;
40
Spi1Ctrl.
pSpi1Register
->
SPSTA
=0x00000001;
41
Spi1Ctrl.
pSpi1Register
->
SPPIN
=0x00000002;
42
Spi1Ctrl.
pSpi1Register
->
SPPRE
=0x00000000;
43
Spi1Ctrl.
Id
=
ID_SPI1
;
44
Spi1Ctrl.
InUse
=
FALSE
;
45
Spi1Ctrl.
State
=
Spi1IdleState
;
46
}
47
void
F_Spi1Svc
(
void
){}
48
INT8U
F_Spi1InUseCheck
(
void
){
49
if
(Spi1Ctrl.
InUse
==
TRUE
)
return
TRUE
;
50
else
return
FALSE
;
51
}
52
INT8U
F_Spi1Allocate
(
INT16U
UserId){
53
if
(Spi1Ctrl.
InUse
==
FALSE
){
54
Spi1Ctrl.
InUse
=
TRUE
;
55
Spi1Ctrl.
UserId
=UserId;
56
return
TRUE
;
57
}
58
else
return
FALSE
;
59
}
60
INT8U
F_Spi1Release
(
INT16U
UserId){
61
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
62
Spi1Ctrl.
InUse
=
FALSE
;
63
Spi1Ctrl.
State
=
Spi1IdleState
;
64
return
TRUE
;
65
}
66
else
return
FALSE
;
67
}
68
INT8U
F_Spi1SpconSet
(
INT16U
UserId,
INT8U
SpconValue){
69
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
70
Spi1Ctrl.
pSpi1Register
->
SPCON
=(
INT32U
)SpconValue;
71
return
TRUE
;
72
}
73
else
return
FALSE
;
74
}
75
INT8U
F_Spi1SpstaGet
(
INT16U
UserId,
INT8U
*pSpstaValue){
76
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
77
*pSpstaValue=(
INT32U
)Spi1Ctrl.
pSpi1Register
->
SPSTA
;
78
return
TRUE
;
79
}
80
else
return
FALSE
;
81
}
82
INT8U
F_Spi1SppinSet
(
INT16U
UserId,
INT8U
SppinValue){
83
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
84
Spi1Ctrl.
pSpi1Register
->
SPPIN
=(
INT32U
)SppinValue;
85
return
TRUE
;
86
}
87
else
return
FALSE
;
88
}
89
INT8U
F_Spi1SppreSet
(
INT16U
UserId,
INT8U
SppreValue){
90
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
91
Spi1Ctrl.
pSpi1Register
->
SPPRE
=(
INT32U
)SppreValue;
92
return
TRUE
;
93
}
94
else
return
FALSE
;
95
}
96
INT8U
F_Spi1SptdatSet
(
INT16U
UserId,
INT8U
SptdatValue){
97
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
98
Spi1Ctrl.
pSpi1Register
->
SPTDAT
=(
INT32U
)SptdatValue;
99
return
TRUE
;
100
}
101
else
return
FALSE
;
102
}
103
INT8U
F_Spi1SprdatGet
(
INT16U
UserId,
INT8U
*pSprdatValue){
104
if
((Spi1Ctrl.
InUse
==
TRUE
)&&(Spi1Ctrl.
UserId
==UserId)){
105
*pSprdatValue=(
INT32U
)Spi1Ctrl.
pSpi1Register
->
SPRDAT
;
106
return
TRUE
;
107
}
108
else
return
FALSE
;
109
}
110
INT8U
F_Spi1IsrHookFunctionSet
(
INT16U
UserId,
INT32U
Function){
111
if
((
Spi0Ctrl
.
InUse
==
TRUE
)&&(
Spi0Ctrl
.
UserId
==UserId)){
112
pISR_SPI1
=Function;
113
return
TRUE
;
114
}
115
else
return
FALSE
;
116
}
117
118
119
120
121
122
Generated on Wed Jun 13 2012 00:03:08 for BOOTLOADER by
1.8.1.1