|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ L; [% r; `: c6 C3 ^' N# O5 V8 mvoid PSCInit(void)
2 _# A F" r+ C0 y$ I{7 d3 ]! L' p2 D* Y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 c7 \4 e) h% L% G& s
}% X) B4 A0 b, [ Z7 Q) O" q2 `" W
1 ~( {8 W/ M# A+ z9 |: \8 b7 _3 z4 |void GPIOBankPinMuxSet(void)
( }: L8 D' _; a( E8 P# g{
( G) @) B# h6 M+ X' `! O // DRDY ------------ GPIO6[14] -- 111
) f( j6 k2 K Z' y // SPI1_CLK ------------ GPIO2[13] -- 46* X8 C. F, \, n3 n+ @. Q' j9 ~
// SPI1_SOMI------------ GPIO2[11] -- 44# N7 }( \3 B z' s/ D* S; z* z7 _
// SPI1_SIMO------------ GPIO2[10] -- 437 z( B, U; k; ?1 \3 V/ i# H: A
// SPI1_CS2 ------------ GPIO1[0] -- 17/ O4 W3 @, {3 U2 d2 _
// SPI1_CS3 ------------ GPIO1[1] -- 18
9 ?7 Z0 x$ _3 f# i
/ Y# c* n' N+ f; O, w8 n$ v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 ^/ \! ^3 l/ ]% g ~: O# ^# t. v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 C. p4 ~" d- ?# A% U+ W' I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
y7 |' O4 B# n. n7 |! |8 Z) C
8 j$ J$ K' _. _ //DRDY4 P# f5 |3 ]; Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% W7 o4 w' d7 X$ T% ?4 T! a+ ^
// CS2,CS33 m2 F2 O5 w, X9 A$ x
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2' y# \/ I8 \2 p: A' y0 L% M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 [, Y' k9 L4 \5 N7 H3 O4 @) Y //SIMO2 O' R9 _2 N# s! A& {# U
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 q) O; s' C) U7 e- h8 i //SOMI
' \0 n2 y8 A. z; @$ y GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: x T" C2 o( O F) k c. c& \# ^ //CLK
" Q) A U9 I2 P6 ?1 f0 }$ e GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
4 ~) [+ M& C+ u: e4 [
; V7 @" n3 A6 x // LDAC
; j" U7 A3 u1 N( t7 v" h R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ d* u+ n4 ^/ s8 ~0 g9 T. c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. d3 B# }' _: O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 r8 |: A& X+ g$ F% U+ I* E$ t2 ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" X& h0 T) C% q* C0 J GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
s' J, e$ z- ^4 q& W: T6 k: v/ V}
5 ^4 q) d$ H) |; n' f4 t6 W- @7 S8 @) J5 I' {+ w
int main(void)
7 [$ H- }; t6 u8 v( r' @- e{
/ P8 F0 T3 l+ A" B% Z1 C2 j5 b% [7 a) D& y // 外设使能' J- U7 d4 C- g* u# ^4 ?
PSCInit();8 b9 C; I4 f) h k! f; Q% Y
! g* j2 f( u$ s
2 x( |! p) |( [( ]- {
// 管脚复用配置# d, {. ]# p+ r3 V+ a7 @
GPIOBankPinMuxSet();
7 Y7 Q( w2 S; q9 _4 U- r ^. P for(;;)
0 D7 V, l) Z3 e {$ f0 n" M$ \ ^5 d! \. m: u
SET_SCLK();//时钟正常输出8 i: E) C* j: h( G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 ~/ t8 P2 O2 d% ]' k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* A. A0 `: c# P0 S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
[( G7 v( B# c% M: y% ^0 y
# {. k' _( |7 P2 h delay(20);$ y# D1 K. t) N# p5 C$ C" T( q
CLR_SCLK();$ q7 R X5 a8 ]! H- d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( }& E, T0 { O5 O! |) k+ d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ Y. ?# K- x- U' e7 t$ r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 t5 E3 S! C7 x# Y! b
delay(20);
% Y& Z$ V- P( p# K8 P8 u }6 W' V" M6 E4 f/ s: h: [+ y" u
}3 f( @7 M+ b# b* }5 E( t" A
|
|