|
|
使用下面的例子代码,不能使SIMO和CS为低电平:. M5 H3 [: |9 M0 o8 D
void PSCInit(void)
5 J" D V9 R8 r{+ W1 D# I6 w2 o! w6 o8 Y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& ~5 |5 [) |* x7 j% \
}* w4 o0 o& C7 I$ @# Z
" ^8 M) N6 i1 ], o( A9 D
void GPIOBankPinMuxSet(void)- D/ g7 F" c, {" C) w
{$ W4 d0 S: H+ Z6 \3 F1 {7 m6 W
// DRDY ------------ GPIO6[14] -- 111
* S5 g. i3 `" r* O: { // SPI1_CLK ------------ GPIO2[13] -- 46
3 n- G# @' {% n. q' C // SPI1_SOMI------------ GPIO2[11] -- 446 f" m6 ?* `9 S2 p! ? |, _
// SPI1_SIMO------------ GPIO2[10] -- 43
& {% |7 X$ A4 X% n // SPI1_CS2 ------------ GPIO1[0] -- 17
, v: `: V; F" g7 w9 i7 m // SPI1_CS3 ------------ GPIO1[1] -- 18
; X2 Z0 \6 U# f
3 c _/ U% Y( J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 K1 y1 f+ e5 @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);, k9 w9 _1 ~. f0 m# c. B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# a( J' p3 p: d a/ i7 w% n
8 ~- u3 r. S4 f& i+ k# G" R3 n //DRDY
: ~9 d+ f; B2 v9 [- o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY1 ~9 M. _5 E8 N" e, K8 C+ \& u
// CS2,CS3
: O4 p. I4 z( v7 q) k2 v1 b GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. R, e2 W! ^& e
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 a9 [/ w; x5 k- S' Z- ^/ n+ \ //SIMO
0 N7 Q2 J: a) ]; H4 m" ? S P GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" P4 }8 i8 }& {6 W5 C" r/ O
//SOMI& o0 ~7 ^' I( ~1 V5 s, K- O) L+ C; u
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ a5 m3 E4 L" p6 Q+ D
//CLK
7 P/ K6 A1 @" [6 O+ Y GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
% V' K8 b; V. Y) v& \6 ^" l8 w. A. C$ m/ }- h* q8 T7 j
// LDAC' p/ ]* v3 z3 |5 J" I1 H* Z" M! g! J
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 L0 t, ]5 |3 Z! C/ h& y$ a, I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 a7 b. }, R- v# G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: z. b' ?. z) \- L+ P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( P! b% q8 t- ~2 n5 | GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ O5 v" A0 m* W- [& B}1 B6 _6 [8 P7 a$ o# F z
$ u: t7 {& l' o9 g
int main(void)
8 _# B1 j2 O* [{
$ }% C2 E& F4 t6 O9 o* Z // 外设使能
. x- v: h. ~5 U/ ?, S) b" W PSCInit();
4 Z9 l& a, r) `9 w- g0 a4 m2 Q( ]3 w* ~; ?
8 i3 q8 j) X! e4 U/ u, Q) S // 管脚复用配置
# g4 j% r7 i {; ]. B6 h2 @ GPIOBankPinMuxSet();
5 m# ]# K- m, J9 [ for(;;)
4 `/ x" B3 }9 s* B4 ` {
6 f8 X, G& ~0 q5 z& R/ \ SET_SCLK();//时钟正常输出
* J1 E3 H- P) j( O/ z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ P# O* @4 R" f/ U% w0 ~4 I GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 `' b: C7 E( Q6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 w; J; o/ A, R( t+ f8 r& r/ c5 S* A4 k- p( i3 R
delay(20);6 ]6 c z7 Q; ]! X: A: @ v
CLR_SCLK();
6 `1 g. K' `6 Q, T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 E4 a' T; u" Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 N1 \8 b* a5 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' j: g" A& q6 [# |" k) s delay(20);
J* k! x# r( e* @4 [2 x7 l; K2 Z }
( W+ Q. r2 E8 A# I j}
4 ?9 J; R7 y8 O4 l |
|