|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ n$ s; |; p$ r! _3 a2 J; j" N
void PSCInit(void)
6 g7 @) |- f8 L2 z{5 k; U# f, ]; s I/ v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 Y U; F. g2 r o$ M
}8 b0 e. Y( A. Z) u7 F! n
5 H$ T- h9 A9 s# c
void GPIOBankPinMuxSet(void). e. ^( Q4 S& L% N9 e) t
{
! f+ Y3 t% \: w3 o4 R- t% A3 { // DRDY ------------ GPIO6[14] -- 111
3 ~" r( u2 C& m; B9 [! W8 O // SPI1_CLK ------------ GPIO2[13] -- 46/ t9 Y" `- R6 M1 u1 `
// SPI1_SOMI------------ GPIO2[11] -- 44* a$ |) x. q3 J$ z# o
// SPI1_SIMO------------ GPIO2[10] -- 438 A l0 k5 m: \ e( u/ y8 d+ y
// SPI1_CS2 ------------ GPIO1[0] -- 17
& \0 o% j+ g. J% s: A+ d // SPI1_CS3 ------------ GPIO1[1] -- 18
2 X( O, l/ c5 _9 S# z1 z. h! K. K+ i' C+ K4 g" u# g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. c$ y6 I" |9 M! q& R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; t& M& ]8 K& q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' b0 \: z3 t8 y. y: ~3 z& i7 @+ h) h9 B6 `& ^
//DRDY
8 R; [& s# W2 x GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; j( X. c* p/ h: Z/ \+ b3 S
// CS2,CS3- h: P6 z4 s- R
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
" p3 f/ E! D! a GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 Z! S+ g, } i. @8 Q //SIMO
7 ?* i6 p1 h `1 l6 O GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 |0 z1 A3 a( z4 F& u g& G
//SOMI t- r. c, u0 N4 Q! j; N F
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 Z, q, s) u/ `) T: f! ]$ D+ g* x( q //CLK ?* I& s$ `0 E! _
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" I* h6 `! z+ ?) Z
( G5 s% A( f3 q2 r4 b9 E4 j$ F9 O
// LDAC" R3 R9 Q4 D. f d
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 D* Z; M( t' `/ e1 D8 H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 q. J* ^) L0 b* E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- h( ?$ K. W) C2 j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 M7 m) z: P# X' X# u" u" [% P" H GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 M4 M! T( ]. R7 A1 n( B
}8 d" r; S0 k3 `5 i; W" S8 o0 A
; B( V$ ?% B# H6 v h& r
int main(void)
% m* Z6 O8 H5 W( T{" z) c. v, Z# n, @0 u; H
// 外设使能& x$ _# ] m! w. H
PSCInit();
# e& u7 s8 z! ]; |& v! f
5 t/ K- Z. {$ Z& O; s' h, P& C
) B1 D) l2 I% H& A' [3 [" a$ T+ b // 管脚复用配置7 H7 d4 V- x% F. W3 D. b
GPIOBankPinMuxSet();
; N3 y' o& Y( `) O" i for(;;)1 }. N& R# Z+ U2 n! s: R7 e3 I
{* ~- K/ s* x+ {# H5 s: }3 N' e* ?7 G
SET_SCLK();//时钟正常输出0 R$ y/ F$ ^# _# }0 V0 @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ D6 p4 Q# w, g& \: E1 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 g9 ?3 R, ?& v' E1 o4 n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 w' j5 c6 ^) }+ S2 A
: H9 z/ l& o* V; \ delay(20);
( `0 b0 j; i5 X7 s" C2 w* h. U R% ] CLR_SCLK();
! l- V2 \$ B3 e; E8 a2 ?# p6 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 [" x: X- v" E9 k3 g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* _$ H/ [8 b: ?- x3 [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! g2 I1 H5 W5 C4 d delay(20);
% j: U' [" h+ [7 z9 B3 I# A }
/ c5 F, w$ F: ~}
1 \: a) q2 g& s0 q- o9 g, V |
|