|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* J( N* } S J3 X% P% Lvoid PSCInit(void)1 }! o9 n8 H1 g$ ]/ V7 ]) A! W
{( I- q; G8 j4 D* R/ w# X9 F
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& z+ N2 l6 d1 Y% P) R3 E
}
8 l) }3 O3 H* h( w# e! K( S
- J4 e3 M& z$ gvoid GPIOBankPinMuxSet(void)
/ @- C$ D" d6 _+ w7 `5 D{ }$ \7 J2 I- a3 D
// DRDY ------------ GPIO6[14] -- 111
+ p2 V" ]7 M. Y- p // SPI1_CLK ------------ GPIO2[13] -- 46
+ s; G" j, e" G; T // SPI1_SOMI------------ GPIO2[11] -- 44+ F6 ], m2 p1 N2 H- q) t
// SPI1_SIMO------------ GPIO2[10] -- 43
( [3 d' B5 F: n( v, k- W' I3 ^ // SPI1_CS2 ------------ GPIO1[0] -- 17+ r$ g# b2 n/ l. o( _5 K9 w- A1 y" }
// SPI1_CS3 ------------ GPIO1[1] -- 18
3 f3 P8 I' ]% f" l, o2 w0 A, i; y: N/ R5 v1 Q c" ?0 U2 G) E- \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ w- ^4 M) D. @0 F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- ~0 G3 L5 v1 t% G/ l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) p: P ]" B7 l5 @! i( H
9 s8 }( E6 h4 h //DRDY
2 v8 F; c' h4 p5 e$ `: q GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY, g1 }. X1 G6 {# L& ~8 q8 S
// CS2,CS35 J* r' z9 f: a2 r& p
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& s( e0 N- x& f! `" P
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* Q" Z1 q) S# q0 g
//SIMO
9 N* w+ y- i: B$ L- ^6 y! d- \ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ u" Z% l; Q' y2 N //SOMI
9 I5 K( y3 E/ Z. Q: g, H! p% T1 C GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; G( ?9 E5 p7 L0 x+ N$ a
//CLK
% z# @" b/ {4 r3 _; |) H GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK- a4 F9 B/ v0 \; {8 z; _
$ e7 |, v1 U$ P. @ // LDAC
8 D5 H9 x; `& \$ [ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 \: u9 H$ R2 m3 | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 E+ f% G; f- V$ ] GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 j; A9 a( d! i& c4 M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 r. z* |$ G4 J+ }/ V. g, f
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ C1 \7 N- x5 B- k, c}
% x! V1 ?5 t* \$ t( U9 p' r& {2 G* e( u! e. ]& `
int main(void)+ J) t: v( e: Z
{
0 s2 \4 _) O2 I8 @& [ // 外设使能% V: O2 j% s! g( W9 |
PSCInit();
& M9 D) _, J* i- ?+ G% T) s# k1 [& O- b C8 P! \% g6 L
2 X! {; T4 f4 {: t7 W b8 N( K // 管脚复用配置
9 D$ S q. ^% S! F GPIOBankPinMuxSet();6 D; A* s% H! J$ t7 J0 M2 Y
for(;;)1 E. k# [; ]1 U9 n- g# f- x
{9 W8 O1 T1 }: Z3 v6 I7 ~2 @
SET_SCLK();//时钟正常输出
( d3 x4 }) E, X8 _9 E; H0 X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 A6 e, Y- f. f9 z5 X/ s8 S
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) f) E! M' J" A, g( L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; ~' u6 _5 X" v
% \+ H1 ?7 X3 ` \- m/ D T/ {, d delay(20);
q' ~1 w' Y& [ CLR_SCLK();
8 V0 d: C J* S6 W0 |# T) [0 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 N m. D) T" a9 N& Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# h5 a" U0 F/ s) u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* I' a1 f/ F7 G# A3 ] delay(20);; y; V& U0 A6 |9 N) I) `% {, L
}
+ V2 w+ v8 Q$ m* t& t3 A; o}
4 M- s) k5 |0 l) o7 v" s1 r |
|