|
|
使用下面的例子代码,不能使SIMO和CS为低电平:& q( Z8 ], j# H9 ?# D# {( j
void PSCInit(void)) T/ g) H1 ~5 c9 G9 l
{
9 H/ v/ u* {- G1 C PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) W) n6 s* }% U( ?
} T2 b, \. f8 K9 Y9 m
0 S- B3 o9 c& i% t! Y' s3 Jvoid GPIOBankPinMuxSet(void)
- l. p- E7 V6 a7 p; f8 Q{2 S m/ U, ^! Y# {
// DRDY ------------ GPIO6[14] -- 111
6 \2 c1 v3 S8 }; l' i // SPI1_CLK ------------ GPIO2[13] -- 46+ S/ ?: q3 u5 F% i7 h* h
// SPI1_SOMI------------ GPIO2[11] -- 446 E; o/ D; [% e( H
// SPI1_SIMO------------ GPIO2[10] -- 43
6 r+ K. m) Y' N% j3 W: I- u // SPI1_CS2 ------------ GPIO1[0] -- 17
" ~8 K. t* d- W1 d* G // SPI1_CS3 ------------ GPIO1[1] -- 18: v6 P t2 g" Z3 S. ~
% q( ~1 d' b1 s6 B2 B# H# ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 p% j, \4 C/ e2 `; Y1 T- N# I+ D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);) T h+ u% D' x' K! @! f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ F' m/ [) V! l5 l
/ \$ e" m+ @$ A/ S& h //DRDY( U" x5 N6 ^( D% e, e
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) b1 W; C; X1 e$ z; m& p/ R // CS2,CS3
5 ^2 O0 N5 [ |* f GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! |4 j8 \2 S- r GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 t9 M$ Y5 h7 L* Q$ S7 U2 G/ r //SIMO$ F3 i- b J, ^, K8 _( M) F: r
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 ~8 ^; M& d8 [( O2 O$ S I1 F //SOMI
3 g7 Q) k) Q: s$ r$ O' r) _ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 z8 D% i3 H2 @8 c# r" R4 ?' s3 d' { //CLK
$ R5 F3 \# O! G- P0 F3 G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# F1 R2 K# l7 Q7 [5 _# c5 a
1 Y+ Z) G2 U5 N // LDAC, ?( K9 H4 }" X) T, V7 W7 W, ^; B" ?
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# I0 ~# X3 Q: N6 W) h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 U9 p N/ h( b# J. x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, p1 V8 |; y! w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" A4 E; b& \/ |, y5 t5 s* k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 e: p3 T5 @7 a}! d3 V1 J U5 X: Z" ?. O$ q. \
9 K. z) N' S2 I' `' q0 ]
int main(void), q0 u' O3 W6 A: ]9 s, E
{7 m2 j5 ~' U1 s% Q4 C
// 外设使能7 u1 F* b/ s3 \) w. d
PSCInit();
9 j' ^3 X. L/ T/ U, Q# m+ P' Z: D$ ]8 Y$ K
# b0 b; p! w R8 [+ r
// 管脚复用配置: W# C" f; I: @4 D5 g% H
GPIOBankPinMuxSet();
3 a* l8 }& x1 h6 a" B for(;;)
8 P- s, ]( v0 h: J1 E; B! A* F$ V1 j {
+ v+ [: t4 p+ O3 a% T. X o SET_SCLK();//时钟正常输出
! z) Z( b- h, e4 O( _# D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 R3 o( l p$ |5 F, Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 g! i6 d' ?- A# e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, h9 O1 X; ?# Q6 _# s- h
2 j Z' L( y4 M; F2 f
delay(20);
`. G2 ^; w: v( {4 i; e CLR_SCLK();
6 \: ]0 q9 P7 ~, M H/ F/ i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ f, G4 ?0 J9 Z/ \) @/ W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 Y9 O" _+ r3 l& a* x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 L) H) E3 D3 K! {0 S
delay(20);
6 C- v3 k3 _, h1 m' S; X }! v6 b' X% l j6 C4 B* v/ J4 |$ N9 S1 |
}# _4 T! r( V1 ~5 i+ |, @
|
|