|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% A8 f1 K6 n; @& W7 F8 O4 H3 U& c! d
void PSCInit(void)
9 Z# X, M3 C) ?{
# a7 x7 K: V8 k' v% ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 d( a( D( }5 A% z) L6 A
}
, T: |# i! |. d' b! o+ \& f% E8 u2 n9 b# J4 G& x- Y
void GPIOBankPinMuxSet(void)+ H- ?; Z* q& V2 g7 B+ }3 ]
{9 R8 q* Z. g8 ]9 O
// DRDY ------------ GPIO6[14] -- 111
U3 W( u& b$ ~3 p6 y, y% B1 S* |) ~ // SPI1_CLK ------------ GPIO2[13] -- 46
x- s6 Z9 j4 t6 p // SPI1_SOMI------------ GPIO2[11] -- 44- y: L& Z3 f n
// SPI1_SIMO------------ GPIO2[10] -- 43( k5 \% p9 \$ b5 R9 D
// SPI1_CS2 ------------ GPIO1[0] -- 17
9 l: u% b! B3 U0 ~0 j( I // SPI1_CS3 ------------ GPIO1[1] -- 18# n4 U, i0 @) H% K
# I! x) v) Z- S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ w9 p6 n$ f2 R+ g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 Q/ z) [$ O, v1 X& f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 G/ ~& n% z7 t$ t
+ o$ s; f# D7 p1 g
//DRDY- @2 _1 m2 W. i3 {" P
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) O0 k' @* V$ y9 T' `- O2 m // CS2,CS3
& t2 y- u" `. K GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
( h. \4 J0 p) h6 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 _; c( S( q G( \. p0 l- Y, {+ e
//SIMO# ^( q/ w% r0 X( t' w
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; G5 o" w" i% z, S: H
//SOMI
! K' f# s/ Z- P1 p5 q# T" J GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! ?* q! {% G q( x* X6 k0 Z1 B
//CLK- s7 }7 x$ C& B9 i: X
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# q: Q6 W. [) |3 s, {
7 z! e5 c" h0 q: E9 t- b, [! q6 m
// LDAC
* B$ @7 r. f0 L) a+ i GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 B" W4 e% M% j( ?- L/ f8 V0 L( |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 c) m" D- B3 o" I% f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ r# I: y& b+ M1 Y2 T0 D5 P0 n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3- X% ^: ~0 [3 \6 Q9 J
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
) u A& Q! F/ N" L6 J}
' G e9 K: ]$ i" P. _: t. {+ T( k# z
/ ], |( {. ^4 }% E) p0 G$ z5 _int main(void)
8 J/ m8 \& y! X, ^8 g- q{; Z; i- w) C- l7 f* K2 C7 w+ b
// 外设使能+ G. c: \! k2 K
PSCInit();
3 ]# a9 Y! d. ], f! o6 w
" B$ c7 U- f8 R! L; n ' @$ P1 K' m6 \1 X
// 管脚复用配置$ a! L. v/ W. _5 X
GPIOBankPinMuxSet();
, U7 g. E: \2 Y6 w for(;;); f5 Z" b8 }9 _2 `, p
{ L% h. B, G" {* x+ E
SET_SCLK();//时钟正常输出2 K- Y5 S' u, ~! B+ e$ a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: Z; r: H% j$ f8 \: |6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS30 J4 d' k! a3 t T% ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# {* z. M, F5 k& z x& `) T2 z7 K m0 l9 r: \. ?! E( n
delay(20);
# r* M8 P2 Z( ^+ z7 w2 C: l% o7 l CLR_SCLK();+ z; ~ p' x2 @; F1 D4 V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ e+ O7 m4 m( S( t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ P8 p @- L; X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" ^! C! l& \3 c4 G8 D4 h
delay(20);6 w, ^+ V' H8 {+ v0 ^- }
}
" v0 \& @$ C. g# S* |}- U( K& g1 |' V; v( C
|
|