|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; @1 ~ S- s& W- \1 _7 O1 C
void PSCInit(void)) v0 ?2 T. I+ z/ a( |( p$ m, N
{4 p( W6 b, o6 B7 q G: z3 t' v D
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! q0 d O) I$ I1 {, J% x9 m}
1 D0 S6 j. J% H4 H0 L( k3 I* O j* l% L
void GPIOBankPinMuxSet(void)
3 H* O: ? F) I2 {/ I3 p& M{
; W! C; Q+ z& n1 j2 @, g$ [ // DRDY ------------ GPIO6[14] -- 111
5 s& e. n) V( ~( K // SPI1_CLK ------------ GPIO2[13] -- 46
8 D% O1 G( l3 p- ~8 S // SPI1_SOMI------------ GPIO2[11] -- 44% {2 r1 |9 N( I) X
// SPI1_SIMO------------ GPIO2[10] -- 43
* a4 U- F! @& { // SPI1_CS2 ------------ GPIO1[0] -- 17$ K0 x+ w8 T J1 @- f! O
// SPI1_CS3 ------------ GPIO1[1] -- 18
+ Z2 i+ h. o$ l) q) b( c" j3 L4 \$ r2 K: z D# q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& q( C. }4 T0 R$ z: U$ N. N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# i: P4 _8 T. N9 P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- E3 n" p( f' X0 i( u! S' Y" c
3 M& U' \$ |; h
//DRDY# I+ [: N/ Q) g' X2 n0 v. ^
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 J6 l, t% d8 P, s6 ]% z // CS2,CS30 s9 o* j$ Y* I" W9 e" H( n" j z
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; T+ D8 C, O/ V1 S# K8 M; h b
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ R' D) O' i4 p- d, |
//SIMO2 Q$ E1 k3 A0 K5 }. D
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 J' L! \7 p, |2 g: |7 j
//SOMI Z9 r$ R r& }
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ D7 P# X; p& y/ P( Z3 }* ^ //CLK! S/ {- T/ M3 W% D$ Z/ j
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ r0 a: Z8 K2 ^4 o- P0 h3 Q3 b
- u' Q" B4 B. J# w: X // LDAC0 b" ` y4 r3 {, M$ B
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
; X, B( }$ L: T& I) ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# i( n9 [. x- H! x2 }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 T3 {& U- k/ Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 A7 y. T" H- D" c GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# E/ ^2 Z8 F4 J4 @) X p5 b u) g
}
% q7 Y1 M1 d8 o j v% x( e+ ]+ a, T$ A
int main(void)
- d7 Z* x& y5 V# q, g( b8 O{# `( ^6 I0 F( S/ a
// 外设使能2 ]% L" Y; ~2 c( K
PSCInit();
) |, b+ d/ Z3 A& k% K1 F. P) o; ]) h) S8 _) B
. W/ C7 t0 w" a: L // 管脚复用配置
0 y& X* z# V/ j9 \ GPIOBankPinMuxSet();
! m. Z: V( r. v8 k7 c( x for(;;)0 K3 T+ M0 i. a: h$ ?% s
{; _/ x; W! _0 b0 e$ ]0 Q$ |% i1 c1 z
SET_SCLK();//时钟正常输出
[9 u3 B4 b. G% L, h! b1 _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) R2 F! N P% O5 w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: l) b R- W/ x1 o8 T; k1 H( O7 `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 n9 A0 m4 U4 q9 O; h/ p
8 ]& e5 ^. J( P- Q0 W* {7 | delay(20);
% l0 m' b' m# f; h0 ~$ w1 ` CLR_SCLK();& y9 L6 ]' M. b7 Z: |& F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 E$ e1 E; B% i0 ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* O* Q( P- [7 F) j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( A! l; v8 k% h) Z; u/ N3 ] delay(20);
" j! x4 l) ?) v2 a1 H. Q }
" h2 P+ e3 R3 s}. d9 A+ t" B% i, Q& G
|
|