|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ i2 P! s1 Z/ Lvoid PSCInit(void)3 n! q- d/ [, F9 @$ p. q2 u
{' d0 b0 r6 ?/ Z: s
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# R9 x. Q0 { K" _1 T! B9 X
}. y) h; Y" R1 g5 `1 r- w
; N/ W" L/ R6 D7 Y9 O, q8 s
void GPIOBankPinMuxSet(void)# [ a, U" o; j: ]: B; u
{9 I% D: B) [2 ^% _
// DRDY ------------ GPIO6[14] -- 111
& e6 [6 Y. [! d // SPI1_CLK ------------ GPIO2[13] -- 46
5 i5 A5 w9 P, Z4 \/ h // SPI1_SOMI------------ GPIO2[11] -- 445 I7 d1 y$ v. @ l
// SPI1_SIMO------------ GPIO2[10] -- 431 L* o$ u; a/ e' V+ D0 M
// SPI1_CS2 ------------ GPIO1[0] -- 17
1 z3 } y' \7 B // SPI1_CS3 ------------ GPIO1[1] -- 18
0 A; u g, U k1 i
; S% m8 u% A9 Q: m0 W7 O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 Y. o& I8 Z+ _& C" B0 }8 q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; I( [" p" _9 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- a3 a; g* u, }! P9 D$ A: Z: _) G6 `3 e# W6 l
//DRDY* u3 _6 S! k# }. N3 I. O; g2 @' ]
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY. j& }; L F' Z. G% \
// CS2,CS38 F% l0 b' N D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 s0 _7 [4 S4 [9 ^0 x7 ], M$ ?* d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 @/ S9 b0 ~7 m( c" a% ~2 G1 U2 N) W
//SIMO# w0 @/ D ?0 a# R4 ~5 R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 `4 b" e" E1 Q" L( y/ n
//SOMI
" f" }# ?) F& [% K I$ N GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ T+ A. y2 w6 {0 s+ v
//CLK
# f; {5 ~, F' N) t/ X" ~9 }* n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" ?$ t$ U5 n6 u$ }: @
+ f9 N5 K1 P: B" M. q // LDAC% h0 R, f0 [5 K1 T& {
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. ~8 A! y% x4 j8 n. `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. K, L! l# C% U1 n7 m) `* l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# O* d' k2 J+ i' e5 m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 Q/ p2 X: u6 o0 z. |# o! b GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! b+ h4 V$ C4 @: c& i' X: J) |/ ^
}
4 N/ z8 d0 B% \/ W
7 \& h# @3 n* K+ F5 `: Iint main(void)* e9 G$ W! j* Y6 m6 B
{
( d" X$ Q2 E& B: E: X // 外设使能5 w! |: W+ f1 K8 S8 K+ B* j. r
PSCInit();
- X: u1 N- d% c
9 a2 b7 U) P4 V5 d9 @- y " j; N% `7 z6 g% S1 l; {
// 管脚复用配置
5 m% N8 y& v; E6 c GPIOBankPinMuxSet();
9 d6 ^$ V4 \( b% ` for(;;)
, `8 p$ ? h0 U: \ {
6 _$ A( ~" S/ Y/ n" Z: A SET_SCLK();//时钟正常输出
% w" Y3 E. V7 F$ B- [: f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ x1 x. M) V& g4 u& L" R! x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: H: |4 Z9 y+ q) R# P' t% \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ R/ v' l8 @& K7 F8 N! c. L5 O0 L
delay(20);
# I: R0 f/ H4 Z7 ~ CLR_SCLK();
! s$ i. v2 m- W7 {$ i1 G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) J. O5 _& u! H; J/ `( V; i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ w: I4 j1 }3 S; N n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 r1 g' u9 p5 S6 |6 ]2 y( p, b
delay(20);9 `8 ]% l8 u) r
}
2 _+ s; J4 r. c: t y: e2 _& P}
' H x! O4 \ f* s( ^ |
|