|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" E- |$ l. ~* j) Z0 K2 yvoid PSCInit(void)1 v- f( R! r" a# L
{
& e r: n+ m$ X a PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% `1 O1 c2 p4 k" A& Q}
1 o$ s/ V/ F) `" [3 i- ] ~ C# k
void GPIOBankPinMuxSet(void)
3 e9 s3 s* C* G6 b8 j$ w{
8 e2 g" L) | N6 M // DRDY ------------ GPIO6[14] -- 111
, [$ d& m1 o1 g& p // SPI1_CLK ------------ GPIO2[13] -- 46) b L/ C; \" n0 ~9 A8 E6 ]' p
// SPI1_SOMI------------ GPIO2[11] -- 44
4 w6 s7 n- o7 z$ z/ [. y // SPI1_SIMO------------ GPIO2[10] -- 439 X6 Y y6 G* z% j
// SPI1_CS2 ------------ GPIO1[0] -- 17
' o$ h6 T+ a0 z% J! Z1 U // SPI1_CS3 ------------ GPIO1[1] -- 18
- P' E% D+ [7 Y
0 C _( k$ k7 e6 D) V9 w0 H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. z7 x/ F4 w9 n! s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; C; z2 G: B# w% k0 W: P' B/ }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 X: G# t1 w$ l+ r
/ W; p8 i% F& h8 ?9 X( [3 P' l8 k
//DRDY
! T% b6 u1 j: ?9 G* j GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY F9 j+ w: N( q
// CS2,CS3
* j' h( E3 q; b ` GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 |- p. P1 {" F w* i/ c
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
. i" O/ b" `5 ?) b5 `5 D g f //SIMO% }$ y+ m( i3 r A( Q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
* |4 O0 ~4 k6 ?& N- v5 a //SOMI2 I @4 ^6 ^2 X, f7 T( R; S
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 v! ?& `" Y+ z* z$ G* C
//CLK: H, Q8 }) C" n- ~+ X( Q% {
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. l7 g/ ?4 C$ b, q$ `
+ g- `8 x: x5 h' i* p( d // LDAC1 ]+ L+ H! S' E8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 z4 O2 q# _. X$ j! q* N g) N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) Y' I7 a. J0 n8 c- `0 Q% N) k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% b/ t& O/ I1 L# Y' ^- r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' @, x) y- j1 I. j GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" t0 Z) `: `) X, K9 S3 g
}3 g$ x( U6 X! y5 v3 [: R2 L
8 e+ P% j- B- ^1 Gint main(void)
; t0 S! r& U) p! A3 Z7 `& y{
* R3 U W. M& f // 外设使能
9 M. Q# `" y3 D7 m PSCInit();+ c B2 L1 y: C0 C+ }( D
! U. |% p4 L+ K7 W' x8 ^# j; O
, n3 N) {% }+ X3 b. T. A
// 管脚复用配置
3 h: ]8 @) ?8 S% F$ p& ^ GPIOBankPinMuxSet();
8 Q" \! {: r& K for(;;)/ |! G, h! F- B
{
0 M" {( C; J: q6 r( ?. N% v% ^ O! y SET_SCLK();//时钟正常输出
5 w$ g/ ]! a: d0 \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 L1 o5 A7 s+ G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& u9 V8 ?6 f0 F+ R& Q, V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 p+ y: w2 a& Q# D8 R( l6 N
! t& P5 |/ f7 v: F4 D delay(20);; j8 r0 u9 n# c
CLR_SCLK();* J; _+ b7 L1 G: b
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( S) O8 j6 I2 ?, D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! a4 z+ Z7 ]* |- J/ V0 U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. ~' n" z" Z/ d7 V6 G" }& ~ delay(20);* w1 y! S1 ?# h* u
}
" J: R% z! y1 l6 e( t# t}# {: w1 ?3 `. \& d7 e
|
|