|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# u0 c7 F" u6 a0 r8 ~8 t# yvoid PSCInit(void)
& B2 N3 r$ r. _6 R. H{/ |8 G/ p) y$ J# U2 Y: a7 H$ ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ r+ Q9 A# i. {( Z" _0 [
}
# N2 \) [0 f. G6 l* S6 e0 _3 o9 `9 T, q1 I8 a1 k, |+ d7 t
void GPIOBankPinMuxSet(void)
9 T5 `% k7 o; d O{. c1 i' O5 z- i1 p$ Q
// DRDY ------------ GPIO6[14] -- 111
" d2 z/ q" I/ K e4 ^$ Z // SPI1_CLK ------------ GPIO2[13] -- 46% y& l+ K! ?; K+ N$ G% @, _
// SPI1_SOMI------------ GPIO2[11] -- 44
# R8 M0 E7 Q9 K. v // SPI1_SIMO------------ GPIO2[10] -- 43' S" ^1 t. [: K( S* }2 z
// SPI1_CS2 ------------ GPIO1[0] -- 176 ]7 N9 k& X; U- t; q# a; v, [
// SPI1_CS3 ------------ GPIO1[1] -- 18; f$ g0 _8 p# y: I
" x; Z+ m3 J! K! ~: f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% T: l, `0 U3 ]9 Y- g% | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 r0 A6 L; {( h1 U+ B0 t( l/ K
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 E5 h5 m+ W% k9 x2 m
3 W; d! K8 J& \) I //DRDY- R; l- t: `7 v. l' I& }
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( ~6 P' n: I5 ~8 a! p+ { // CS2,CS3, F' T( F6 c+ l0 ~! J& U" M0 y; _& B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 K- J1 V9 b0 D6 w GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 H8 b% j$ c9 [. u
//SIMO* \/ C! |3 r8 Y8 \
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- Y5 V9 o3 ]# z5 G4 ? //SOMI' `4 E2 i: ~/ e0 _
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
& ^2 i- i# z3 H( q: Z" d //CLK
$ t) B) N' }9 H. U GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. g9 E* H2 P# [& K. g i1 s# C* \6 @. G7 h
// LDAC
I+ ~; l0 u; F; O# O GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 O* z0 ^6 {# ^, P, [4 l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. ~) X/ ~( `3 f5 i4 q6 S! l! s8 R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 M1 x) s3 C8 v* l9 m0 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 S4 _0 ~8 D/ [& ?- k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& X/ f6 }( N; D5 P/ ?" N: S( H+ t}6 ^$ _% _ f# ?+ G6 Y: S
. ? X, P" _$ m) Y; m" R
int main(void)" w9 e' n2 M# F+ C2 Y
{- r2 X; a! [% I; W3 p: E7 O/ Z" s& S
// 外设使能7 H" U5 R3 c* _/ U
PSCInit();+ O5 k" ~ p V* L+ @2 M, E
; Q7 u: N# g; {* ]6 O; G
! r1 g# z8 J' Q. o$ O6 z" a // 管脚复用配置
/ }# ]5 C& W% H2 f: p GPIOBankPinMuxSet();
7 L! r& b" L( x t. V/ }& O( M for(;;)1 g/ N8 j' w1 f Y
{
* G3 i8 p. k7 j7 l2 J) C9 f SET_SCLK();//时钟正常输出
8 e7 C) k, _# F2 w5 e2 {: N# m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ |: m1 F& D. \8 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 l. @8 e2 |$ q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 r( J3 w8 x- a; q' p) ~' v- \- b
1 F& D) a: P: }- }; G" Q, b% x delay(20);
" _! s2 Y, U8 g# D0 T4 ~ CLR_SCLK();
) o; x+ b4 e/ e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 g; W" q2 G/ U: b' y& B2 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- a6 V/ _- v+ w& ^; ]* U, O: ?+ r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 @8 H- E" G' \9 X
delay(20);
8 n0 A5 }/ l1 Z6 R3 h }- e/ [0 j- w3 v" n. z% ?
}9 B7 [ p; n7 y2 z' s; }
|
|