|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# x- ^. Q' \9 D: P6 P5 X
void PSCInit(void)- N2 O' P9 q/ s9 I, g
{
9 y9 K2 Z# X4 W8 H0 b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ M7 Q6 O3 C- P: [8 {+ |}6 u1 T5 e+ y# u. X( u8 ?2 |
) m3 R% R5 R& X; w
void GPIOBankPinMuxSet(void). r- v+ v# @8 v* y3 A
{
8 f9 K9 d8 G+ Y6 c7 L // DRDY ------------ GPIO6[14] -- 111
- L$ ]1 {/ j( p" s0 s; U1 ^5 j // SPI1_CLK ------------ GPIO2[13] -- 46
$ }, k/ B- F! F. a5 n' U5 `$ r // SPI1_SOMI------------ GPIO2[11] -- 444 x/ v' b3 {* q a$ Z$ Z+ h9 @
// SPI1_SIMO------------ GPIO2[10] -- 43
" d7 K0 x: A" ~: H h: _ // SPI1_CS2 ------------ GPIO1[0] -- 17. ]! k/ \% d8 Z( k: p
// SPI1_CS3 ------------ GPIO1[1] -- 18' d. @: U7 [! j$ x" c
9 c! f+ U- N- S7 b5 s/ o4 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: C6 D9 m0 M; C: U$ s* ]5 [6 l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);$ c4 s0 P# Q2 W
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ ]- }% A- L B9 c) v6 z. c
8 ^5 i" R8 [" Q) y, i$ u5 P //DRDY$ f% j+ ]. E5 S/ P. i) u
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 ]8 ?! P& u, J: D# }% }; l // CS2,CS3
) K* z* Z9 s- w/ l& T" @" y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 E* U: U W6 _& G+ F% g GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# L# T/ d% p, s0 ?
//SIMO4 G% L2 f) P- W) X. Z" h B
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. f( z9 c _. W1 H //SOMI1 O: G5 A* A2 h d k
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- p" c$ ?& R* p- D% w //CLK
2 y2 H1 ?, _4 I2 Z4 @ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 I3 y9 x0 t: I$ u: k; d M! ^
) S9 P' P& I, r! U8 y9 s // LDAC
: }5 d. U! Q! @0 p5 e8 X6 U GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 e, s$ |' e4 @' L* [5 e/ V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& T0 k" G/ h# K5 A- K5 W' l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, O( q1 t% f4 z9 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! P( z* a* l, k# |5 k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# W* w8 z: E* M7 W0 @
}: j9 Q; K) _% O2 b
+ z- ?5 h7 ^+ W) s, ~
int main(void)7 l. i' d- G0 T6 o, [( F
{
1 q' Q' o3 o# D0 E+ D // 外设使能: W; D/ B- a; A# y! }
PSCInit();8 G+ ~8 p* [6 x S$ r- z+ B
1 X' J0 n5 X u2 q4 H6 [
+ D: {/ l: L: ^5 [4 h // 管脚复用配置
! Z/ Y2 G- `' G' K; C GPIOBankPinMuxSet();
' r+ G% i4 m7 \; m) a, ~( p for(;;); W8 M* v0 S6 E& o/ L; T' E4 i
{
' e" e+ P1 h+ Y SET_SCLK();//时钟正常输出
& ?8 c( H+ l! M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' n' R3 Q& D- h3 D: M: l4 u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 U+ r: d- D- m& d+ N* `/ o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 M8 r( x/ o7 h: H- \$ v. \ w( ~& B' y5 i; R9 W& T
delay(20);7 `7 l& H/ q9 M2 A5 x. N; i
CLR_SCLK();# W3 y0 Z' p- f6 e# w+ Z4 p) ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 c1 s1 _! H3 f3 j7 ]2 g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 ~% `# j6 i; R3 N: T/ t" v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 }2 K5 V* v$ m# H6 U! K4 A delay(20);
( S! p- r. a+ O, T6 p5 c+ n }
) p0 p7 D- W6 a( E. n9 r P" h}: M/ {( \# Q/ O* |/ _8 O( @
|
|