|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
j/ c; E" e, [& T; ^, ?void PSCInit(void)' A" B7 O5 o) X9 ~
{
+ L% \( U9 f$ u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);* j) v/ b c9 ^8 B
}
( b q. a# E2 P0 {% ?( e6 t5 ^# _ d" [
void GPIOBankPinMuxSet(void)
/ Y8 ]/ D8 }: \/ `8 E7 S{5 Q3 [1 e1 B! L# }
// DRDY ------------ GPIO6[14] -- 111
/ x9 N z9 N: V5 j3 A+ f* [( ?* ]. [ // SPI1_CLK ------------ GPIO2[13] -- 46
, R1 h+ h/ P/ @2 F! H& I // SPI1_SOMI------------ GPIO2[11] -- 44" X0 V" z& x+ c$ D' T
// SPI1_SIMO------------ GPIO2[10] -- 43/ m- I4 k0 o/ t& ^4 `/ v( D0 _
// SPI1_CS2 ------------ GPIO1[0] -- 17$ x4 b5 p& X# V+ A; D; o
// SPI1_CS3 ------------ GPIO1[1] -- 186 G. Y$ |6 H, x
' K+ u, M) S! l3 i5 U# v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
0 v, N, C r+ G+ l1 y7 y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& t4 A% |* U5 [) E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 R9 a$ M8 B0 }* P+ H1 y1 I, D0 W
" G+ @: o( f# t& n //DRDY+ _% L1 K; t7 A+ I+ ?9 L
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 q, ~$ T R- R7 U5 z // CS2,CS35 `4 H6 c N6 ]# G3 b I
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 l H0 B9 F. j( W GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* E5 m7 R/ G4 n //SIMO3 d1 Z) {+ ]) h8 n- L! H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, V2 b: b2 e: A# X4 j; C# M3 Y //SOMI& y0 I, b! o6 P L% {9 b
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! p/ V8 q; {4 ~1 r3 T //CLK
. V1 B3 j1 M3 w GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" j y* M4 A" F; z
( C4 ]2 m+ L* j( c. p // LDAC
+ Y. V# q2 ?! j" [1 F X# c' V GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, c0 O# w5 F7 V. ~+ a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ N' B' l7 h6 k0 m+ A2 y* g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 C7 P& q' p8 D4 T9 ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 f# A* I d* P% D, a& ^* | GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY: M. z8 W$ `, H! M7 U
}0 J+ j$ L0 [; ?3 s* g; ]" I
) N- @" y+ i: K0 J* S' C* I* `int main(void)% N( D- E" g* m1 p0 A, F
{
0 W" e# f: \7 c% w: f8 d // 外设使能
; s, ]/ y1 ?1 t# ^& P$ T: j PSCInit();4 g/ _# n3 r! T/ I/ v ^9 q
1 F5 C2 f3 P0 {$ y 8 S- p' h% j' E4 Y
// 管脚复用配置
; V1 d7 u0 D; {+ ~% l! T# A GPIOBankPinMuxSet();" E# @1 E3 `& e6 f- _
for(;;)
5 c. i5 l. b0 |* Y9 i {
3 u5 p! ~0 w- k5 E$ k SET_SCLK();//时钟正常输出) ~+ D Y! I I! e* B: b4 w: S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
W( K4 j) d }. j- p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! ]- A) |$ V7 V6 r& m# k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN% y$ ~4 [% @- x2 {; ~
( f. z; L" A) a* l& r
delay(20);
& i8 r. a* j9 @4 Y CLR_SCLK();
8 d# T2 d: v- i- Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 g7 \! ]6 j; A& o5 F) F: ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 A' N) P3 b0 y# u4 T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* s0 s- L; ]1 L0 U7 o! h4 A2 k- I: \+ I delay(20);
6 ]2 G6 E1 I5 ]& k* Q. x3 R. Z6 A }
8 Z c# G X. M4 e. ~}/ `3 U" P8 I* Y# ]% Z- x6 D
|
|