|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* s) m9 L( C7 [5 K: X/ Y4 ovoid PSCInit(void)
# h* J' r6 M3 l. Z{
3 j1 X: m2 ?! N J4 s/ d( y PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
f/ }+ G% S. F}7 i f& h- e- X6 u" I I3 e
1 Q) C# w' m. M- s) C5 r% X
void GPIOBankPinMuxSet(void)
$ L. u6 [7 ?/ I2 m5 O# a{* j% @2 U2 _0 Y
// DRDY ------------ GPIO6[14] -- 111
% ]+ ~1 p7 u& R8 m+ F2 v // SPI1_CLK ------------ GPIO2[13] -- 460 e" l% z( O# [9 o( g2 y! H
// SPI1_SOMI------------ GPIO2[11] -- 441 ]7 v f& n: E9 N0 S. `
// SPI1_SIMO------------ GPIO2[10] -- 43
' }2 i; G3 _. ~( H // SPI1_CS2 ------------ GPIO1[0] -- 179 u0 ^ L4 M( r; @5 W7 d
// SPI1_CS3 ------------ GPIO1[1] -- 18
7 l6 X7 H/ B# ? @: z* p8 y7 O; ]8 ?# v; j) J4 V+ ^* q1 K3 a( ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* b1 r) f1 w& ]& X: B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& ?, K. b0 C4 @ {& @0 l0 C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! C- e5 L% H; l: U$ T! f3 M5 W, a5 j" x" g6 {
//DRDY4 I# N9 y4 W$ Y% H+ e o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ `, e- g9 K8 m3 Z) r/ ^3 I
// CS2,CS3/ i. k# r7 ~. W# U/ d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
K. A# {2 ^7 g8 } GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, C$ |( i( D6 H6 }; x! c
//SIMO7 E7 O, P" ^# c
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 W; M7 {4 A% F1 a0 p2 i
//SOMI: l! o! T+ V* k8 T- U9 d/ X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 m6 v7 n! R- H% G/ C' G( n
//CLK
" b/ G5 g* y5 g GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( K) S& a' H6 T* W5 r5 o0 ~5 z
9 I4 I2 h) S" `5 e6 t, |
// LDAC7 W, O! K* t. h2 X) J3 F
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 t) R. [' R! T4 n& [+ G' r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) d8 K9 C' w3 `0 S* m/ [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 t7 V% k) _2 _" b GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
) M, {+ i2 z4 C2 u7 a GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( D2 Y# {/ p8 c$ W8 \, h) d}# ~: ~ W6 |2 A2 D
0 r# h, Q' d8 | p7 T3 R- [# ~& rint main(void)
; `# u( k0 v5 i- C{
& x! T, ^- g9 W$ e1 M // 外设使能
( Z4 v# Z0 r0 K" q PSCInit();# K: g- m( S. o3 D% @3 g/ q; o+ V
8 x, z! D* R0 h2 q# z8 J9 s
* |: q4 X/ l& T2 H# L7 ~' r% Z // 管脚复用配置
: R/ c( D7 y# f. M; \ GPIOBankPinMuxSet();
" `8 ^( U; W5 K4 p+ Q2 W for(;;)
+ v& N1 F7 ^/ X) D9 P {8 ~. ~+ i4 Z! c$ e
SET_SCLK();//时钟正常输出
& l+ u k! e9 E8 l( R, V! p& A) q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, y3 |7 d0 b% E! D* _# [ s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ A9 A9 q& g/ U5 _" e* u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
, n# \ b- _: x5 T, _3 u% y1 t
; v) i, D0 e" c; G% a delay(20);
* X6 `. Z1 ?+ w. U4 O5 p CLR_SCLK();9 V0 |: q; S% L% G! ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ N" ^8 D% T- h% X3 e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ A8 e; H" q2 G$ J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' A, y% y* Y* B- g+ J ]" n delay(20);6 I0 c0 @. y: a$ Y" d
}! K! t+ q5 |5 S1 @; e; G
}5 T3 k' d H i9 I, G
|
|