|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
8 n( I! |: {% a7 V3 O! G$ J1 g. qvoid PSCInit(void)9 H }! }6 ]) B3 ?/ U6 d
{
6 Q9 v F/ V* r" M0 e) |. G, T/ a PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% |" j1 z/ E2 }* ^' ?
}6 R- L. H1 k) d4 o, _# q
; S, R* c% o. x9 {% Lvoid GPIOBankPinMuxSet(void)" H7 A( L6 o/ r1 i* r. L2 m
{
; n% |% `. b5 J7 g) {! |4 u6 |% c5 v // DRDY ------------ GPIO6[14] -- 111! Z& y2 }; n+ Q9 l
// SPI1_CLK ------------ GPIO2[13] -- 468 C5 m0 F3 U9 b E. @6 }$ n
// SPI1_SOMI------------ GPIO2[11] -- 44
w2 l& X- `6 k! w0 x0 g5 \ ] // SPI1_SIMO------------ GPIO2[10] -- 43* L8 V& {* l P( K8 F, e! d4 W
// SPI1_CS2 ------------ GPIO1[0] -- 17 e& Y- s! [; x4 z' m' o: k; l8 g
// SPI1_CS3 ------------ GPIO1[1] -- 18
( L# O0 R; d6 F* y# g& s) d
1 |5 V& r8 D+ s$ T3 k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& i& r- j t* l3 F5 h( m1 P3 t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
. ?/ G+ P9 n. X4 g; R' ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' K$ k: y7 C1 k6 ] Z
9 }# r- h) _3 e$ m% f6 | //DRDY8 `6 f$ w, V( P4 N7 t8 x9 B
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ u+ j! j+ S, G+ @) A
// CS2,CS3
) {% J4 q6 N6 D; k+ Y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 P# v: I- B4 ^: q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 C# j+ C# l2 X. m! f8 v
//SIMO
% v1 b. I0 Q0 F& a. _ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 w: ?, ~- d! S
//SOMI6 Z: {! h* h6 I$ b4 }+ T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' a4 J' j. N) `
//CLK
% {1 }# p* X. G8 c* b GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! N7 T) p5 N, q" i- f9 h
% v% k" F+ O) m1 F+ p2 B- m // LDAC
) e' V, P, r+ O7 @9 C9 x+ ?& K GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 Z, K6 R' P3 Z' ], H6 t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 z! _/ J0 N2 E0 L0 \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% \/ y; M: r! @, A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* V; t( v/ [7 k
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ j$ T3 `1 |/ P' m0 N5 @}
# Z7 u9 O9 |- T% h r' X
0 f) n9 x' ^ `8 bint main(void)
3 f. O+ ]' a/ w" ?* f `{4 s8 I8 d: x% h& C9 T+ ~6 L
// 外设使能, w+ H' J0 }& n; E
PSCInit();, m2 D( R9 I2 u# c
5 r5 H. C, W8 Y4 Y2 q1 P% \7 H( i
: v) W3 P6 d7 t& @ // 管脚复用配置& I4 \% U; b5 d+ a( R- \
GPIOBankPinMuxSet();
3 P5 r# _7 A4 s' E+ g2 M/ c0 F for(;;); d, l) P/ G& H" [6 a
{
$ s. _& Y/ W0 G9 z/ X( J+ N SET_SCLK();//时钟正常输出
/ u' g. j" A6 T2 v3 [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 K' c$ l4 S" Z+ c+ G2 }: M- E5 m3 E8 H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 H; i2 M+ V! i1 [! M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
, Z; q$ _6 w6 ~6 C) d7 e0 ^6 T" J6 b2 D
delay(20);
7 ~5 x0 m- ?1 [ CLR_SCLK();0 K+ y! c$ `0 Y; R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ }& ^2 O1 U$ J' O6 m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 I& }, m z2 o0 E7 F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( w- z2 x2 u' R+ C' q
delay(20);
/ n. W5 Q) t$ z: t }( P# `$ A% [+ v! g' g
}7 I3 W+ T+ E& b/ y0 S9 T
|
|