|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; L# A$ W$ |2 O5 i, ?
void PSCInit(void)
, y# t9 ^+ x# w) B1 x{
/ M: o) w0 @% T# a, l' G& s PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 v5 B7 T, O# g
}
" X+ t8 f; r6 T4 j' l, a9 n+ ?2 T# `! u3 k& |
void GPIOBankPinMuxSet(void)
# P$ b$ J1 q4 u, \8 q{) s( q5 e) j3 V, e; R# E3 l8 B
// DRDY ------------ GPIO6[14] -- 1114 j2 ?* q# h- G7 N. x$ Z" e/ B8 r: c
// SPI1_CLK ------------ GPIO2[13] -- 46% j1 R0 `- d4 ^# M, Q4 y. {+ }. R
// SPI1_SOMI------------ GPIO2[11] -- 44
( a* d3 _. s. x% } // SPI1_SIMO------------ GPIO2[10] -- 43
1 Y W% V, E! B* J! m // SPI1_CS2 ------------ GPIO1[0] -- 17
% I! ^7 d5 ?; W4 j9 T2 `* K // SPI1_CS3 ------------ GPIO1[1] -- 18
6 ~9 ]) u& b4 L' n$ b* w& A% U* o. A' x( A% @+ t% k( c8 x
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
0 I, Y) {- W% ~: k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 f. ?9 I/ U1 G/ k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# `# Q8 E/ u2 q% x- L' C
# S% P$ F' H! B1 ~6 v //DRDY2 a: S3 @& ?4 \. c' b
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" Z! w% }5 u+ [# h% Q8 {% t. Z
// CS2,CS32 P9 }* u- }, D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 ]! N$ J/ |' h3 f# E$ e
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) e( q9 T* D7 Z* j1 G% I //SIMO% y+ D5 b( [6 t1 S+ O, l: l
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; _8 z4 ^3 w3 b' B C4 `6 y4 v
//SOMI: `- Q, H) _4 S+ D4 y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI( j8 J) H3 Z6 W9 u# D+ B ?
//CLK7 L% s, t- q2 _, X% z& u2 w3 j# @
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ e2 c- j- B. X- a: b
: l# d+ F$ x% u. m3 j // LDAC/ m* P4 b4 F+ [9 N" X1 x: }
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! v& b d. @* v+ |4 y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: {* a, [: v, d; Y& W6 H6 x/ s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ ~* q+ ]$ ]$ U3 ~, D' i( B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 k y2 N) \2 b# p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 e, {* h- M: Y% ]
}
6 \, G6 ~( S; r# p% U5 A0 X8 ~
7 ~0 W' u3 _7 W& L8 S* b( Wint main(void)
: U, P! H8 ]3 y! F t) Z- T{$ h- b2 N% p. o: i+ H
// 外设使能
6 r! |) G: s, I PSCInit();
P: W8 L. K* r% b, C. ~$ I" l; z$ ~, q. }
2 g3 }( f- [/ K+ \# w6 J) C2 k9 a! Y
// 管脚复用配置8 ]9 r8 y* R3 F$ h6 ~7 Y' v) Z7 Y
GPIOBankPinMuxSet();! o9 t; F: Y& ?. c0 }& R; i. ~/ u
for(;;)
, Q' @, a% B: A: i {* W/ Y* W& T% g5 l4 X( J* F9 ^
SET_SCLK();//时钟正常输出+ ^4 `+ Z6 o: _6 [/ L& N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 Z- K) M. Z L) K+ r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( k- g, s4 d0 g5 n& b( x2 C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' |! r3 y$ P+ S& \& k* K6 t: n1 [
/ ^6 n- E2 V. L, i delay(20);6 l2 A5 R) q0 }9 P9 ]
CLR_SCLK();( ]; P# `( k6 Q N, U. J
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 u% V6 ?) {9 |2 e: y, E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& A( N. [& v8 ]' g s1 q% g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! l" R9 Z! Q$ d7 A/ Z' |+ W- S3 _0 A
delay(20);- r# s6 Z" F; W9 M9 ]# y1 [5 M' n. H0 v
}
: l* G6 i- X7 f* p+ v5 u/ ]* d}' V& m. W, D8 R
|
|