|
使用下面的例子代码,不能使SIMO和CS为低电平:* B4 J9 j% ~" p( s' G
void PSCInit(void)
! e# l6 Z! C4 l5 c1 p0 B{
, D& B4 q* ] s. r( _. H6 g$ h PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. X1 Y$ R+ _7 N s/ L
}
$ U: k) w7 A! b; x) x5 ]& h1 c
* {4 Z, N# n3 O6 s! }! u6 @void GPIOBankPinMuxSet(void). `% p4 ^3 q, n; Z
{
! G/ k% w8 T% f6 e( }6 X5 Z# @ // DRDY ------------ GPIO6[14] -- 111& B4 ?& M% v* ], W
// SPI1_CLK ------------ GPIO2[13] -- 46
) I8 c, i3 r9 T) d // SPI1_SOMI------------ GPIO2[11] -- 44
/ h- N, @1 O" e" T5 J) B0 X, ^ // SPI1_SIMO------------ GPIO2[10] -- 43
7 ~# U& }; A( f6 O5 C( p // SPI1_CS2 ------------ GPIO1[0] -- 17
. O$ K% }6 K: ^: G3 L% P // SPI1_CS3 ------------ GPIO1[1] -- 18/ i8 M+ ]+ |4 U* q
. O6 _* O8 t! D& P% O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( {3 I1 R6 C# y5 y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" q6 X( x6 O# T0 z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 ], ^+ ~* R- R& c. l- Z$ ?; X
: h9 z1 o+ W- k //DRDY
& n% U5 Y* ?+ W: U( \ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" T) X- }2 }* e2 ^, `
// CS2,CS3' d$ `/ P+ H9 J, x8 w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* x) W2 ^* ^- f( J
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) W# u8 h- A! P6 p6 b/ i$ T
//SIMO- r: Z7 C9 u( j `
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- w( r1 Q8 z. b2 X" s" @ //SOMI7 s7 ~5 V( u/ t. u, K) Q7 C" V5 `
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 w4 V2 G3 p x1 V; a# x //CLK
p1 d3 q* A! x! z% O+ s/ v$ e GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 T% c/ Z% W+ k" l
- ^+ n! N J6 a0 w // LDAC
! j0 {8 w* m* R3 l) R: r# w) ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. ?7 P0 ]- w( O ]. B- c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& r4 a9 A% s$ p; M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% A9 l) R& F6 t- Z% t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 \0 Y, q8 [* x+ }0 j- b
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! V. }5 m- C7 h4 N
}
( K4 C. J- Q6 @& Q& e: R& H+ B
' {. B R# u) Mint main(void)4 C' `. \( W/ r) g# w& {
{
, _; }' a& c9 s- ] // 外设使能# j7 v- k. B/ h) ?& O# D
PSCInit();. s* W! r; m( b! Z* M I
. W* H" g+ X5 k. s" x
1 n* @ H, J" j1 f9 f- A: E! Q/ V4 i5 ? // 管脚复用配置 ~4 N+ J0 b5 b' p
GPIOBankPinMuxSet();
, h! t8 k( ]( U( x+ r1 J0 p" k: | for(;;)8 ?2 M7 u/ J" `5 @$ Y3 [
{
b- U* G- g3 }" y, E' U SET_SCLK();//时钟正常输出
" A$ ?2 X; l9 K" F2 D! b6 s( l2 e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 H' Y' I$ J' W: X5 U6 b9 k8 R GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
: z, ^7 R1 H5 |2 {( p, t# v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 ^- G1 x7 \- P1 i3 i; ^7 t2 G! G$ b9 u9 q8 W; C6 z3 H' x
delay(20);
7 p* H% `" Y; e; \& h5 B! H" h8 j CLR_SCLK();9 m/ U& Z( K3 L4 y5 l4 n& W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
& M' j) s! i! h GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& { X6 K6 {) K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 e. ?% Z% Q# s6 F) k4 D delay(20);# D' W# S! n" p5 J
}+ V% I$ V3 }( G) I, T) n
}5 c6 f/ u0 e: R7 p" ?
|
|