|
|
使用下面的例子代码,不能使SIMO和CS为低电平: I2 u5 [# Q7 p3 M6 l
void PSCInit(void)
' L4 p& @0 t7 z9 I$ k: K+ C{. F: y7 J+ _+ y; ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. {$ V& d8 n6 Q) `; m7 Z# \: z5 i
}2 x* l2 v" D* t% g4 v5 I2 g
: B' T( i" d) }% |) N9 o6 Z
void GPIOBankPinMuxSet(void)
3 s8 z6 ~" ]1 A' \{2 N% h) I' v+ j# n2 I
// DRDY ------------ GPIO6[14] -- 111. \2 i/ I; c* d, b6 n* b2 {
// SPI1_CLK ------------ GPIO2[13] -- 46
5 o" t( {1 z2 b // SPI1_SOMI------------ GPIO2[11] -- 44
: W1 S; x" u- |4 Y7 H7 s // SPI1_SIMO------------ GPIO2[10] -- 43# g' Q( d6 d; Q* ]+ O& T
// SPI1_CS2 ------------ GPIO1[0] -- 17. v! C9 d, G$ z4 F/ I: Q m
// SPI1_CS3 ------------ GPIO1[1] -- 18
, `4 |0 Z& R* q5 X2 W$ b
: u# N8 q- ?9 x# X- G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, E6 O' l1 n- |1 a) D/ w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" ~3 \" M3 G' k d- h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 Z' v1 t8 x. D6 E2 c, r
, S' Y+ f9 D) v //DRDY: R( ~1 X% Y5 h
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ T6 U7 j7 c$ I5 l' k& n. I
// CS2,CS3/ w6 N& k v0 R$ k* `7 L
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& I) F4 B' m3 _& K9 G" ?4 R H
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 K- |$ M+ W& z" F: x$ { //SIMO
3 v D8 F* q; i( R1 w k GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO) x' Z; a0 d+ D+ T- c
//SOMI8 g% ]. K! V9 T+ Q# \% _- b
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! R9 s, w8 X6 \1 P+ y //CLK* O# b# g9 ^( a# b3 j* |! u/ l1 E$ \
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
9 Q1 Z c$ U& z! ~3 }" K/ c
8 C6 V# _. h3 w // LDAC
8 I0 U# t* q w$ o" a8 z% l GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ j: f1 H7 r# x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 a+ M6 K! q9 S% Y! c& M* l, v' F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
^. V+ z0 ^) x3 a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 _& e" N- \8 l. R5 v7 S: k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! H. W% x/ I. A}
6 D0 d2 F5 K+ B$ b9 z5 n6 S
2 j# l. G) d. P1 D' d' Uint main(void)6 g2 H+ G) e I, ~; _" ]% i4 b
{: k6 O! j- M. h
// 外设使能; S2 v0 X; @5 M$ @+ `- E) _
PSCInit();
; O8 ]2 u6 h/ _0 b9 T
8 g$ b& D8 O* u% G! A( G$ n# }
! H. R, f$ C7 z9 ` // 管脚复用配置
: z) a% O6 g/ d2 C/ F GPIOBankPinMuxSet();
2 ?# f% o* T- w) m4 N for(;;): _! j7 j: a: n0 b7 e2 Q
{
$ o$ O1 s: X4 d9 q9 J( s$ e' T SET_SCLK();//时钟正常输出
# y1 |9 w! V* o: d8 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. m7 x$ Z/ w' U7 m; O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 j7 Y, w! @$ D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN* H4 H/ x% A" Y/ y4 t! H% D
3 Y# p) X3 g7 c' G delay(20);
+ x% ~8 j0 g3 ` D: P CLR_SCLK();' J8 i; w: |7 e9 a. \7 n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
& v. h: `: M K* t' y9 E; i X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 Y2 e; m3 f8 L) ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. c" C! l7 w! [! D% ?+ y; \
delay(20);% V/ I- \2 j0 ^0 W/ y
}2 q$ {) N) U. }3 C8 S8 V# q
}
( I/ t' [3 U9 D) @& z: I/ D |
|