|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! \, N$ Y+ f( h+ y: H
void PSCInit(void)
+ _; @0 h. d$ z3 [- D0 r u{
) Z6 l% k: T4 ? ^6 F& O6 V$ v PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- y, S, j( O4 E! ~; c/ D8 @8 F
}
6 c+ l" Z( l/ B# m4 `9 d3 ~( r# y8 J2 I" p# r: ?, o, w) H* _
void GPIOBankPinMuxSet(void)3 F m5 \1 y/ u0 C: h
{1 L0 m( L+ I; n. m
// DRDY ------------ GPIO6[14] -- 111
* m# [( v3 j, Z0 x/ h // SPI1_CLK ------------ GPIO2[13] -- 468 E% Z! F1 f' G. M3 f( B( B
// SPI1_SOMI------------ GPIO2[11] -- 449 I4 r5 x/ o% `% b
// SPI1_SIMO------------ GPIO2[10] -- 43- b" B* `& s2 v) C3 O! b+ S( l
// SPI1_CS2 ------------ GPIO1[0] -- 17
* A( q9 w0 G7 U+ T! L/ O$ H // SPI1_CS3 ------------ GPIO1[1] -- 18+ o0 S) i3 ^. Z( t/ g" w! P
" @4 ?4 ?* [* B# W5 A+ C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* Q) z9 r( e) w: I2 |! S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 d; e* q; O$ ?$ R5 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 C1 L; ~0 ~6 y2 |
9 Y, N% K; G; r6 [' q //DRDY
: s% R' ~7 K* O, R" a) m( o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ O; T2 y) j5 m9 {- c `1 K
// CS2,CS3
- A2 h' x; h0 p/ y7 N+ P, O9 ]: _ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 t* O6 h9 i7 K* N e" q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ W: Y0 X, i$ }" a) N4 \
//SIMO( k. n* X* |/ P1 Q: l- U3 L2 I% T
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# c/ H& h, ^5 V3 S
//SOMI4 n" S8 u% c( E j% ?) \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- R* f& U0 a+ P3 s" \, S d, z //CLK n- l) k6 Q" Y& {: ] [
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; P1 ?; a. w3 b/ a" i7 x
# K7 u7 V5 m# C. M' B0 i9 F // LDAC
: P4 ]( E$ S8 b$ @' \) ~ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- {0 [. p: }5 Q" F4 M1 a; W& D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" I: K: {. c) R6 {) y& d+ p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 p3 F# f i B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 o; W, H, K6 l. j. B0 x! [ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
8 O M+ u2 g% u1 q& a# e}$ c5 C2 O; |; A9 x
7 `; q; T6 s( a- Uint main(void)7 @% z6 o$ v% Q1 N7 |: w1 @/ P
{
+ `* U) g4 S! ? D // 外设使能
t; P( W9 d! x3 j PSCInit();* ?. b. Z/ N& o A
' @7 A: `: n" J' U4 H
0 t5 w, Z$ e0 z( p' ^( `+ n) K a // 管脚复用配置
4 X& [1 i$ r+ x* d GPIOBankPinMuxSet();
( ?- y! J! u N) p2 B9 s for(;;)1 T# i2 d: _9 M) _) Y2 |9 h
{
0 F$ f% }: |3 W4 f; k. G SET_SCLK();//时钟正常输出* }- q7 y$ D4 |' p0 W8 [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( D' Q3 o2 h A! b+ k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* Y( k; s+ i0 i2 o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. V" H( `9 m# a, V6 V( Y/ v$ r% `4 s; K( y
delay(20);4 m R0 d0 O. P' Q; R7 t) i5 Q( I
CLR_SCLK();' N9 A) `' y$ b- n2 n7 i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# b U; o: t" P$ J# J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- @( o$ }+ O( J9 r/ U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 I% w3 w/ K2 @ ^: z: s
delay(20);
1 x8 }3 ^' B4 h+ Q1 V5 R" u& B }
4 m( j% z, ]7 E' d7 ?1 e}+ ~3 G9 v P% {! ~% |( q. A! T, C
|
|