|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
& v7 V4 O1 j Zvoid PSCInit(void)2 r: J9 g4 Q6 U Y, E1 P
{3 w5 H2 X; V4 o1 K2 z' j; }& H1 v
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 }- P" `4 a3 |; L7 j}, o& u* X2 B+ r7 L: ]
# \& |9 z3 H e8 x% G
void GPIOBankPinMuxSet(void)
4 U K. ?, }( S) Y: l. |{
9 {" P$ K) c; r/ l: \ // DRDY ------------ GPIO6[14] -- 1112 a# }8 @: ?/ p
// SPI1_CLK ------------ GPIO2[13] -- 46
% t: z0 j" n! p# E8 R6 S( O# W // SPI1_SOMI------------ GPIO2[11] -- 44$ ]1 h& G0 n" }& z5 l# }; }
// SPI1_SIMO------------ GPIO2[10] -- 43
+ |. c8 i0 e v% ~1 B // SPI1_CS2 ------------ GPIO1[0] -- 177 Q$ r& U0 x2 s, \' F; b9 J0 S1 B
// SPI1_CS3 ------------ GPIO1[1] -- 18. W& F$ E& U, o- ^# y
8 F3 v M) N3 o. o+ c4 I* q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. z/ W1 }2 b! p4 g |- s3 B: i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 J# j- D! }& G- w; G' Z7 |# i% L7 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' ~& S- y0 Y$ d; v2 `9 h3 `1 v1 r" ?/ J% _# H+ K! w$ x) q4 }0 J
//DRDY
1 p: K/ n0 z0 L/ T0 R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! p+ z5 V+ T' ?& W7 a // CS2,CS3
+ g- L" Z, [! w; B* i GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 D2 n! U' S( v9 J$ ^! D% I GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 n9 x, Y& l4 n) N% R7 ~9 O$ H3 n( y
//SIMO1 p; {: h1 `" E L4 V! t% ]
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: F0 p! l9 o; w; j
//SOMI0 @$ k* S7 y. F( R; C6 i$ ?! z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
& C) n6 h, N- U4 S //CLK
9 I; k2 D( ~6 W0 [# _5 O+ G: _ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& `8 A+ ?9 \. i$ T H6 ~
8 D) d! C, L4 _) P& {; N // LDAC
4 i! e) [1 R0 h$ V GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 O/ @; s3 n8 R) \. G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& G; | M7 s" O8 u! _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 U1 B" G5 Z/ c8 U/ X. e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
% h9 D5 Y6 O3 E9 q2 x: j GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY1 \7 q5 ^ Y2 U; g6 X0 W/ d! u
}
& z" m# u! R* X( U" }- d
+ B" _6 G& p) B/ M1 _7 A3 Zint main(void)) r0 V* @" p4 E4 H, `
{) S) c4 ^/ |- d
// 外设使能
0 {" j* g( _9 X$ U6 u PSCInit();
8 b" D; V, A( D' k( s: z5 C
" K* @4 x4 v, g6 c1 R2 x
2 g M0 b9 [% j8 P" J6 F // 管脚复用配置( @% W0 z3 B4 u, Z6 O& `0 b3 q
GPIOBankPinMuxSet();
+ J2 y4 h* F6 f! n2 c8 H: v; { for(;;)
, i! J- _+ c" _1 C/ [$ i0 r2 c {
! r( R: M# ~9 I: i7 b ^ SET_SCLK();//时钟正常输出
) W6 e- o; s: y) a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 R3 M9 D3 U7 m6 }7 M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, C# Q; B* G, E# k; w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, m U/ [/ \* N( {, M5 d! E
: ` c& X3 O: }# }9 C/ B* ]
delay(20);2 N2 u% X9 j" a) p" x
CLR_SCLK();
3 ?2 w& s8 f: ]2 z2 t. Z+ C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( O! c& \. e" j* n( v GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
T3 M4 z) I6 ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# l' |6 M- G" p* H' f( r& v# _
delay(20);
: y' @# I% U) N# j7 V8 [ }
# ^0 }/ u( r: z}
; K( P8 A& m: W |
|