|
|
使用下面的例子代码,不能使SIMO和CS为低电平:1 ~8 J) ]1 P1 \9 l M/ I0 V
void PSCInit(void)
( V; ?; t; E0 T: \7 }! L{: i6 H2 `* f3 V8 ^$ }$ V# V) t
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
( ?# c8 Q" }5 G) B}
2 X0 [$ ]6 d* T" i: ~& w6 l
" x5 P* |# m0 |1 b% Nvoid GPIOBankPinMuxSet(void)
1 h: Y. f9 j; z! G( j5 N: n{
9 E* p( g0 A' D4 G- E9 K // DRDY ------------ GPIO6[14] -- 111( C; _- O; \* O& j) _
// SPI1_CLK ------------ GPIO2[13] -- 46% t d$ Q. |+ _0 ~
// SPI1_SOMI------------ GPIO2[11] -- 445 {6 x" x! X- M
// SPI1_SIMO------------ GPIO2[10] -- 43 v9 h/ u2 {! n; f
// SPI1_CS2 ------------ GPIO1[0] -- 17+ Z1 O$ {/ a' ]; X S, q0 Z! K( G
// SPI1_CS3 ------------ GPIO1[1] -- 18$ C6 D6 q1 r% m& o# K5 Z
/ g" q k6 o# u) A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" F' t! P8 o% m, x$ k6 ]' p t2 t0 v% c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( k* f1 b2 l' E- v0 P D( U: a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- }- Z3 g- M1 @: a
# T I4 t# S" Q; o( i. Q //DRDY" ~9 D/ g8 v! W) g, B' D
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& n" P; ?* t! t: f: A& R // CS2,CS3
! ^" }5 x0 Z9 M2 }2 D6 |2 { GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 @3 G5 H0 l7 d9 R6 L H$ `) g1 @. ? GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 d4 U W0 `+ j7 N: H1 m
//SIMO# z# ]- O. X+ k: w# k2 x
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% R8 f0 B; d4 s) u5 c8 _ //SOMI4 ~% A2 ~- r' E' |- C; `# r
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 v' S: Q0 [+ ^ j1 G9 a
//CLK# k# V0 M; n: \, f- B y$ Y* p) ]- \
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK a/ o7 ]2 z. `* j! Z0 [
' Q0 \" A- x- q( \) R) ` // LDAC+ ?* `2 l9 M$ J5 O- l! ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* ?( D% B, N/ L5 j2 L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 L6 Y& v9 o% c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, {3 I+ c( P- d0 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* g7 n; ^: N$ }6 i5 {
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 s' u! F$ y7 O& O
}
. w1 k$ m: ~+ [
& N* a% ^' i% B* e. kint main(void)
' d. Z$ k; }4 v X M9 }{
$ W& ?! U" d3 O4 F# R& { // 外设使能; C( S: `! R9 `: f5 ^
PSCInit();. Z( c8 L: i. B2 q h% j8 I
: X, ~) ?5 T) R$ |# k' n1 _7 ~
3 [9 P6 j; a+ j0 h3 n, h // 管脚复用配置
! k6 c5 T% z5 @# L, _+ H GPIOBankPinMuxSet();
' k7 r% @* J: Q* D for(;;): w7 L* c/ b0 q8 E$ K
{
" l% y! s- d+ F+ `) j6 i N( b SET_SCLK();//时钟正常输出6 I" h( y' ?* T" g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 W. h0 m) Y4 K5 T. z' K& ^" F3 ]0 ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 d. @0 E2 O# j; R) L( o" `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# n" E4 e( x5 d4 ^$ W
4 H) W+ x; a: j) C
delay(20);) X) ?$ N; ]: h: c" l5 }
CLR_SCLK();
# ]) i: U: g& W& O# I8 E. d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 |: \, [* ^( h# s+ p- ]; G/ v. n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3" v( ^/ J' G, G7 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- Z# `; b8 f8 P" S" W5 f! S0 g delay(20);6 f+ w1 Z/ N5 R! C7 H
}
6 C8 m; a7 y" L1 D}3 n1 `( y4 y- S, y3 g9 k! \! O( W3 B' M
|
|