|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
^3 K' ?1 q+ l+ R2 X' e4 Vvoid PSCInit(void)' d# i' F6 j% H
{
4 \8 H2 K5 l. z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) r. J9 s# v" D) u
}
+ _: S9 [7 P8 c' @
9 }- [. v I8 I0 u# i9 R, k1 f+ kvoid GPIOBankPinMuxSet(void)1 \ U2 t, D# a7 c2 R2 w; D& H
{
2 v" i$ X/ F3 p# Z // DRDY ------------ GPIO6[14] -- 111
+ T6 V0 v5 E5 V! S // SPI1_CLK ------------ GPIO2[13] -- 469 @8 d! w) B$ c! q
// SPI1_SOMI------------ GPIO2[11] -- 440 K( v0 G6 J0 N9 f2 X, B1 y5 q
// SPI1_SIMO------------ GPIO2[10] -- 430 X' g* X! l( I% O6 D8 ?3 P1 O
// SPI1_CS2 ------------ GPIO1[0] -- 17
# @$ n: ]( V* K7 d9 v // SPI1_CS3 ------------ GPIO1[1] -- 185 h- s% P( k P$ w* [
: S' T1 q0 b4 @ n3 {# P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
2 G* H" G, f1 O# m0 Q- ?* [4 X HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 r; V. k/ a- }5 \0 r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 _7 |! F7 ~- g1 k
& m6 U. x: o7 S! q //DRDY
9 E* P0 A$ I- ~* {, D GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
: a; J$ z- R4 d1 R' H0 T* _ // CS2,CS36 L$ J" z6 `$ g+ N& F
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 o6 d! C1 R' S( F& D GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 e0 S `8 {& H# A //SIMO
; X3 w7 ^( h. ~4 H4 m! s; G GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. Q: m/ _1 J& r$ d: R
//SOMI" I' j5 M6 W [, P( F0 z ~" O
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) @0 Z( N8 N9 \ //CLK
7 F- v6 }5 h x. Q, P GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 j( n: y7 I1 K% L) A
3 _6 M% |( s/ D: d; V" s6 Y- f: m/ O // LDAC
7 j ^1 a" V3 K4 w8 n! l" V) Z GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# J+ ~/ {4 [2 H, s$ g" r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' O/ V* Q U* K6 [: G9 G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" O% `: X' Z) S$ ]4 ?& X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ _3 \" U1 x0 A: m
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
5 l; O8 B& f0 P$ F; J}
, s- X0 q5 x( _
$ _0 _' l# x+ I, }9 r* C1 m; rint main(void); i' n) S! V' t* ]+ C
{
4 \/ n( T/ K. b' g // 外设使能
, m: X) U1 N+ V7 A PSCInit();% A9 K( L! ?! R$ t; C" `" J y U
. w8 {3 I# X4 Z0 s" \! V( k9 B % N d1 {: s! c
// 管脚复用配置# v9 L( U. s: z' A) J
GPIOBankPinMuxSet();
. u c O4 G, F6 Y: W& s* |2 V for(;;)
# L9 J( i, \: G# t% P4 H6 C {6 p) e7 A5 H. Y6 G4 X
SET_SCLK();//时钟正常输出
8 Z) H! y5 {3 k: t* K* U$ k/ F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, G! a* `! i0 v0 b( u; ^8 p, G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 | Q5 `. ?; M% V+ h3 W% C2 ?8 m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: R& w8 n' z2 u. L3 U
" x" X4 j- m8 A delay(20);
7 Y* v) c4 p+ b7 D CLR_SCLK();
! q: B" O! B* B5 y8 q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ v/ n' }9 ~3 v& R8 \, j3 x) H6 z* G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' g8 q7 k" c6 G O1 T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- }& r4 ]; D4 n& W( U! r* i
delay(20);
) |1 j5 I4 v# ~7 q }7 l: ?* Z, k; g* B7 k
}
, C5 x( n, c) k: d- ~( H |
|