|
使用下面的例子代码,不能使SIMO和CS为低电平:
- G9 K' S, f- y% h) x Pvoid PSCInit(void)
$ P. N3 x0 `& y' b{
. x; E% s1 H2 c& ^ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
, W* S; \+ v0 I& |}5 ~0 K$ b i7 i; K( ^
1 z0 w2 @' T' G9 k! _; A p0 V8 bvoid GPIOBankPinMuxSet(void)4 O, q& ~/ k# J2 A3 }7 S
{
0 M& \1 y" X: c* G/ B- F // DRDY ------------ GPIO6[14] -- 111" ~) W3 g+ U8 m) g7 R/ E
// SPI1_CLK ------------ GPIO2[13] -- 46# ^9 s# a3 D2 p: {$ [4 Q
// SPI1_SOMI------------ GPIO2[11] -- 44
, s4 _8 b. ^. n6 a" ^) b8 O // SPI1_SIMO------------ GPIO2[10] -- 43% ]- @& I6 U% R" q+ ^+ y! O
// SPI1_CS2 ------------ GPIO1[0] -- 173 U0 x1 w' I* E* S- V- N8 L
// SPI1_CS3 ------------ GPIO1[1] -- 18
/ Y# R3 Z: R* u3 f4 z5 ]
6 s% o. W, f, w" K8 T. f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) e/ d! N3 f8 n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 j! x" x" ^3 _) v8 d- b+ j' V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) |% ~! k% l* ]1 v0 S) u3 h
5 V7 N: a3 H! r- t- z
//DRDY
- x5 L. j1 w9 A GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
% ?$ Q7 k. Y0 D2 Y; F // CS2,CS3
! B' N4 w6 @0 P* }& }2 q1 l GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 V( J+ j- p5 M0 {+ G, s* x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
?5 F& c# S# ~0 L9 J0 K' N+ b //SIMO
% [ Z& l$ P+ V. ], y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 J; g6 @2 y! o7 u. P //SOMI$ N9 n& C6 ?9 ^( |6 D6 l4 @; c: y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 ^3 Q( L# z+ i% k //CLK& d, c$ {* s& g" F' b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; E) y( d- n O; M) {: Y
F; [5 ~' P6 S% m, s4 G8 C% o1 x. T // LDAC0 r9 B5 W3 I4 ], f3 O" _
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 Y G' N" J) i% z" J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 S3 }' A/ L. Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 C. O6 N7 K6 J, z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS39 w/ U& D% g D
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ R( Z+ C6 Z- Q* | H8 Q: G} O4 T- z) X# \" `
5 k8 u2 r. k8 p" @$ B% g* _" Aint main(void)7 O+ z8 Z: K, R4 C7 I, V
{
: s2 K( {5 |' L) Y& O // 外设使能( q8 m' \& w B! I5 m6 P
PSCInit();* F; N6 C' l, o2 p# [
& Y3 ?9 @; S) z0 y/ `( R ~' ]
5 K, ~' ^2 P* w- a5 r: G // 管脚复用配置
2 _5 ^2 `" L9 r- E0 r2 K$ g* V GPIOBankPinMuxSet();1 M; E& x* {7 Q) i! k7 Y7 H& g" I' S
for(;;)+ N7 |, h* ` }) U/ m; y# [8 f
{; h# Q1 a, A) p& C0 x0 T( X6 J
SET_SCLK();//时钟正常输出
5 }/ h8 H! {: W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; v9 p$ a& a. ?. c: b1 @7 |7 ]1 ]$ h: @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& P8 ~6 H: @4 @6 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 T# E: g$ ^: g1 x* v K& Q' [
6 q0 ?$ N+ F: G9 C; {/ _. | s& j
delay(20);$ e5 |) b" T! G
CLR_SCLK();
& X2 F$ A- A/ { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' O& A7 n2 L1 c1 Y- Z( L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 H# C0 _7 {% v, y: O8 Z3 c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: R& `2 D" A. [) w# L0 N delay(20);7 V% U g" v3 m( Q! L
}0 F& t; ]+ t& t. f
}
0 f: o( I) W1 z5 a8 H( ?8 {. h4 D |
|