|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ p' C, [. p- X) N* `void PSCInit(void)" k+ I( F" x6 ~3 b0 j% H7 Z
{6 n ~# _1 G4 ]" N& V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
X- l; ]' n5 O+ Q2 t6 R% C}; P% S1 f+ ]# y
2 K% k! G3 ?; u8 o4 yvoid GPIOBankPinMuxSet(void)8 \. g6 }, G. O! \# w) j
{7 o: N/ u+ D' l8 ]% Z7 A$ v% E9 ?
// DRDY ------------ GPIO6[14] -- 111& B m! L; B V3 q3 a( ]
// SPI1_CLK ------------ GPIO2[13] -- 46
, K5 T; t. B" r3 W- W // SPI1_SOMI------------ GPIO2[11] -- 44
, h8 W' q) X6 d; Q- ?7 @* h( N // SPI1_SIMO------------ GPIO2[10] -- 43
+ ?) N* [! Z% r // SPI1_CS2 ------------ GPIO1[0] -- 17, ^# s4 {1 ~, u3 i0 X6 I
// SPI1_CS3 ------------ GPIO1[1] -- 18
( e" Z* W0 Z# `( `# W0 ?, V, g. E# [3 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 b, o+ N& x& P! ?6 ?$ A' ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% R G$ h1 N7 |8 B8 x# j7 s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ T$ B) ]( O7 R2 d+ D0 z
$ w) I2 B9 C3 ?! B# _' U$ j
//DRDY+ t \( W. |+ M& S9 M% ]
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
$ Q; k1 L0 }, Y/ L( C // CS2,CS34 V! ~- b. f/ y( X3 f' S% K% z! ^
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 b3 N0 p- F' o; N
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( |* t* V2 ]/ F- J6 e- C& M4 h //SIMO% m% p" W1 [8 ?' y1 E
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# Y8 D% `1 p' t6 n" |: [
//SOMI/ k; q. Z B+ h) C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# ~) q3 v9 }; g! G I) \ //CLK
) `: w0 S* N1 G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; q6 G' S$ p5 G
( k6 T: m4 I. T S // LDAC3 Y& H' B/ q* k+ p+ P& W3 @/ n2 [
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 T( x0 p9 M( v5 R& ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' M3 t" h: {3 v) W$ I6 [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 d; Z3 k6 T0 p7 V* t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' e0 @+ M" b+ w2 Y- S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! k$ w& C8 ]' l. J
}
' f& x- s- c! E& J
! M1 ?9 q$ x, x, x' U. Wint main(void)3 X6 m6 i9 F0 m* B& {; w; A& J0 B
{
9 l$ ^' f3 |6 X // 外设使能
. s3 G2 q. s `& R" ` PSCInit();+ F; A; l7 J$ {" \# x1 Y
; l% ]3 U( s4 ]: a9 Y( {+ @+ [9 ?( ^& Z
& k) v8 ?2 B6 w+ e
// 管脚复用配置0 F! g4 e$ b5 P c1 R' A
GPIOBankPinMuxSet(); l9 y) p$ j! O
for(;;)
% H+ X) f( l; M" _. _ {9 O4 @) R! c! a: @- D
SET_SCLK();//时钟正常输出
' J& e( v7 r; j9 _7 B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* v M* z2 U# _" b2 G' w+ `; ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 ]0 g# Q2 Z% ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 w9 F' u% b, z0 T- q3 p N0 y
' W& M4 S- S0 F) L
delay(20);
* A5 e2 F! P! g/ b: x7 N$ I CLR_SCLK();5 `! R" J; g0 k, P7 o! t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 o# x% s1 @& }8 t7 p1 {% j* F$ x' u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
' @( h- S8 m2 I6 p2 ^* G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- z' g* ~" C# y5 k* Z7 m
delay(20);! X: P+ G0 ~: j% v7 J. E0 o: C
}
. w8 F* G9 }9 A4 G, s9 x}
* p7 e/ `( d) | X$ W |
|