|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( ~7 b' l( u) t6 O' D& O5 ~& k+ xvoid PSCInit(void)
. l, Y$ [& ^2 b. O{% g! c+ X) _9 m6 s2 I: h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 _2 F4 h' S& t/ r, x- g1 X* L
}0 M! g j2 V( s7 t+ |7 L0 y. ?( @
9 c% ~2 J1 J( a& `" d, e& v
void GPIOBankPinMuxSet(void); F+ I7 j9 p( y
{2 ^1 `* ~1 Q5 I% I+ j/ S+ S; ~
// DRDY ------------ GPIO6[14] -- 111
; [0 D: a2 `9 l' F! Y1 [0 W6 { // SPI1_CLK ------------ GPIO2[13] -- 46
$ i9 [4 C; M: {! z1 b& p9 H // SPI1_SOMI------------ GPIO2[11] -- 44' M! I' ^6 r( l8 s. Y
// SPI1_SIMO------------ GPIO2[10] -- 43
- y7 M+ W6 ~% p1 j& K. B // SPI1_CS2 ------------ GPIO1[0] -- 17# v0 w/ ?+ m1 T4 v3 n
// SPI1_CS3 ------------ GPIO1[1] -- 18& ~5 b! M- F7 m$ Y7 K
$ o% d8 C E2 x% ]5 d8 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( I r* n( `: ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 \/ I5 ~, Q# }! g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
3 G) S5 |' u: p! P' c" J
' `1 N, ?5 ^8 j0 x$ o //DRDY3 J4 G7 g3 p4 F; B1 y, e
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 r& i& P9 ?6 m# Y9 X
// CS2,CS3
6 x. o/ T0 J7 x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! V) L* S2 Z3 }0 {" R GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ ^: l% d) G7 V! c5 Z //SIMO2 O. x) F- r! D+ q: Y' I
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 T0 }- Z+ `/ g6 Y, g* ] //SOMI
/ t5 `9 |+ D3 R GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) K% L. |3 s, y( p: w; o) ` //CLK
- q7 U) r: `' a# c GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK f, _! F3 N: S! o6 Z! M
7 Y6 O1 k; }! _5 R {2 W; S // LDAC0 g2 O# _6 _( y7 c! H
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 A/ t; r: g) L& J3 [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 ]* s, y J6 @ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. U+ ^3 E" C6 J% F1 i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. y7 Q* f. {- }& y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( O e6 K& f1 H7 X: r1 _8 Z* Z
}4 c: p+ B# t: w/ C2 B& c. \0 Z* S
O5 w) t; u! R9 o, B% f9 [6 b) ?7 q
int main(void)
4 m' }' w& P8 y9 ^' P{
: P6 b2 U; e5 @1 h // 外设使能
; ^0 B$ R* G) @6 o/ n3 r PSCInit();/ B# t/ m( R- t$ D; }& z4 N) H, }$ W, {
- _5 v- V0 q' K
0 s" ]& H/ E) r" Q
// 管脚复用配置2 l- }$ P5 f( ` z6 ~
GPIOBankPinMuxSet();# z+ V9 r# j2 g& A2 v$ a
for(;;)
; ? M+ S( v7 f/ L {9 S% G4 h) ]- k5 ]8 P6 T- f0 g4 j
SET_SCLK();//时钟正常输出* ~* O3 A; |7 ?0 {9 M2 J% h% v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, n( o# [+ ], d" `! n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 s4 u* L X6 U% _' i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( ?% Q- b' |7 |8 d$ Z8 B& D
( Q0 ^9 M! Z+ R4 Z delay(20);3 v! a2 W/ b5 M' @3 X; Q( o) E4 ~
CLR_SCLK();
" ]0 L2 V8 r: n' i$ M/ r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: Q4 X6 M f8 z/ o& d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 ~, \ i3 m# f/ [) J5 P6 q, H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ Z- l" R/ I( g- ]; H0 F0 S
delay(20);
0 ]) r+ k, D; i2 z, V }. ]& ]0 Q5 ^5 t' X/ |- N
}
; f! E* ~6 N, t! W! {+ T% ?+ @ |
|