|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. H( G0 G; A' h7 b1 k
void PSCInit(void)
9 |" m& @5 k, j5 O{# i' N& a8 ?4 @5 {6 k" [; h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& X* w3 g; j3 g D
}
, X) a. i) h g+ l8 `: }) ]( M* ^- M0 V& K( s* E
void GPIOBankPinMuxSet(void); ~, _; y" T6 P4 K% W
{
1 H" D, X# p9 y3 r Z; u- z3 ` // DRDY ------------ GPIO6[14] -- 1113 i& U' b+ ?$ e- g( Z
// SPI1_CLK ------------ GPIO2[13] -- 46
0 J. w. f" E" o3 p2 Z$ y. a( Q // SPI1_SOMI------------ GPIO2[11] -- 44
: S; \) O# Y8 l. F // SPI1_SIMO------------ GPIO2[10] -- 43
* T5 A/ U2 q% a5 ?( L6 j // SPI1_CS2 ------------ GPIO1[0] -- 17
2 s% P; U! A6 ^4 s m // SPI1_CS3 ------------ GPIO1[1] -- 18
$ F1 ], v. y$ \
2 ~3 k, r0 E+ R3 u- t* W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 i3 f, F" U: e: e5 M' l! D$ q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' b5 p! x2 Y- l+ F5 M, N, u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 |7 N! R5 a- `: i4 ^! |1 B8 P' o1 U3 H% m9 d w5 i; |
//DRDY: W. d+ v; ^) {/ e+ J% F- v; ^
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 t* f Z' W W8 X6 c
// CS2,CS3# p& f; k4 Y! f$ X
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 X) K% l9 y+ _
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ q8 c6 d# w* t6 y0 X: f
//SIMO
) c! ~' f" ?0 P: R4 Z# N) s. v GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO) ]) F' n: i3 Q6 j) g$ \* Z
//SOMI3 c7 o1 c# ^! b4 T! F" u- G
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ k5 w& ^- e* j! @
//CLK
4 M6 P0 }3 w# n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, S4 P7 X- J+ z( r( s: k* i4 ~# z# t
// LDAC. S, q" Q7 T( i) _. j% Z9 g
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 R5 g) K* n C2 t4 d1 {2 K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 ~" b* |5 T9 ]9 h1 }* Y* o& F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. v4 f' y# L! I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) t6 [( y1 k* ` i6 M& [; Q: C$ c
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
q& G1 r0 s$ d8 T}1 h# S# t) m0 S! L4 B! ^8 c, Z0 o
/ Y+ q$ Q) Y' H& b# }
int main(void)
: _$ c F7 Q" a& G k{
* P( S/ U- {2 } // 外设使能. O& e- m) f+ ]
PSCInit();
) H& |. x5 E/ e8 u) g* w: Q5 |' n% N" V6 J
3 X1 ]; h# j7 r7 Q // 管脚复用配置
x+ K3 x: S* j& ?* j# Q& T% D3 ~ GPIOBankPinMuxSet();
2 C6 x1 h' `; _4 |- C* G( U% ?! @ for(;;)# L: s- l, _1 v8 C7 Y% p
{
( P# x) r4 t, m5 [7 w& H SET_SCLK();//时钟正常输出- c: u- }/ }' F8 q2 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* S+ e. O( c+ n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 r; V5 J, }* B" b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 J) h7 }9 q1 u+ @
8 \3 C6 S) Q. H! F/ n
delay(20);
. r7 R) X r; Z: a2 a: @* m$ ~1 D CLR_SCLK();
* c6 o* Z) s" f0 {- k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( O$ k; J' n4 q0 Z5 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 n ]; m/ E- a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: S: N/ r+ ^' s) U& R# y
delay(20);+ M; l' H$ U1 Q4 w/ r1 k
}
8 M5 S: @0 {3 E; O' z# ?. n( j" x}* z( y& u r; |4 R
|
|