|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; D; i: ]! A* w) b2 X) Nvoid PSCInit(void)/ Z1 g" J" p# J2 d1 n! u
{
' [! H5 r* X4 P* R; v& X PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); Q3 B' w6 V8 f
}
O c* N& q, \/ U+ t8 |
" z/ N ?! s# R+ U, k b. q) Z0 @void GPIOBankPinMuxSet(void)+ F: ^' L) t Q: j$ K
{
' z; m/ f8 |) v3 W4 @ // DRDY ------------ GPIO6[14] -- 1119 g" C0 o( b6 [7 f
// SPI1_CLK ------------ GPIO2[13] -- 46
& h# Y/ f& g+ l* r. G+ ? // SPI1_SOMI------------ GPIO2[11] -- 44
/ h/ b" J4 I, f* n // SPI1_SIMO------------ GPIO2[10] -- 43# C# y# N& h4 I3 ^8 E3 Z* ^3 j
// SPI1_CS2 ------------ GPIO1[0] -- 17( v. X7 H1 P' j) K$ r2 f& i# i$ O+ O
// SPI1_CS3 ------------ GPIO1[1] -- 18/ t' q/ M& i. k/ g v
: v& G6 A7 S& a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 [/ n4 x7 E% O& z7 ?0 v& r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 b R. h- E' N$ Y& g) [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);1 L. ?2 `: |( F* |" ]- K% p
8 S1 j5 I2 F5 ]+ C //DRDY
$ [5 z5 N/ ] x0 ]) e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 `: d* _, e) s( v- f+ ~# d // CS2,CS3& j# E& `! k1 A: N9 R6 S! U @
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* S6 K' M4 p$ s
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: Z* F: }! [: x3 e //SIMO
* G6 a2 t" ?' c7 [; f GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 |3 |8 ?/ A2 z& _
//SOMI7 i2 `9 o' Q; ?. \4 U3 g' A( S% z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! m' Z7 z- I& h9 s! X) D. k/ N: U //CLK
. A- l8 Q: Q' a* e- Z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK5 M- T: h0 v S0 Q1 _
6 X' D& Z- Y* C& k8 m- e
// LDAC' \% y0 R8 S; H: {
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ L5 I% |- t2 M* L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" t& e7 {/ t( V* `6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 B2 ]) `" R2 v; Y; @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( o7 k$ P( g6 F I: H6 G m: G$ ] GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" V# X7 J' s, ~" A5 e& z; ^- E Y1 R% Y
}
" X; C, P4 ^& A4 R3 ^
# ^* h8 C8 _7 ?- t) Aint main(void)% l9 I+ n, ^* |! T
{. c- P: R4 Z1 p* N+ P8 ~
// 外设使能
6 k/ i2 m- y+ F PSCInit();+ f4 F. ]# H1 _# E/ l8 g
4 F3 r8 @7 |4 w/ @
]* T8 n# C( f; v6 E! j // 管脚复用配置+ \. Q6 U5 Y* ]3 y1 t( M
GPIOBankPinMuxSet();
8 G& ?" e. J* |" v* C( g for(;;), i/ C& L" W+ d6 h" u) `5 O
{
3 }' R" ?; Z. K- {2 \; C SET_SCLK();//时钟正常输出) M$ ]0 ]% V# u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 m3 h2 s3 L4 {% q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 J/ z0 U4 C' x& r8 `1 F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 ?$ m: d @8 n) |5 v. E; x9 r- o) `9 Y7 C7 ^9 t8 Y6 m
delay(20);! k- j; ]5 r- C* k# f5 p% o
CLR_SCLK();
5 w3 A' S7 ?4 a* m1 m7 M, I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" l* \+ A0 I% R8 |1 r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ Z# U* \# S4 i/ O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ f0 D) ? J% R q. c2 u delay(20);2 `, u9 e) D E& y9 J7 K
}+ p; b1 C [7 ~+ _- v
}
9 S4 `0 [& o: g& y$ v |
|