|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( i: P. h9 T- C; ~
void PSCInit(void) T8 j6 b6 X2 \! M! I
{
+ e, n1 N* ^% ^" J" G5 ?3 u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' t7 I3 k3 x- l- i1 _0 F$ {! b, H
}
1 F) s+ a6 L2 s9 C# r2 u2 Z+ f: a9 {% }7 N$ ~* i, W2 Q+ z
void GPIOBankPinMuxSet(void)
0 c, ?# P" E. N9 Y, E2 x; N{
" l7 d) c4 ^* U4 r9 |+ i; W: D // DRDY ------------ GPIO6[14] -- 1117 k7 @$ \6 Y. s' N
// SPI1_CLK ------------ GPIO2[13] -- 46
+ }" b1 j% Z/ Q4 G7 } // SPI1_SOMI------------ GPIO2[11] -- 44' K8 y9 u4 r) I7 e. T1 `) O
// SPI1_SIMO------------ GPIO2[10] -- 43
: D) `+ p, N# F F // SPI1_CS2 ------------ GPIO1[0] -- 17# |, A8 ?1 i3 x
// SPI1_CS3 ------------ GPIO1[1] -- 18
. ~+ t: |8 }7 s& w) T1 o6 Q0 I: B8 r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);3 m3 G' C! K( ]. L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 G ~, \" ]8 V: i; i8 J4 Z9 ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);2 L# x: l1 T' F6 E! A5 b
1 l5 a4 u; J. X4 ], y' Y
//DRDY, C) z/ j+ {$ `* c, p+ ^ Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 s: Z# a d- r& F, E+ l
// CS2,CS3* M3 v% u! }) r1 T2 w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 [8 e6 K. c# g9 `/ C2 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 @, x5 M7 h4 W- W) Q //SIMO+ \( v. C+ o" N( E' q4 N
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
1 T: ~1 E) v0 H H! k //SOMI! v6 |" I6 k8 A/ Z0 S/ g# g
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI# u; L+ b3 C# u. ~6 h
//CLK
4 `! F( b9 r- N b+ c" p0 { GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; X! v: ?: B: C
/ [, p; d, C7 S; G // LDAC8 I, L9 c5 |& s9 b& |9 C
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. g9 J! [ n5 ~, v, e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ }) a) w0 C) O* N0 p7 [6 e# T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 ~+ w- B; A P, u) t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ ?- x! K4 `6 R# `# _1 `/ { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 n; M6 [+ K+ L3 h}
# o/ O: c" X9 Q8 I5 L8 A7 T1 k% X/ s w0 T
int main(void)! L* f& n( x) P% F3 N, R) H! P- d+ H
{
# {% V: J/ q9 ?( ^ // 外设使能" F& w, K5 w/ }8 Q3 g0 N+ h
PSCInit();0 Q% g* E( _9 v4 w
4 [) r; \9 q% a+ z$ N! m5 V7 h
) S1 ?; W( M7 Y5 G e1 h. l
// 管脚复用配置8 i: m) @0 U5 X, |* W& V# i9 v2 E7 W
GPIOBankPinMuxSet();7 K9 t/ m6 r. y6 ?; j3 ]" w6 B
for(;;)
* g5 }; V" y9 c ^' ]" w/ j2 q {. | e* D+ m8 k* h4 n
SET_SCLK();//时钟正常输出
6 i2 M* d$ p: b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# \ S2 f6 |( l( H7 M$ P3 g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
/ C8 {$ @" @! Q w! ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
, Q8 }% ^% Q0 Z& r5 I% A) L A: N6 P% F
delay(20);& z+ l* [& u3 ~+ x
CLR_SCLK();
: W- |7 w( o4 D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 Q. h4 `# p$ Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 B! k' u+ Q+ M. z- P4 E! F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. M" M+ h4 F% b4 U4 y1 d A
delay(20);1 q5 Q, ^7 s# V/ t" n
}2 S( V: g( d+ u: w+ @. o$ _
}
& N% b- h* z+ T* { |
|