|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, U, r0 p7 i+ n5 B5 s& Evoid PSCInit(void)- r# F6 S% `# J8 ]
{
, Z6 k$ Q4 A, V; A, U: j9 R PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ t8 @! |0 K6 `7 R2 A% R
}, l7 A/ Y' x* C8 k4 C! u: S
& v: b) b2 E8 u' jvoid GPIOBankPinMuxSet(void)7 d) J0 t4 O- |# l& l$ V9 F2 ]
{) z2 h( @! ~: r$ V/ j$ G
// DRDY ------------ GPIO6[14] -- 111
0 p# T4 l: R( g, h I- Y' |) a // SPI1_CLK ------------ GPIO2[13] -- 46+ }( c8 r! ?! a7 W% O! [
// SPI1_SOMI------------ GPIO2[11] -- 440 v: f0 Q; m/ T) m% g( T( n) u
// SPI1_SIMO------------ GPIO2[10] -- 43
5 {, P# c0 F. o* Q+ R // SPI1_CS2 ------------ GPIO1[0] -- 17' X+ j# e6 K2 V3 I' M* o3 J/ z
// SPI1_CS3 ------------ GPIO1[1] -- 18. W. P7 L: m) {% b+ K& u
; U' w& m# Y0 w9 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 W/ N" Z5 j& F. u1 H$ Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 n% O0 Z' f0 \' W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ h2 |) }/ a0 \+ a
- R# J; S# p# ?7 S //DRDY
* c! L, n. t; B p( ^3 \' F GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 \/ D3 k! J- n7 }) w5 Y // CS2,CS3
6 l4 O4 ?' H5 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) }, \$ ]- h% d5 V: \# J7 W) O) y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& Z1 h5 h2 I. @+ C //SIMO
0 E# y( ]8 S% L1 D. H1 O$ \ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' O/ Y" y8 }1 p$ V0 L' W8 w
//SOMI
2 a2 l) V% Z9 _2 | GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" a1 {& `4 b5 s3 T2 W
//CLK
' z; Q8 u( R, g a* _- }- a GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: w. N8 j, s6 p* i' T9 ~" ?+ x* H5 e& G! N
// LDAC* D: R$ L$ Q+ F X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 S2 S* N( {1 V) Q( ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- M+ N3 \9 f- O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 E4 d6 R: g/ z: @9 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 k- x6 D+ ^+ O8 l( P1 }" f3 L9 @3 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ i' O+ D' c3 i9 ^2 N$ O
}8 S V& f0 i# Q7 u) P5 q
/ b: W- a; i' ~& a3 Y; T
int main(void)( O( U% _& S7 G! g
{( E( i& F$ O9 h' p0 K) G5 o6 Y
// 外设使能! G0 O* ^* G6 y4 l
PSCInit();
) y6 O, a* u2 U5 f1 X
$ c0 ^1 m/ G/ ?# C& b% b
7 O0 U4 I C) w9 g0 l // 管脚复用配置
# B& o- G" Z q7 h# _ GPIOBankPinMuxSet();$ T7 }- o7 m1 h$ c/ g- H0 m7 U
for(;;)! D" n% q4 }4 k* F
{
. Q6 t! @2 }( v# ` SET_SCLK();//时钟正常输出; u( {4 _5 |/ F- q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; N" \2 K3 x! B t( b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 m6 Z% Y" \" u I- u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 X6 h5 ~* G+ G% D$ g; }' \) W. E
9 y2 |' h) t9 V9 j( B delay(20);
" A+ H- X. d% u) S, Y2 I CLR_SCLK();
$ t' k" A0 w3 a5 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& q! [' t9 i* W2 H2 g7 x) }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ g/ P/ j# I/ ~1 E/ c/ s8 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% {8 P, N0 S1 x: H; U0 W3 |, _ delay(20);4 i7 d; R2 C7 M$ x# E: }+ ]
}
. r* `: g' f7 n" x8 p}
' N: X" V. Z t |
|