|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 ~* r3 q" g+ S/ T4 |- m0 cvoid PSCInit(void); y4 N. _5 r$ R {- L
{: d G5 B* |: y1 Y9 }/ h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: c V% b3 `& h9 o$ v}
+ P6 |) G7 L7 l M! G/ ?( b. v8 j+ H3 D( J g4 Q, Q: }
void GPIOBankPinMuxSet(void)
8 e* t+ S# |/ a" }2 i{) G( ~% N% D4 ?, P/ R
// DRDY ------------ GPIO6[14] -- 111
$ {; z' F2 r' v9 e1 R) V' k // SPI1_CLK ------------ GPIO2[13] -- 46
- b! r% y; W' b4 c0 b: |0 A. y // SPI1_SOMI------------ GPIO2[11] -- 44/ a( e* a' r- Y" r1 K
// SPI1_SIMO------------ GPIO2[10] -- 43
8 c/ L9 c w: Q/ z& F // SPI1_CS2 ------------ GPIO1[0] -- 17* @( W% t4 l/ j2 `9 V1 [
// SPI1_CS3 ------------ GPIO1[1] -- 182 G7 L$ _: E a. O7 Y% w
# I' k" f$ J& M) o& x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 Z3 a7 K/ \5 H3 M" v$ T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 Y0 O+ F( g& E, z& {# I# o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( S% h5 p' n0 S* r' N% t! z' P3 G6 H/ O' M) k1 U1 ]
//DRDY/ `9 i) _/ B1 a, _, i1 i4 L. ?
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" Z: C, B" l5 @1 M+ j
// CS2,CS3% p: \; @8 z3 @- I$ p) j
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, j& a" f( `$ Z/ _9 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 O" X1 H3 Q) o
//SIMO
) ]0 ^ A4 c: }" Z( l% `9 B GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 s; U9 n* k" m0 v w, ]- v
//SOMI
' U8 S& { K' F8 K- v$ m GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! R5 U2 t' _( n% ?3 ~5 G: [3 T
//CLK$ L# `( B C" X/ G
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 S _2 c4 E" R/ J; Y9 T
+ e% v) r* _9 X1 F/ G4 c$ h# H // LDAC1 E, }6 S+ Y9 G# X6 K. r: R# Y& L
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' O- ^) k3 i0 D' R; I, p7 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" l- P( |& W3 J! b. _8 h- a# h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" x$ B o, q+ t" ]( c" R8 ]7 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 W$ [- b; j( E9 _3 c" S) u
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. I& F. S- ^* l4 t/ j
}
) |# V! P) e+ u
# u A* L+ j, m( ]0 q& Yint main(void), b5 B9 l2 Z0 S3 C% G* L
{
1 r- V. D- E1 ]0 c0 r // 外设使能1 M0 a5 _8 ]& X- R3 l
PSCInit();
8 v9 l. S' h6 ]- ~+ L0 n' B
8 G0 t' n0 K7 r8 ]6 k
4 ^3 W+ C! p/ t( q* V8 y1 l // 管脚复用配置
# {8 Q" |/ E" y% m GPIOBankPinMuxSet();
# z5 k. V2 f9 T/ U: J/ y4 A! D for(;;)
4 @/ r( E# N7 x {* x+ t' N& Y9 V! Q! n+ @8 T
SET_SCLK();//时钟正常输出
$ i- z% ]& w8 ^% X n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& R8 E s& b+ G2 D' B! M" B6 [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 K3 h% b% D* N) W- s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 w; L7 T) T; j* a6 @/ w2 s9 F( e: ?8 \0 g/ N6 [1 K% `
delay(20);
: E5 W+ |% n+ l2 Z7 m; }& Q1 S CLR_SCLK();1 h% Y! i9 |( C- S. n: y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ A0 ]- B2 r7 ^1 [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- p* a- k2 ~2 k6 \7 r" I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 F+ H- L8 j5 v3 S delay(20);
1 _% Z# X0 I- k }
t+ X/ l% U4 o, \& a; X}: w7 I! C$ s, h2 c' m. p* i
|
|