|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 j( q" h+ `- V" n8 l$ l2 H) Mvoid PSCInit(void)
, N7 _: |9 g; Q, s0 x" N{5 C' q/ d* B7 @8 E- }' B
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); I# p3 Q# d# Q. w2 g8 j ?( Q1 L2 B
}
% b% i+ { ?. S4 e b
) T5 p, {! y8 K/ ~9 Qvoid GPIOBankPinMuxSet(void)
4 T3 Q6 A. O: m, i& J: h{4 ?' `( Z! N( c, Q
// DRDY ------------ GPIO6[14] -- 111* `) Y! ]3 y* c) W% O( L. ?
// SPI1_CLK ------------ GPIO2[13] -- 46 R. u2 r' z% R1 o
// SPI1_SOMI------------ GPIO2[11] -- 44; T- r: K9 M; P- H$ N- g$ }6 s7 e
// SPI1_SIMO------------ GPIO2[10] -- 43* y$ D! c4 v( m! \+ R
// SPI1_CS2 ------------ GPIO1[0] -- 17* I6 H/ O& G& ~$ R! Q- B* ], i
// SPI1_CS3 ------------ GPIO1[1] -- 18
$ s% K6 b. g% p" n/ N) w
0 \3 j$ ]( c6 f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
6 J$ z* v2 ?4 h2 I" I- r- A5 J u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 S: P3 E# w- c- V( @- i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 g0 ?5 \; P; A& j$ _, \7 [/ l
0 E4 z& F( V9 r9 j6 E y/ v* z
//DRDY
2 W- a7 D9 w2 I GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, P1 Y! K7 h4 M( v0 I9 S. y // CS2,CS3
' ]6 a4 k* R+ u2 n8 y. Q J GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. V- H9 y* p$ x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: T( n5 m1 g! x9 i8 A7 ` //SIMO
, i8 ~5 F) ]8 i. @9 s+ z. q: ?' W GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
" A7 Z- H3 }! T# w) y //SOMI
# y A3 p4 m+ j8 f$ I2 m. v GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: r. \6 |- i2 H% X, S8 a3 r; M: L //CLK/ Y2 B& U |" l, b" |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; ]! G+ l; Z+ j, U+ R
/ I+ ]( ? ?- x) t' z g // LDAC4 U4 }% ?: P2 a, }: d
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 W+ j: H2 \. r; X- C0 H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& U( S& ?* F- V, H) c0 R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% ^/ Y$ h# l+ K) [- d* g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. p& {0 ~0 D4 \: ?
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" j+ S& ^8 w4 H) d* D
}/ p8 U2 y2 T; y; x/ N) I* H
' D1 s, i* U8 d$ {0 w4 [
int main(void)
1 T5 C$ C3 L3 E* w7 y# O( c/ Y, q5 ^{: w7 g% x o! n. |
// 外设使能
* P/ | K; O) h8 Z l PSCInit();) ~ n- |0 n0 s2 K
& l; b9 M/ G# \1 G6 I( A# y! c" t
1 [/ R: D9 G5 B3 V( j3 k9 b
// 管脚复用配置
: h: x% P: H; G l4 q$ j GPIOBankPinMuxSet();! ^' I* e+ e# Z1 W4 t: D
for(;;)
; W; r2 S7 G' B w. E {
3 B# U% g( d0 T2 f SET_SCLK();//时钟正常输出
5 T( V6 B. U- b. e7 s! X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 ?$ E( y+ }) N) H( `+ Z1 B- `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 l9 d+ w' |$ I; h* z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- n" f2 r* ]. h& c/ X) g, J: W0 ~. G
delay(20);' M1 o8 O' ]! `( I
CLR_SCLK();' C1 c3 X0 ?6 {" K! ~! D- x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( D! x* W7 J8 n$ }7 p4 m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- ]' q( t! p1 O8 {6 S/ g" W$ {* E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 {% ^% U7 `' ~& j/ j
delay(20);2 z* A0 e6 W5 O/ w4 ], I
}
d/ E. b! @' C" S) a, Y}& }) \# t5 S4 f
|
|