|
|
使用下面的例子代码,不能使SIMO和CS为低电平:" M' a& d* _ k- ] I
void PSCInit(void)
/ s2 n( @6 H6 }- G{" ^; @+ y5 `; Y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 V' _/ U( a! j}/ p1 _9 v* \1 a
! Y& r0 C# `' m, D3 T$ ivoid GPIOBankPinMuxSet(void)
7 f! C! { H. y* c$ o# i m{1 {; X. a0 r& b- j. x/ \4 |& R. D
// DRDY ------------ GPIO6[14] -- 111
0 ?% [! s' ?7 M& q# C Y( X // SPI1_CLK ------------ GPIO2[13] -- 46
# {" I8 Q6 `7 u' i- ?! @ // SPI1_SOMI------------ GPIO2[11] -- 44 j5 d6 C# X8 `: @
// SPI1_SIMO------------ GPIO2[10] -- 43
# Y0 ]! s6 |( q- i; P o) N // SPI1_CS2 ------------ GPIO1[0] -- 17- {& Z9 O \0 E f8 }6 S
// SPI1_CS3 ------------ GPIO1[1] -- 18
/ o6 ^, ?/ q, |/ q- Y3 N! J$ N$ A% m) t0 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ L4 C5 s0 n2 ?6 Q/ d$ G( f8 f( } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);0 g0 { `$ P" n% r6 J4 _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( s! D7 }% t" m, Z7 t3 M
9 O. D3 M1 G! a8 T //DRDY6 H" s( F! a; I E4 i# z1 N- r& q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY3 \5 B* } \. e, k4 _2 K
// CS2,CS3
2 R$ Q& I4 z! l5 o GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) q# o/ i7 j2 R# p6 Z: V3 R; } GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 p# o6 w0 Y3 L' M7 f+ O% P0 o' j5 ]) V //SIMO
9 \- G5 v g1 r: F* \* ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! V6 N! J8 r6 v% J3 ^# z( a //SOMI
- S$ {* s* ^/ c# w GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- e& `4 f9 d" A) | L3 K //CLK
1 ]4 S. S% z7 I4 R% c x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# e2 T. h( s: @
: h% z& j! _2 G$ C' q4 n // LDAC
$ W8 Z l, ?" s- J) |4 I: G" k; I5 S GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! ]" a+ A$ r" q( U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) V* ^3 t4 {* ?0 F7 A GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- ?! a) e2 Q! }3 B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 S4 Z4 d( L, I# ]6 y9 {
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 |- X( ~* m- y" I}4 M9 q( Z" B, y# A' k$ b5 o& x
( u9 L. ]- a) @2 M. |% X
int main(void)' S- f" A9 t* n( Y2 h
{; L5 k( W# q" N" z
// 外设使能5 L- m0 Q/ {6 n) Q
PSCInit();
1 G" `8 M K9 Y! {: ~! s& z x' |% q, n( C) ^4 v0 ?
- A$ u6 B4 h: ]# c2 c // 管脚复用配置
3 L$ D3 F- r0 N) @ GPIOBankPinMuxSet();
8 P n$ Z9 H6 v# e1 f4 m% [9 ^ for(;;)
3 @; m# c) ^" p ~ {. N- G" ~- M4 C
SET_SCLK();//时钟正常输出
/ O+ e- ~1 K5 }. A* A0 \! O/ G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# w0 V# P( S( e) d0 c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 o$ ?6 V8 D: o. Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! S2 `5 `& K- C$ `, O* D! o
* b" Z6 X" {) k delay(20);3 Z, s# |5 ~& O8 Y
CLR_SCLK();
3 X. O% y$ k1 p; c" G5 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 @. o) V _; J! f& Z" r' X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 V6 F3 ?! [+ Q5 i9 v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ i8 t$ l k9 j; j; p delay(20);0 a" f! v: T$ i1 \
}3 J% T7 N% x" g9 n2 w! O" D
}0 \/ r6 t$ r+ I- y
|
|