|
使用下面的例子代码,不能使SIMO和CS为低电平: V5 ]0 J H* d* {# p& Q, S
void PSCInit(void). x8 o3 _' b' O
{/ l9 F# x& S" Z$ W- J
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- x" w$ d* n% G0 b}" o+ e1 K' I1 O- \
T7 |# f2 J) h
void GPIOBankPinMuxSet(void)
?# H& I& e2 i( ^; }{% t2 W9 H6 U; H5 [# B ]* Q
// DRDY ------------ GPIO6[14] -- 111
1 S9 m7 R' C0 v, N3 t4 s a // SPI1_CLK ------------ GPIO2[13] -- 46
) u. u8 z7 I1 ~ // SPI1_SOMI------------ GPIO2[11] -- 44
7 ?1 W4 ~; H- x8 y0 ~ // SPI1_SIMO------------ GPIO2[10] -- 43
/ a$ X3 H5 w$ ?+ ~! P. ^ // SPI1_CS2 ------------ GPIO1[0] -- 172 B% |- Q$ l/ X6 C- E; o0 l( _
// SPI1_CS3 ------------ GPIO1[1] -- 189 F* ]/ p1 A: _( i3 I
& ~! h1 b, x6 m3 {/ o& | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ u" }3 o. X! {' |, ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& ~" j! R0 T/ _$ B+ I/ d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( ]8 l e6 {$ o! F
6 H6 d. F8 L% |0 b- q
//DRDY
9 j& ]+ a' W& X/ _/ c% _7 ] GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 B+ b4 Z0 `* A9 n4 q
// CS2,CS3
{- a6 i+ G; ?. K GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( M7 y A7 g$ F m u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 ^0 |9 g# U i: Y0 |
//SIMO) |/ U( f1 H1 W" B
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 \* S; z9 F+ g' D. w6 D- i //SOMI
7 I8 A* Z% x3 T GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! e0 l3 K9 S0 P. e //CLK
5 [; Q7 q$ s) l# w; P5 p) ?; l GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
Z! p7 M N! n
$ m9 N+ z2 } ^; Z( K) `9 }9 e) {( F // LDAC
- A1 S9 p. o& G GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' ?; X( }9 H' g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: a/ ? w& E5 {
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' r& V; L' q* Q4 B& G* M) N$ x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3( H( W( o0 _- d- ~0 J) O
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ G N5 V+ B0 L, ?! |( Q8 ]}
1 R/ `: q- |8 q5 H$ ]# Z1 V
: H; M! a" x! K$ V. ^% B0 i2 Xint main(void)
9 p* j; @7 n8 I# ]5 m{; o' A" W& \; ?; ~; z
// 外设使能
+ T1 M: Y1 f1 B, i PSCInit();& b& c7 K' e; f+ V8 D6 g' W
( @5 n5 N" W9 P4 H7 V" k
U$ k! r: Y; C8 A- D
// 管脚复用配置
6 ~ M, _2 ]: J4 R% H, r7 ] GPIOBankPinMuxSet();
" l* p' Q4 ~8 @& H* e, Q for(;;)' D% ~' v/ @! e% V: ^7 q
{4 `5 E3 V! ?0 N' U, ~: k& T
SET_SCLK();//时钟正常输出
) Z. Y2 `4 L) _, H- s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 n4 u% `& |% C: K. _0 n- T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ r4 G8 }" X0 q/ N7 E0 Z2 R8 n2 ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 W- h# r) b. j$ a+ W$ s0 R
" M' B* {' t1 r+ o5 Z/ z delay(20);9 @& `5 ?; V8 k! ~7 Z
CLR_SCLK();' q# ]* p6 }. N* d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" Y9 x( l% s& U7 M' u2 C' H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ `7 M7 a! j2 e3 }7 F5 R/ ]0 g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 R) ]+ J6 ]' N( N. k
delay(20);3 N" w$ g1 X. t7 `
}' P9 a" t5 x2 k9 M4 O) f' r
}
; F# @5 I3 @2 g3 @) @ |
|