|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% _+ s8 z' ^8 E7 avoid PSCInit(void): @2 S0 N1 u! | l0 h" V/ `+ D, S, \
{2 e8 \1 W3 l8 I. g) P! S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- G# {9 M$ ^9 f7 ^4 A9 |
}
- T9 c( H* M& c z+ C8 P& V ]3 M8 ^4 v3 d
void GPIOBankPinMuxSet(void)) T$ f) r6 _1 i5 T: x' O
{& m: F3 Z7 P4 ]% y4 K- R( u8 [. F
// DRDY ------------ GPIO6[14] -- 111
9 t. K( w$ F Y3 b* \ // SPI1_CLK ------------ GPIO2[13] -- 46( I& U9 f2 e+ \5 t% j5 w
// SPI1_SOMI------------ GPIO2[11] -- 448 p k2 N4 g/ @
// SPI1_SIMO------------ GPIO2[10] -- 43& f5 M" I1 h' t3 t$ t( t
// SPI1_CS2 ------------ GPIO1[0] -- 17
. [0 t0 p0 z6 G; x( M. ?' E // SPI1_CS3 ------------ GPIO1[1] -- 18
- }# E; u% i+ v! Z1 Q8 q
! X( n& K, x' H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 d# ?# ^1 _# f9 \/ A- V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" a7 J+ X! }: O4 H* [5 @. W% d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% O' j, u$ d" n% B a
K: }. g% \- }0 Y8 Z/ n% q) }
//DRDY/ E! p$ W* H, [, t3 q0 s' n
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& F# ^( O- Q- U( n; A6 [
// CS2,CS3
5 \7 t6 ~! F2 \1 S! z! r' q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 K/ ^. ?+ g7 F* Q! O( ?) E" M+ P
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 ~* G# A* \% M/ H7 m
//SIMO! ^8 y# h6 M$ B2 o9 J9 x; c3 d
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 t5 y8 j2 J# s( j- u1 d
//SOMI
# b& C9 T& |* Z" f. y9 T GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ z: I8 R) ?' o' T: y% b //CLK
2 l* z+ a! p& Q( L; T GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 F# I& n x A$ i6 O- C# B$ g& B' l" w2 f) _5 X
// LDAC5 Y7 m; D% E6 U" D) N% e A. _
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* f/ w4 ^4 e$ J. G x0 B- I# l0 j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ B; j) c' _4 {9 M. K# y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" q* ]% Z$ M" u0 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 t, d- I1 m0 I' m
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% v: j6 G* t& f& M- S. ] D. }}
$ T' F# L( F2 F: [: G
! t8 ]; g, S* O1 m) x! V1 Nint main(void)- ^3 d1 Q m+ m4 g
{$ Z, `4 S4 |+ p2 {0 N
// 外设使能3 t. P+ S5 e2 H2 @3 F& l
PSCInit();/ L4 @' J, w9 T& H$ h1 s8 f
2 `. S, r& e% C8 I3 ^- H% c4 x# F 2 }$ |/ _) [4 l2 e" n
// 管脚复用配置
- P3 V' m ?- B7 n* {# Q" a GPIOBankPinMuxSet();- T' v% B0 o; {2 i" Q
for(;;)
; U, j' C C9 e5 | {0 C1 g+ X: \: O6 S% d6 }+ i- x. V) E
SET_SCLK();//时钟正常输出* Y7 {$ g& V, g8 V- T9 E! s7 I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( T( w# c2 h" v4 B4 G, I4 q0 @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
b' k; x! I, O! u" O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 m0 x/ |) y; q, `- {
; \2 w' \# F" D' `" O( }* p
delay(20);! p3 L. U. H2 J
CLR_SCLK();
2 G* |" w/ f: E' M' i3 t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 l. y; S- N& ?' p. W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 B, F/ G& O& t9 T5 E3 m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" L1 K5 [7 a" c- X, P* _) } delay(20);/ {+ a0 m2 f) S% i% l
}& K S n( L+ t$ f6 v* G2 ]& v
}5 f( o1 {' q. p% P, v3 P, n
|
|