|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 d4 S& T" `: u8 Z
void PSCInit(void)1 H& p& m5 e+ D- P: F$ p
{
* I4 a- L4 Q! {/ m' O M PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ v B% i& M$ ~' v- w k- M
}2 x2 _# }( ]9 d& B3 X$ \
3 c" P8 N* N" _9 I2 m# Ivoid GPIOBankPinMuxSet(void)
3 W9 [- x0 R/ ]. U0 W+ Y{
( }' l% l* [( h/ R // DRDY ------------ GPIO6[14] -- 111: Y4 E1 ~7 h4 e! f" \
// SPI1_CLK ------------ GPIO2[13] -- 46" X6 ^5 T: L+ g. d5 P7 h! t
// SPI1_SOMI------------ GPIO2[11] -- 44
8 K* P e5 _: U4 c @ // SPI1_SIMO------------ GPIO2[10] -- 438 i0 e! a. V- G- r
// SPI1_CS2 ------------ GPIO1[0] -- 17
5 g1 i2 ~, P" ]$ z9 s+ I // SPI1_CS3 ------------ GPIO1[1] -- 18: X+ Z) _' m) Q, q5 M& ^, @: u- q
0 H9 W8 x; p- t, b" z# } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# g3 o- T& \1 M4 u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; n' T$ s+ I/ s/ i- b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( m2 w% t# Y8 l, _& A
" x. `; q2 e( f4 }& P
//DRDY; `* J0 e# i+ m5 J# C
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
: a& |. X g" w, c$ X/ c1 z6 P' Y // CS2,CS3! @# W+ z7 S8 _- n
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2. b9 x$ y; d+ G$ Y+ f4 h8 }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" _3 D. q* R3 H
//SIMO5 p) C' E4 }% c: u
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
" _* Z/ R) E1 N$ h( [; D7 A0 I //SOMI
9 W0 w$ {! c2 D1 w5 s1 r0 l% u GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI# w3 w ]2 g: @
//CLK5 M0 l: E5 ~# n& F
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" G+ G5 N1 @/ l0 S+ {0 }2 a4 F& p' b
// LDAC7 ]7 ~1 [0 Q% f
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# x) n" a, A* O/ [2 X0 Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ |6 }# V! M0 Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 } l# _, E! t3 W1 K" y# ~: }, `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( k4 d0 K0 W, o6 Q! G+ Z+ _& T7 d GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY0 D8 C- E0 `6 T2 V7 Y4 @
}# ]6 c& M/ Q3 G. X- h. [; C. Q
9 p$ T1 }5 n5 v) a% z3 @int main(void). W+ r3 v: A. O
{% i: c" F; I9 U4 U% U8 p
// 外设使能: p: E8 d0 `2 B
PSCInit();/ h( h& _6 n) X
! J7 C( {5 S+ p4 S( J
+ A0 `; t2 X2 G1 }
// 管脚复用配置3 K. ?1 n' V. r) h; o
GPIOBankPinMuxSet();# q2 ^9 N, W' u$ x: ^# ]1 I; v! L p
for(;;)$ r6 A# |$ E' m
{" p) s, }. E! X C- H4 j8 {; P
SET_SCLK();//时钟正常输出. T3 [! P; n9 X _( C
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ \. s3 D# O% c, F1 O% K8 k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% ]; }8 F- u6 ~+ ^+ m) J, I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 D) d1 k8 Y2 f. n v0 q, E8 t6 p6 ^7 [) W+ A3 v' p* [
delay(20);
* g; G5 X% N+ p$ F& N+ u CLR_SCLK();) ?: V+ ^: l8 Y4 L+ T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( v/ M7 z3 F2 W8 {. a7 y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 q) n* |% ?0 R7 E; Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: b, A6 |; W2 `, S delay(20);: i) i6 v* x( w( L7 y
}
i$ m! `, R( E& q8 O; Y! |}
7 }; C, O$ [1 r7 L |
|