|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 i& z) ?- I+ K8 S6 @void PSCInit(void)' O' A: x1 E5 Y! C' h4 v! `; F
{2 t: M" q6 z7 _, S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: `( N6 \, e* \# g% ^6 U3 W9 s4 P* |# y2 W
}
( {1 c" q; c# G8 r$ n8 L0 O4 s. @4 M; C# H) j* @8 \* I
void GPIOBankPinMuxSet(void)
6 f8 M: T$ R1 I6 j{ S: F3 J5 w1 L& m9 |# Z
// DRDY ------------ GPIO6[14] -- 111
3 F1 }0 U4 r5 u1 _( y- f // SPI1_CLK ------------ GPIO2[13] -- 46' k8 c& R* B Q
// SPI1_SOMI------------ GPIO2[11] -- 44
9 ?) X" z4 N# _) w // SPI1_SIMO------------ GPIO2[10] -- 43/ m( u' Q8 K( d. J
// SPI1_CS2 ------------ GPIO1[0] -- 17/ C( y* t I1 G# r& q, k$ B
// SPI1_CS3 ------------ GPIO1[1] -- 18* D) f! M/ o. c' z
; C8 k Z8 h4 I$ |$ o9 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* C t! `) Y2 x0 O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ E* `8 O1 X% v" j* |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* ~. X, c( W' L( X
2 ], T* s% A' m2 @ K ^3 G //DRDY
1 x3 M( i; W* o* K2 s7 c GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 O: O. \( ]5 d. N // CS2,CS3: P# A7 F z* r) c0 F& b, O2 S; d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) K) u2 T# ~; ` I& _: L GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. K3 `' ^6 A3 [$ Q0 t, _ V! R
//SIMO8 g" z3 e& H8 m# n% K
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ Z$ L5 _7 d e //SOMI, b: n% Y! B7 Q0 }% c. p
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 X( F% [6 [( z7 q D* [" f! W( ?9 L
//CLK
$ t9 Z7 _1 A! O1 r. B5 U( S, I! V GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: H* }8 W+ B1 c y! H2 O% Q: a9 |( m: ^& X. S% T
// LDAC. _6 ?( [ V; M+ Y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! O$ ^7 i+ i8 J) ?' r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( ?- @2 _0 i8 s: j4 W- }$ c5 V. K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 \" c8 H' ?5 V; s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS32 Z+ V( W4 ~9 D( H
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 X }6 V: e% x
}
4 C$ z b. @6 v1 Y3 E0 e. u0 v) l: e: `: {. |8 ?
int main(void)/ `% a2 H: q7 \% j% ^7 u: Q
{
8 U; R9 Z( o+ m+ m7 c' V; B // 外设使能
4 ~3 r9 H3 Q2 A1 o PSCInit();
7 j& J$ _- o$ v4 P# k0 U
$ Z# k( N& N% q) B- r
1 j1 {: O! c6 d; [, Z6 p8 Q% d8 d, M // 管脚复用配置" z8 v2 J! C) ~) w
GPIOBankPinMuxSet();# g1 h5 s" b0 b. f) c5 n
for(;;)6 c- b4 D" j4 d
{; M! I0 s% h5 f8 b) L1 W+ a
SET_SCLK();//时钟正常输出: q& _; v* B# g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- c- L& K0 s; x8 f7 q8 | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 D1 D" A+ ^* `9 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 y2 t& ~" {4 A
! n& W3 F% ?9 u+ w delay(20);! k" T5 I, Y8 O* a7 V) U
CLR_SCLK();
% p' H7 H; ]# F' W$ I. o0 C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ \3 s; Y' b$ K3 p2 _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* Y) x' `+ \) E2 S: `$ h) X. B. x; L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 N1 z2 [0 } A delay(20);, `+ M4 p \ X3 L9 p
}3 B* n! @0 G4 L/ l) [; y
}
' g2 V- s8 A% g8 Z$ I2 r( e |
|