|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. ^3 q4 J: q* y: n7 r2 H
void PSCInit(void)
( q5 p& u6 `4 j% N0 R$ G$ h{( c' X# r5 k; q0 U. A- x! y7 v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; t( ]2 \% Y9 m8 G; l
}* B, { Y) M! n
7 T* `- B$ A5 }6 h. g* p, Z' dvoid GPIOBankPinMuxSet(void)
/ W3 z, Y* P( R0 h{9 _' v$ Z3 D- P/ D; V* H( Y
// DRDY ------------ GPIO6[14] -- 111# ^- a( y A }2 G2 x* i6 `& F
// SPI1_CLK ------------ GPIO2[13] -- 469 f' ]& m& n c* H7 n. s2 H4 X
// SPI1_SOMI------------ GPIO2[11] -- 44
& k( U7 F( b2 d% B // SPI1_SIMO------------ GPIO2[10] -- 43- A0 s5 G1 y% Q* O5 L5 @+ `/ n
// SPI1_CS2 ------------ GPIO1[0] -- 179 Y1 p( O2 T) }$ o
// SPI1_CS3 ------------ GPIO1[1] -- 180 d. l- M9 y) o% z a5 U2 X
, Q6 S' G: q* _, C1 g2 Z$ O- h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ C/ x7 m; b* a4 e. W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# L4 V: h5 L6 t' v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 ^5 e' j* \ U. J+ {/ e
3 F9 w# C u( O, G3 h+ j! y' V //DRDY
5 x. R9 ~6 {4 d! O1 r% J& R3 O$ r GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) z% _9 v" c: j, h1 h
// CS2,CS3: [7 f$ D8 _' e. Y6 {3 Q4 s
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* K4 z, z; [8 C- V" H: J' r& W3 R GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" a* M6 c, \( b9 H
//SIMO4 y8 R( M3 k" L* V
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO% }. M, ]/ N/ H' \7 c4 H C
//SOMI4 N7 q) S7 r7 Y7 K% [( _2 W, [
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) [" ?1 \* D) m' w //CLK% m( z6 g' ~ Z/ @/ B' ^9 C
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 X( N7 ~" W% h3 ?3 [; N
0 K% c0 p. P, a6 L3 o0 k+ P- f. g // LDAC' s3 Q8 P1 I- z6 U$ h7 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 W3 n$ F D. Q& ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
F6 }6 X3 Z, b& }/ [; F- y; A GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ H! z- V% ^" v+ D$ K6 R8 s3 M) o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ F# d8 Z' x& r5 j. D% q
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: A1 [/ x5 x4 m! E( k+ \/ {}9 g' y- f! E& _
& C) N; ]1 l3 b6 sint main(void)9 f5 t5 F2 o8 F5 }/ U& L
{
$ ~" \0 @! |3 g4 @9 y$ F9 o; d // 外设使能
$ Y" b' c: x2 ~! S" q6 z2 H# Y PSCInit();- s- p* }% `, f) `" f- h5 E
# q; @9 e7 P9 Q, | n8 F& s) z " a7 Z7 U$ _) J# o
// 管脚复用配置' a {0 u( F/ D& Z/ H0 h: Y9 g
GPIOBankPinMuxSet();
6 W$ h8 @, |" f& Y% P3 s for(;;): E, h* o" e$ @% z# N1 B
{
- h' e9 ~" l5 r* f SET_SCLK();//时钟正常输出+ v' ]9 P: v+ L- f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 x' k9 X8 W; i* g6 `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 k' z& V+ @( T& b$ W4 }2 U/ n: C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' A: w* }/ a; a8 _
+ p' V( u% m( l7 P delay(20);
& h5 f; i# E& l L$ z/ G+ s' a CLR_SCLK();
7 D6 w7 g$ `# X" W/ Z. x- I: N. r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# v- C* Z. B" K3 I* w: e GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' g+ v/ l# D( X" Y) B$ |& B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& r+ M! Q* V' F/ ~* T delay(20);
7 x: a" h% |! @0 U }7 F- @4 L6 u' t `& e
}
|% d/ T1 ~/ b" R3 y5 E |
|