|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: K4 ~1 Q: f1 L2 @! Lvoid PSCInit(void)' W _- w4 a1 ]3 h5 j5 K1 E
{3 J$ L# I/ Z6 e ?) N
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& }! U4 l* W* [& L+ {9 `$ q6 _
}
; e3 e5 u/ f& x2 A* m L. U8 Q" _/ Y' P3 X) `
void GPIOBankPinMuxSet(void)
, V' K- O% J0 Y5 V{3 p2 l- \& J1 Y$ L3 l3 _5 u
// DRDY ------------ GPIO6[14] -- 111
: C3 A& \% P* R" I // SPI1_CLK ------------ GPIO2[13] -- 46, V+ `5 V9 w+ v" a% O+ [
// SPI1_SOMI------------ GPIO2[11] -- 44- J) Z8 g" R" F1 m- b$ }- b2 ?
// SPI1_SIMO------------ GPIO2[10] -- 431 j" `# h& V3 c
// SPI1_CS2 ------------ GPIO1[0] -- 17
$ I5 ^0 ~3 h% P" X; x // SPI1_CS3 ------------ GPIO1[1] -- 18
0 p$ I/ l; p9 B6 A: P! [* G4 @2 ~
9 k7 c: }, ]+ n/ B! Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 Y; G* ?% U3 x4 H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 m' s' M7 X$ K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
9 M3 F( u% Y; q- K1 k# B( [ d$ ~. a2 u
//DRDY% V: b6 G) S8 A: z8 \' i
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY. j/ r7 ~2 ~. F$ {3 D5 a
// CS2,CS3
# }; [8 |3 e8 S/ ?/ s3 i- _ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 w8 m3 E" D+ v1 n1 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
" s) l: m8 n. w; A6 o //SIMO
$ T( V, d8 N5 Y7 z' l- F1 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, |9 g0 R }7 s7 |. ]6 i
//SOMI
: c& f8 `) Q, y7 M GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: O9 d6 k! h1 G. p //CLK# q* J* O4 w8 O! _2 @2 g
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 |/ Z, @; Z {* P: _
# J3 _ c' P: i4 W1 N: h // LDAC
& ]0 E% r5 h' c% ^: S2 O GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" ?! o6 K2 n, D+ ~6 T( @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# o; a$ I& ^& n* \8 O1 s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; S# ?( k+ _1 S6 N. H5 |$ z0 I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
/ Q: v, X" f) ], b3 ` GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 y+ D& f' D) d
}
; A0 ]% ~% r: h# y) }
" n# N+ u3 F& G$ R' {, Bint main(void)
$ M8 k7 o$ q- D P{- U2 ~ g8 }0 a
// 外设使能 k' ` J4 F8 @% M. d& y
PSCInit();
/ q* d! `: k; q- Q% v
) ~: T7 M x1 ]# ~" _/ ?
" W+ p& R5 H1 w // 管脚复用配置
1 ~3 ~0 P- F; z" h' M GPIOBankPinMuxSet();. p0 ?' b+ j- e# q2 b/ D( N) J* N' z
for(;;)
1 V2 f& e5 z0 @ {1 g5 \" F. v0 P' H. y9 n
SET_SCLK();//时钟正常输出* x9 e- R' q- P n. M( {: N5 E) ]9 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 R$ [4 w' r2 r6 u- n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 [( M7 M3 r: D, s9 @2 S( i& c6 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 l* C$ d+ q6 ~/ N8 r
) s9 J1 n: x, Y( Y3 G1 R6 K* q; W. b' w
delay(20);
: p1 | d, D, a. M7 p: ]! n! L CLR_SCLK();/ e" G5 u. E4 Q3 t* y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS36 w6 ?- o1 H4 O: K. r9 D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 o, a* [% B4 ~( [1 s4 C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* Q ^/ m0 |3 D# Z5 B X$ g delay(20);
7 ~- Y( |( }. s9 E0 V }
) g+ A" S8 i3 f4 x: f2 |} @* D2 Y+ E r
|
|