|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
6 i# z3 }9 ]% x5 M# [& c& n' @void PSCInit(void)( U! I, w. y/ g
{
" E, b: ]- c# E) v4 h PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; w/ B+ \- q( e4 K3 I}
: y" Z s% O9 Y
5 `- K9 ?+ Y* j& Uvoid GPIOBankPinMuxSet(void)7 u* s# [8 l6 W" L# |1 y
{# t% d6 [, B- e! x
// DRDY ------------ GPIO6[14] -- 111
/ c. d2 O6 ~. M- G: n' t& W // SPI1_CLK ------------ GPIO2[13] -- 46
9 _; t% S; c' j, O# P2 X // SPI1_SOMI------------ GPIO2[11] -- 44' F7 g1 F8 T: w
// SPI1_SIMO------------ GPIO2[10] -- 43% ]! n0 }2 F0 k' _4 w. c
// SPI1_CS2 ------------ GPIO1[0] -- 17; B2 I6 L, g- L6 z2 Y
// SPI1_CS3 ------------ GPIO1[1] -- 18# s9 r5 F" h- R1 I+ P
' k, X3 o% n# {; i, `1 T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 r/ I! @2 f R6 \5 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: b$ P7 a) f- y( m; G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);; W/ o2 o# @& ^) A7 c
) j8 Y, P" B6 ~2 y% S
//DRDY
- u9 w9 [! \0 B: d6 m w6 E GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* M. A' G' \& l2 G$ P // CS2,CS3
' V' ~5 Y- ~- T z+ h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 L& ]2 G3 ^# ?: Q S
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' ~- I7 a3 O: X
//SIMO3 i2 ]1 g7 B3 e) [ ]' O8 j, I5 V: V
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
5 V1 C9 h" e4 q- Q9 p; ? //SOMI
3 L4 q% R4 f$ y' X9 J GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' l6 s( _# o X& p
//CLK. P+ m+ ^4 {7 {; m2 t3 y- ~- ~( J
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ x& z1 O5 r8 c- s$ O
6 l% \% L/ G/ P+ o& Y$ J7 O, ^ // LDAC
; o, |7 ~" ^, y. z3 D GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) y9 G4 i$ O y3 q; I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 C& f0 H5 B9 Q4 `. E4 v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' L9 m: d5 p6 t( G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 F* \& J \. Z GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. y0 [$ z6 U. \
}
7 S: x( u4 [( c- v
" I; a( x1 a! C, ?8 P4 Dint main(void)
' R/ ` }: ^: k0 l; Z# @1 W{0 F# X" w; ~6 M0 k
// 外设使能5 N+ j6 O7 S g6 }: R9 E# @
PSCInit();4 p, `" s8 x, H+ l. O- T
7 N! N. B: _4 E ) r( f7 j5 a( W: |+ _' w
// 管脚复用配置
; a" g1 ^+ Y5 l) V2 [! P; u GPIOBankPinMuxSet();
; C; n: J. q. y; f for(;;)
9 J4 C4 }- Y8 G P {' s! g, h; i! M% ?
SET_SCLK();//时钟正常输出
& B: x& m# V. F5 c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( q! T7 [/ Z* W& e" l. j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) c i7 H! t v1 [- f( W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 K$ ]6 |' {8 b, Y
8 R8 ?% |1 }" j' t4 N f delay(20);
9 L% C1 `" x- K8 x8 H3 z4 ? CLR_SCLK();
Q/ q) L/ ]( d, w! `( Z" v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, u# O4 \% B! S' Q1 ~3 ~3 F% H9 S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- k7 V& ^3 u. s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! t- ~4 q& _+ H8 E delay(20);& j; l1 i q r t5 R, Z! L& v
}8 [3 q4 J- T6 F: F& N; @
}
+ b' f; } ^( ~. l* J! ~# R |
|