|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: D% `+ Q1 x/ J! A3 Y; R4 j% Bvoid PSCInit(void)
0 x" `6 N% A* k{9 w! i( K* f S9 {
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# Q2 i W6 V0 W+ o& V
}
" k* V" D, S; ]6 T
% D* F( m$ E2 W8 Q. H+ `/ xvoid GPIOBankPinMuxSet(void)
# I6 p* Y1 F! p" j2 K) ^{+ P! P# ]. C) z6 o+ g2 l
// DRDY ------------ GPIO6[14] -- 111( [* F \1 g% b% p
// SPI1_CLK ------------ GPIO2[13] -- 460 K# Q6 w8 M5 x
// SPI1_SOMI------------ GPIO2[11] -- 444 y/ a; S# V, U+ h1 `# n
// SPI1_SIMO------------ GPIO2[10] -- 43/ \$ [4 k @/ a' T' h) e
// SPI1_CS2 ------------ GPIO1[0] -- 17% K, [. h' T" V5 A4 H$ Y& ]
// SPI1_CS3 ------------ GPIO1[1] -- 18# w" E0 l% [2 ?* q4 e& L* o* v
" C& V* V i- n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 O3 t5 c+ w1 E! X& g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. A+ d' b" }6 C9 H0 |6 t- j! q8 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' b% G1 C& X* H' g
4 V4 j+ V% j. h; C& O* k //DRDY
# T6 P* r7 C9 t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 c. y! q8 o& m: T' z0 N* w0 ~ // CS2,CS32 `( a2 P5 n$ s& W! r7 X8 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ J: a# M4 j H, i6 P0 b GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' y& O5 j0 P: c; }+ p0 ~ o. w; W
//SIMO: f- _7 z7 E" ~( J7 [
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 [7 v0 J% `1 C- `1 Z
//SOMI% N$ Z. z* p6 S9 V4 }& _
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: B7 ^, D' g* Y K+ @; \ //CLK0 L# S/ ]( B$ j1 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! o3 J$ J' z+ f, k; \ F( B& \
0 {9 I8 L) ]4 z5 {; F1 ` // LDAC
! h; Q9 G0 ?. [9 L" \ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' C- `5 E" d% i) O# P) Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 G9 q1 Z, w& d, m* m$ R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 l/ V3 g7 ?) w8 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. `1 X9 L$ z; X. `" [" p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& ?( t: x; R* i; q8 a b6 C}1 {5 Q" y/ L; i7 m5 S7 a$ E
' Z1 _" H1 O& D) X; D7 b
int main(void)
+ _: I0 x" e5 b2 a. [# S{/ A3 W7 T& _/ ^& r! |
// 外设使能
* z' L$ I' M& D ^) [, E- K4 W PSCInit();
. T3 b0 s5 M5 X7 b0 a7 e6 J9 t8 o+ v
D% b) Q0 C7 h E! E D( ` // 管脚复用配置
- x7 x9 Z" @; Q/ J* K% {. H E8 I) W F5 y GPIOBankPinMuxSet();) {% o( A% N: i, i- P G3 m
for(;;)
" D* s% f* G( |: k4 z* X {
1 s$ X1 x4 q* M* L- s- x SET_SCLK();//时钟正常输出
4 Y/ {3 J! N. b* T# ]5 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 J- ~: r4 M& V3 j) g; {- E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ u+ q, x" J1 t8 b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 L9 n2 X) ^2 t% |3 v
* a6 R' s3 x( a3 R' H delay(20);$ w5 o+ l% {2 ~) e9 N/ [
CLR_SCLK();
# \. ?+ @# L! G. K9 b0 V! J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 Q' p5 T! q0 l# R% @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS37 F; M7 x, F+ v8 W% @ A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! `+ d6 [7 X$ n4 }3 i0 Y
delay(20);
0 o6 R& R: g4 v; @( W }
3 v# A+ h7 C6 L}5 u" I$ p/ ?$ q7 F! w4 m/ }
|
|