|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; \; b: z4 S$ I0 V/ j( kvoid PSCInit(void)
+ f3 D5 |( y/ O6 u( ^{1 h0 z& T- R" ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 C. S- }2 E) U
}
G/ _/ L/ F/ P; o9 h! Y
* g5 P2 H! G! E9 M! J4 }void GPIOBankPinMuxSet(void)$ D+ g+ D- e* ^+ B
{! U" }: I) d5 O7 f/ T$ m
// DRDY ------------ GPIO6[14] -- 1116 [$ f2 T" H' s# e8 J) q5 F
// SPI1_CLK ------------ GPIO2[13] -- 46
3 y0 b3 X( _) T1 |* | // SPI1_SOMI------------ GPIO2[11] -- 44
( `3 i, Y4 _. j; H" f // SPI1_SIMO------------ GPIO2[10] -- 43
( c, E' y3 u! t$ a7 A- d) q // SPI1_CS2 ------------ GPIO1[0] -- 17
5 B* k3 b$ i" _$ K6 ] // SPI1_CS3 ------------ GPIO1[1] -- 180 m4 D3 ~' ~, w, J0 m3 v
0 N* }2 n* }- k1 l( S" o( Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: \" R( {) Q3 D% z" D' T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& l7 O8 k/ C4 c' o- |$ \% k" H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, N: w: { `9 ~+ L. a
. _/ ?# t& N( i1 C: p0 O# i
//DRDY' D W: P$ V/ v6 d7 ?* x& u+ ?
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 d) R: J. h# @$ J // CS2,CS3
! I" I2 }& V& Q+ G3 ]' G) \ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! z8 V+ w: b4 `) C0 U
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
. K6 P3 ?: I. v- x# T, g //SIMO
( V8 C9 f% e4 t8 P# T# g7 g9 p GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, S# f% [" J0 S8 _9 Y //SOMI! i1 a* n5 X, W0 F6 e2 l
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ v/ H) a& j+ c9 } //CLK
( i- \+ L+ A5 D- I0 X: s" ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 Z8 O8 z4 {7 P( s' v3 Q( M9 [4 k+ G
// LDAC
2 w: }, b" z) N% I. p4 x5 h) ^ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( }# }, S$ Y$ v1 m" o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( E# Y: \% ?- S }- P Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 z8 o* O5 |& A. N! x' q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS34 V7 c0 A8 R, H& k5 O. B9 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 c3 I" u5 \7 i7 l- g3 C' T
}7 x7 n2 S. ]- q* a( P
7 S+ R' B1 t& i# r: ]: [int main(void): e0 ]1 k' P8 c4 t, }, g
{
& ~+ U: S2 n* i1 S9 ] // 外设使能
7 {/ Q, M4 |) Z4 P- n PSCInit();
& S. h/ b: H' h. g$ X" L
# {/ u9 E* f( F* X) t; A8 Z( ~0 @( w
3 H- d8 S: I5 | // 管脚复用配置
$ v, K! R7 g$ x& f' v2 K+ o GPIOBankPinMuxSet();( u2 M: m: h m
for(;;)
3 N. b8 j- G! I {
4 g1 u: A4 O5 ~; [0 p, Q SET_SCLK();//时钟正常输出3 a% n+ s& T7 w8 Y3 B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: U5 Y1 n. O0 r3 A6 e* {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 L" j2 A0 X3 i; n1 n" p; ~* T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 {1 I+ Q- K* U `1 o$ J; j$ W
5 y$ `1 ?; t5 o2 P1 y5 I% Z9 t
delay(20);
3 H7 n( d7 \ A CLR_SCLK();
. ?1 N( ?/ N# b" ~- Q7 Y$ v) X; R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* y3 m" g) E4 p0 o! ?9 W1 m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 ? H1 J" T7 b* h' {* @3 v) i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
T2 d5 k' W6 S7 e) x5 v) H9 z delay(20);4 d* G2 w: q- C# \6 I! G- K. V
}
5 b& C3 h4 C( i! T}; k# T2 z5 _+ \- X0 `* H8 K
|
|