|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( P4 r4 b% F# F, f! H: \void PSCInit(void)3 O9 ]; `8 r9 {& v% [' f+ A0 I1 k
{; ^0 ]% C- y. i2 l, S# z) p. r
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 `( C1 D7 y; c
}: G# ?( m5 v8 {/ G+ T; [
. D/ a7 M5 k& C* F; W3 {void GPIOBankPinMuxSet(void) a& W# V$ V8 g- @, E4 s
{, L1 a: R0 s4 U
// DRDY ------------ GPIO6[14] -- 111# Z) @+ v/ X5 \ ~1 j1 c1 A
// SPI1_CLK ------------ GPIO2[13] -- 46- c- u( d; n+ O. d
// SPI1_SOMI------------ GPIO2[11] -- 44. u% Z1 _6 e& [
// SPI1_SIMO------------ GPIO2[10] -- 43/ {; f" F+ ?5 p/ c+ b
// SPI1_CS2 ------------ GPIO1[0] -- 17
2 [. U# `' g. t- o0 m6 C // SPI1_CS3 ------------ GPIO1[1] -- 18
' G; G- j$ W) u4 I4 a6 o, l# J9 l6 ?" U ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 J/ w% Y8 k v9 A5 n1 G- K; s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' B4 r8 O; ]8 F; u( O" v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 G9 b$ [( x) t, |, s4 s! N
N( y3 y `5 w5 L //DRDY
" X" X) `, x$ x GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 ]/ e! L% u2 a$ k: d // CS2,CS3
+ p% i/ C" L# i. A. R: n3 \3 M GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 R) u" O* U) P n+ [- t ` GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ n7 p5 K/ y7 N w: f( T //SIMO
1 [; M* i5 o- w8 b GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# u3 [! W& F9 C; t
//SOMI
' `6 A4 Y3 Q6 z# Q& u3 @* @ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 ~5 C* Y w, O# L //CLK
+ d8 Z2 p* a. q+ q9 C GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 R1 O8 b& ^: [
& f' I) O. B* L5 V6 Z // LDAC
) O+ R% Z3 {! f: w$ X0 h; a9 x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' |2 P3 h; Y3 ^* O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 P" w0 \. s3 U! ]" n5 D
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 A, \) V7 s- `6 D5 s$ t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 f* Z% s8 H$ X2 x* j: m9 v
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 s h. W7 k; E( }
}; {- G4 c) d+ B S
3 I' D: E: V/ Zint main(void)
a( Q [' H8 O0 h3 {3 w0 n0 `{
# S2 I0 A Z! x( D9 L/ h // 外设使能$ \; a, d0 Q1 G9 S( v" a
PSCInit();
0 W% B8 O" E$ y+ Z2 p6 O: B* U
- z/ c4 g6 e& q# h; Y3 o 3 j+ ]- N" ]4 x& ^$ z
// 管脚复用配置1 H1 S' O9 V5 Q9 \- m
GPIOBankPinMuxSet();* n4 E% F( P: `
for(;;)
) Z+ R+ e6 ?" q& A {2 R$ [0 P4 r t+ V# o7 z
SET_SCLK();//时钟正常输出5 e3 ?$ t" x; i% F* E! S6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 e" S4 y" j& E) q" ^ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 p; u# e! B( v: ^6 A& o& w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN. h, w7 q: Y! V: i2 A
5 G) h2 B% _+ D: @- v) ~7 m delay(20);
' c4 T! G9 J, i- v# D! V/ S CLR_SCLK();
9 G5 r% q* b9 J. W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 d$ N! H) s' \* I3 b) y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 b( M7 \, _& r; M/ h/ d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 E5 Y& o Q) E0 k+ r) T/ v
delay(20);
2 {8 \8 s' r! e+ `- l/ B! I }1 j D ^% j) h
}
* D6 k$ o7 W) H5 D" f |
|