|
|
使用下面的例子代码,不能使SIMO和CS为低电平:8 B' k$ s" l8 A7 x i
void PSCInit(void)8 d1 X0 U: L1 e/ _& n
{+ E! ^/ ~ B* ~2 p) ^7 p
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);* }: S: t: A' Q+ E) Y/ G6 ^- I3 E
}
& |. i: e+ g8 |# @( i# D( g3 y* a4 q4 p
void GPIOBankPinMuxSet(void)' Q& E+ I* P; t8 S8 g7 @, O5 ~- l
{. m0 G* D3 k0 e* e7 g
// DRDY ------------ GPIO6[14] -- 111
: l6 C$ j$ m, F! X // SPI1_CLK ------------ GPIO2[13] -- 46) l/ ~9 n8 h; y$ z
// SPI1_SOMI------------ GPIO2[11] -- 44' L* d2 q( e. Z0 L% R* P
// SPI1_SIMO------------ GPIO2[10] -- 43
+ y7 i6 J4 k. N2 V // SPI1_CS2 ------------ GPIO1[0] -- 17 M# z- m" H) f' k; U' z! f
// SPI1_CS3 ------------ GPIO1[1] -- 18
# z8 H' T- X: J0 {7 ~- C7 w) F3 ]3 `" V2 p% N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
9 ~6 q. h9 K& A. p; f: `% ^6 z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& N8 |$ S: [( g% I; N& s7 X HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) P" U( F4 V. C' I& U% ]# t0 D4 ]# v$ d% W8 ]4 x5 h% y* d9 L
//DRDY
5 D! n* j$ i/ x; ]$ v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" g4 X1 k- o' P1 K6 y" D
// CS2,CS3
. N7 Z3 m" c$ U3 B GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 z( p( d0 n% P9 ? a% I7 s
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 i; q. P0 |+ z: L //SIMO" l* k8 C* ~) y1 C3 e% ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 d' a' P8 C) L) d. I2 b2 n //SOMI
" k+ V: ^& I) s; f GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
, X( c6 _) R7 A0 A4 Z; [3 o$ t: O9 g //CLK
$ e5 e3 h. Q4 Q/ l" r% B3 h1 | GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; v# z4 ]' q% P8 q# i* r
2 ]$ y; J; b+ Z; {& f" s // LDAC
- O# l7 s% k V: `/ }6 C- L GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 X! d) o# q+ C0 u% g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 \0 e- ?8 p4 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. S: x" A0 z5 d' Q9 G$ s# t% [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: _: j; P$ f; Q7 O
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY: \1 u" G* j& n6 |; E# l
}
8 p/ h: q7 J+ o4 Y x
! g' ~/ i# E4 L, Z$ R Y: D' oint main(void)
- l( w+ j0 G( {+ y{
/ a: ^3 g& k/ J$ ~- p- ~7 q) }; B // 外设使能0 J/ J! z0 t/ b& l- Y6 O6 P
PSCInit();4 ^7 X; F2 f+ b- W
- @ {5 O" V# r1 q
1 K9 q/ r; G3 | // 管脚复用配置) b+ t v9 W7 T3 E1 o
GPIOBankPinMuxSet();3 Z. e( T1 K+ r* Z
for(;;)& n3 p/ r' o& H
{9 i; v/ ?( j2 `) O: n1 ~1 |* ~
SET_SCLK();//时钟正常输出
' `+ g! c9 l( ~2 i! s+ ^& s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 d5 X' k5 u. ` }, ^ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 V2 @6 T- ?5 t; j9 T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" _) D: a* N B4 v. ?" |7 [; r
1 Z4 V! r# ] s
delay(20);
' D! T T4 w% e; v% T2 l" n CLR_SCLK();+ F: i: r' V" S2 S' D2 |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, u+ v8 `7 L' |. K1 r- ]2 @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& j: q# C, H4 F( n" ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, n" Z# A* ?) I3 G: h. o9 \* s delay(20);5 G0 G5 n+ |2 O
}1 C3 a* k4 l' o$ J
}
; a; I& M' H: N9 s- C |
|