|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
6 ]9 U# j) L. Z& h; uvoid PSCInit(void)
7 r$ |) {7 T% K: s{& t$ m7 c) L5 a! L9 v3 t
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; s% D& _- D8 B' ^' M}% H9 U! @, P' r- L& v" T
; ?* g" C4 Y. G7 A# Q: Q* j
void GPIOBankPinMuxSet(void)
: r' j" T) Q ]1 ~6 b{4 n, L/ b) S" Q! |( }
// DRDY ------------ GPIO6[14] -- 111& n, }4 Q. H+ Q: P1 ]
// SPI1_CLK ------------ GPIO2[13] -- 46
* M4 v9 Y. H# x+ r3 |% [ // SPI1_SOMI------------ GPIO2[11] -- 44
" @5 Y9 H# A4 S- o+ H1 r // SPI1_SIMO------------ GPIO2[10] -- 43
/ V" \/ j" g, z" h: j // SPI1_CS2 ------------ GPIO1[0] -- 17# h8 k& T; T3 S6 Z- r
// SPI1_CS3 ------------ GPIO1[1] -- 18+ s. b2 X/ m% r9 G
$ j1 K3 @5 C/ i% Z4 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: B x' Y2 z/ X% R* W" c# i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 n8 G8 h R& V7 K/ Q* V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 D& A* ^# [% @* U. F) H
4 H: U# [( M0 A/ x //DRDY; c, g$ p4 r/ R7 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ E8 ^) g4 x% L! z P4 [( T
// CS2,CS3
2 }6 h0 G+ w/ {! p" f+ d! [ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: a6 |2 J9 f: I# }6 T
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# z( l/ F6 g. S8 E& v* ?0 h9 E
//SIMO
% R# k' y7 E( y3 W: d" I: T GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO5 l- o- j- G$ K; ^
//SOMI' Z" U3 W* _( g6 O
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 _9 V& a f7 {' s% v& f //CLK- J! l5 w- R' k3 L- U7 J3 |( Z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 o6 Z7 x( C) B% m8 K& _+ V6 f# e6 f! w
// LDAC1 q0 e b0 w% t# {) t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: O- L) }, O% |* o0 X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# T- _; n. q: X! I4 c2 |/ Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 J0 Q( z$ p5 b) w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 k0 J* I5 q1 G* N/ T GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ d4 Z" {; Z$ d. Q3 V' r1 L; U0 i) a
}/ h# M* p2 u x' Z3 p' A P3 ~1 s
) O5 l7 o7 ~' y. m) x1 H& e
int main(void); Y' _0 h/ A' @+ T
{
0 }5 P4 L5 k# d% Y, e, K# N" q // 外设使能) p* u- X/ {" [* s% G
PSCInit();
+ I% g$ b w4 K& @' O; ~
6 R' }3 F3 K- A0 g/ x& {# w* e ; m- S' D4 l" ]' q; i' t6 B/ Q
// 管脚复用配置& R* D8 U! U, U7 X
GPIOBankPinMuxSet();8 J) i# l% R1 A/ X! `7 a. _
for(;;)) _7 D( [- Q2 A# o1 g+ O
{" A% w! c3 J% ]2 p
SET_SCLK();//时钟正常输出
) Q8 N) C4 X7 h; ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ |3 }' P' c& H4 ?! Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' X! y2 ~, o. t; n2 q0 }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& E8 c& K% w3 o% l7 b
0 E& O0 K! O; ^% ]0 K% F5 g delay(20);, V; ?* n7 g" A: T& j
CLR_SCLK();/ ^# r4 b0 G( L% K( q5 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# t3 y. a$ h" T2 v* w4 J# M/ d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS32 G. g2 Z8 w' {% o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 c/ d) P1 Y+ \3 d, a& r; q
delay(20);- Q" g* i% C( s; M0 l1 q: Q7 t& d
}6 ?7 ]7 Y6 o$ Z6 ~. C$ k
}
1 E( J3 {/ o5 W1 x6 d) R |
|