|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ S% Z$ `; t2 o! e$ N% a3 L
void PSCInit(void)* \0 n4 U0 O/ R& H$ e6 k) f8 j
{! |/ f* V7 @) ~- e! S7 k
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 K9 Z( C% I& w) E
}
8 M% I. A! {1 ?8 q1 _5 x( L) x5 K
, b3 w. n& `3 T5 Uvoid GPIOBankPinMuxSet(void)) U" E* M- H3 d+ _
{; X8 N5 d4 T' |6 A$ M* I+ k+ ^9 D" Y6 v3 p
// DRDY ------------ GPIO6[14] -- 111
* \; g2 S! h' `3 c* h // SPI1_CLK ------------ GPIO2[13] -- 46- _7 k# P. _+ q2 ] u
// SPI1_SOMI------------ GPIO2[11] -- 441 |3 Y- d: D( d: U ~' S9 i
// SPI1_SIMO------------ GPIO2[10] -- 43
! F' o9 m# ~% g: e // SPI1_CS2 ------------ GPIO1[0] -- 17
5 [" V6 D6 g) D# x // SPI1_CS3 ------------ GPIO1[1] -- 18% T" z8 Z; M \+ W6 v" f; o# S
5 Q4 i2 ^, ]7 e/ p# E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 t4 T+ d( m5 V7 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) b: ?- d* ~7 M1 c; { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
T* `3 I U- I, c% {+ L3 h* ^' x( n* t" g2 n6 i: y
//DRDY1 ?3 ]* `9 K* d! A( ~, _" K
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 D1 B6 l& z5 Q" ^" G9 | // CS2,CS3. b2 ^* P+ J0 ]# k
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ d& k0 k# x: I& L& v/ p) b' e
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) Z' B0 ]9 t: o4 m. v6 i) H, h+ F //SIMO
) s( j$ _8 d* F( K GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 P' T( Z9 @; T6 P. g0 T: t u/ N //SOMI
, s" w$ u. U1 p/ A P2 f GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
E: }/ @8 [! D //CLK
+ }6 j- w- Y8 j GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
4 R, `( o8 x" M
! N# n, z3 p ]1 A; _9 W // LDAC
: v7 [2 l2 O* i: B GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( }3 `; w% c9 N$ [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ O! J* H6 `+ K$ I! W6 X4 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 g* o( L/ D2 v& z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" }3 U! n4 J3 ` M. u8 V0 X$ R" X GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: `, h9 H$ K# V}# Y6 `# [" g7 G" |2 j5 d+ \
0 C/ P/ G: ?5 Z
int main(void)
3 [3 [( S* Q# j{
; K! Y* W: }! J // 外设使能: i s3 c; a* Y2 [( H3 h' j: T2 q
PSCInit();
; u2 N/ C) b! t4 o7 r( _
/ H. V9 O0 T7 n8 k! d, S [# P " B! f. R$ B( N" z1 I4 Z
// 管脚复用配置
! I5 N8 }) c+ p* G" Z+ N3 f+ { GPIOBankPinMuxSet();# \( |* Q' ?: U _- m
for(;;)
0 L3 ?1 [( z* G) n. B {% a: S% z. U7 Z8 B3 b: Z6 n" A
SET_SCLK();//时钟正常输出4 z# }0 k* }5 x9 L! S# z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: A' T. e# E* Z. D% p4 q* A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 e: |% ~1 `8 f$ y$ q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& s1 ?9 L" y9 S) U0 o, v
' Y7 {) _' U# e7 P; {0 O5 C
delay(20);; t$ J* E6 r& j- e0 E
CLR_SCLK();
3 v- u) o7 E* i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& ^7 Z) A/ _9 x9 A- W7 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 N2 `3 F: ?. u* b: | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ u G C7 y: n1 W. [9 ^ delay(20);' m/ K S, {4 t8 o) H
}
) V* \6 ^" V- E! {4 N" O$ G}& y5 R7 c' u2 R) O
|
|