|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% V5 ^3 _7 H# y8 R' dvoid PSCInit(void)
/ f% X" B! N) Z{
5 u, z" N0 L8 d: O$ d% y5 G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 D2 ^- e }% V }. u/ `7 O6 d! o8 ]
}
$ Q6 W- u0 F2 f. R8 t7 x3 m: J9 D! f: s' U4 y; N! k2 M" `+ ^8 z V
void GPIOBankPinMuxSet(void)
- z' A' D' f! h+ z; U{/ Z2 A# g1 ]( z$ \$ O& ]
// DRDY ------------ GPIO6[14] -- 111
0 ^5 a$ F( R$ i7 {% V // SPI1_CLK ------------ GPIO2[13] -- 46
# F$ N5 \* m* p // SPI1_SOMI------------ GPIO2[11] -- 44
- k! I. ?& d0 U2 Q& H // SPI1_SIMO------------ GPIO2[10] -- 43& z+ k# s- L& G/ f4 z
// SPI1_CS2 ------------ GPIO1[0] -- 17
5 E; K) C/ n$ h9 R // SPI1_CS3 ------------ GPIO1[1] -- 18
' W2 t- Q) p6 ~0 [: j; m0 a1 m- ]+ E* V+ x% a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 f( p4 `6 t! u0 {! J9 H2 y( i) @8 s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);: `) t" C% I/ Z% K- a( v, a( {# _' J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) a' z# {, I5 B
4 w# R/ w9 o; w* C1 p/ i- l
//DRDY2 p9 R4 I. w( c1 f7 a! }
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
: M. f+ q: Q; U9 _& T2 D4 s // CS2,CS3
, k2 _& H4 C$ U! D d! i0 p GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% d( z* s% X8 |" h: i0 |& \ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ {; u3 l; |& L. \2 x7 Y7 [/ \ A6 |
//SIMO# Q8 ~' L, j: J5 f
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
`) m- i) @1 H6 Y: c //SOMI
; \) x( V- @- v2 \! \ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 x" @4 E6 Y+ O
//CLK6 v# v+ K! q X; k$ q! `
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ Z9 D4 r% u. x5 E0 k& }( w9 l' z, E$ u* q% `* Z( T' k" O0 S
// LDAC
) c" N; {( J! k C# q; F! T GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
7 Y b. v7 P- l* r8 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# @( A0 U0 ]7 D
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" _* y$ [, t" ?( r" o5 C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) s) U' T. |4 \! Y, k+ y5 _$ [
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY% J0 ?5 A4 k' i4 C% t/ I. E# J
}) J8 `, T4 C+ O" U3 ?+ g% X! Y+ o
. O M! R+ W/ E5 S" G5 P* ]int main(void)
% i8 ^. h8 r" M4 _6 ~{
4 Z% |1 Y( s ] k! p1 c' r+ C: b4 l // 外设使能0 a9 r* v( A. U8 h; G, j; t
PSCInit();
+ n0 R7 k- \4 e# { v: H# v" y
) J* }+ p7 j* L" j i" [ ' H4 e& E4 a; \: H
// 管脚复用配置" ` k8 O1 X: ^" J8 n* ~5 [9 E
GPIOBankPinMuxSet();
& {: I7 N. T; }7 a; K" p }; ~ j for(;;)
5 c8 V1 b# c5 y8 H {- E: t- ]/ D7 w1 E ~1 t
SET_SCLK();//时钟正常输出
0 T8 D, s7 L: I8 X1 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 A; b7 {% H& G: _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 G7 j G' A0 B* y, \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
) T% V5 Q& v7 U; q f6 g" H+ `
" p7 k$ Q8 d$ \0 J/ d) A delay(20);" N: i$ A$ Y8 I$ q
CLR_SCLK();
. Q# G; P( {# `7 d% W u9 c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. L/ s2 G$ a/ a! j2 { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
l6 T, y- p+ Z, h GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 W4 |6 A4 K+ v; m delay(20); F& n1 }8 r5 R7 |4 P _1 C' I. b6 D
}- T: W& s0 f( X/ X
}( B- d: K1 Y) ^, a% V
|
|