|
使用下面的例子代码,不能使SIMO和CS为低电平:- n+ g/ H$ [) f+ ]. {4 \( t
void PSCInit(void) D$ _ V7 m N# m3 @
{# ^& P4 F$ Y1 ^5 m2 z9 ^# K5 D; R
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! t' k5 h0 z; t& C}& t! m6 ]9 V. v8 U$ g! ~- ~) R
# W- V' {3 ?% K" G
void GPIOBankPinMuxSet(void)4 D2 S1 m7 B0 _$ H
{2 H8 f/ w# a; @. t6 p: P
// DRDY ------------ GPIO6[14] -- 111
. X/ t; E- ~0 q7 P1 g9 Q: O, r, z // SPI1_CLK ------------ GPIO2[13] -- 46* T% f& S. ~& y4 {& d
// SPI1_SOMI------------ GPIO2[11] -- 44
4 Q8 X+ }5 |. U // SPI1_SIMO------------ GPIO2[10] -- 43- J! o5 a" p1 s( K/ B# l
// SPI1_CS2 ------------ GPIO1[0] -- 17
, b! g" y9 g. Y" [. P/ r3 e // SPI1_CS3 ------------ GPIO1[1] -- 18
+ l; R# e$ k( f
6 O6 C- \, r1 q! ]2 a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% C: E# N# T' B. n( G m; W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);! L: x. C I) X( w$ X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- P( \# L4 E5 p( u
% {: U0 s5 a1 N- B- ]/ Y2 Z //DRDY. ^6 f: p0 e( ?* g: o; Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) Y4 B9 x- w4 p8 m8 P
// CS2,CS3! ]1 O9 h: d- X. E' @0 [1 e4 k
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* R' {: y% n7 Z/ L1 Z: u GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS36 ^9 Z; `# W ~. Y1 H( N, j4 Q
//SIMO- i4 _( A" f6 b* W T; r4 I+ I
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 [5 I) s/ ]) @& I6 g$ G //SOMI
4 r) e2 ~0 a( d9 L) Y3 z6 T7 I GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 H2 o! v) ~! _, a0 k4 m$ O2 L
//CLK
1 r. O# X- C9 ^! E L$ p GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 ~+ Z9 F+ Q2 \/ v7 J# H# c3 T+ K" M: g: o
// LDAC! e2 l9 S! d/ E% i/ }
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. Q6 U6 S5 q$ i9 x# ~2 I0 R) P- [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ }1 H+ V" k {2 B3 o$ m4 H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ a, D/ ~/ w$ n( K9 l4 X4 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
) ?( V+ L2 d9 w Q' |; ]8 { GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( L# ^' h; L# f" Q$ ]( Z
}
, B& P7 m$ n# I3 ~
, {$ M* ?4 o$ Iint main(void)0 E- r* b+ T5 B' {& Q7 [
{
9 t; Y* k( ^. v1 y // 外设使能* m6 Z+ |( w# h6 @ j
PSCInit();
8 V: B$ h. j, [: r% x3 @- h
+ l. F) e3 n$ A ( S$ y- x- N1 {; C
// 管脚复用配置' c3 z+ Q6 K" X9 f6 C2 M5 p
GPIOBankPinMuxSet();
) z7 l+ F( J9 o$ ?. a; V. O n# R3 k for(;;)
+ i# h+ _) Y% |. c* W {3 f" D r+ K% a2 g' m* H |# _& b
SET_SCLK();//时钟正常输出
: l: F2 a, J" c2 _ y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' j) }* `2 H3 r9 w; ?5 x$ l5 u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( ~! ^8 W2 r9 @: ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) k# S Z! L% [& S
- @. j% L+ W* w2 r' m: |1 @) M delay(20);( F! V5 m# N6 v& v( \
CLR_SCLK();6 Z5 e) I( T) h8 T4 l7 V3 P
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 Q1 k7 w5 f* M: N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" F: G; A& ]/ Q6 l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ {+ k+ F8 h& W/ B( l/ G6 Z delay(20);
9 i4 H/ Q2 }! O# S3 t/ H9 i4 ~ }$ e( Q5 |+ ?/ ]0 l8 ?/ z( C
}
+ F) _; p6 ~: s |
|