|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" Q( h; q0 r) X0 W0 mvoid PSCInit(void)* D# Q4 h5 E; H9 Q' u
{# X8 Q$ E/ ]2 W4 U- _, `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' [5 H! b' ]6 `( d; m- t
}
' q5 X: \+ E. @& C- t9 y/ ]! Y0 C' q6 a5 N( A# n
void GPIOBankPinMuxSet(void)- g( P- s7 i7 S8 @" V/ Q0 P
{
! b7 d3 L1 ?' S% y- ^ // DRDY ------------ GPIO6[14] -- 111
( w: U1 |, {0 V" V6 B$ T // SPI1_CLK ------------ GPIO2[13] -- 46
/ H! V% K M$ J h // SPI1_SOMI------------ GPIO2[11] -- 44& i& r5 {- L! c; S" j
// SPI1_SIMO------------ GPIO2[10] -- 431 T4 d0 @1 D% W
// SPI1_CS2 ------------ GPIO1[0] -- 176 `1 m" M- O; V( L; X, u' U4 S
// SPI1_CS3 ------------ GPIO1[1] -- 18
: S) U- S% C# R/ k: Y$ V8 r8 |/ B1 w/ X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; T0 a. h# A* Z! x) ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% f( d) L i7 P1 H: s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ O3 r- M. s, I+ k
% t2 M1 ^& {) S
//DRDY
0 w1 H- J# N# u3 F; i# y2 p) D% c! l GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) C: y) W0 X9 K1 L; a, T
// CS2,CS3
& X3 U6 A- }6 \; Y$ B- q& K GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 ]3 E2 c& s' Z! w9 V
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) Q/ i/ u* b3 Z4 i* I8 N; F //SIMO
( i$ E9 }& s" a. L GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" X# M% m' v: j/ h, t+ A
//SOMI
5 ^" Q. c2 A6 F4 X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 K/ ?$ T1 |- u# G7 ]: N, I% E; t //CLK
# _ I8 {8 M' \$ O GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK- \+ V- u) _: {1 Z. E: v
1 N# y% M" ]5 U, D // LDAC1 ], ?+ J: S$ W& c+ w: z" ]8 D* m
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 _' J5 W% i: h0 g/ ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" ]" U- t; H" Q) t5 x% @- i1 ~: u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& B7 j" P" Y+ R2 ]1 C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* D0 O; Q: c1 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 @& n2 B% o( H}- \- D' Y( t; e9 t+ i* ~' \. p; P
E2 b2 l+ `, e$ Tint main(void)1 c% l; k* Y: t' U. [
{+ d. X+ u* e. J
// 外设使能
# J X; }& n0 z, B. Q; c0 I PSCInit();
7 r i$ S) U; V: _0 q0 d2 b7 w0 a* a" P* x0 w
T* Q% |# D# ^" `" N8 S3 R
// 管脚复用配置
4 r8 I; y+ f W" H GPIOBankPinMuxSet();( S. S) v1 O% s* c& q' @# Y
for(;;)+ i8 h1 v+ n Q' I
{( J# l) g1 ?. N2 V
SET_SCLK();//时钟正常输出1 s% T4 l$ g( D4 g6 y( ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 z& J! {& v: X- X9 a2 f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) Y7 u- x8 i$ Q8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 _1 `$ S! O! [$ I! D7 @
$ O8 e' M/ m8 _; G" y- ~' A delay(20);
! c3 `" r5 a7 p; i. K" x6 C CLR_SCLK();# I3 O5 p. _1 u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* X# ~' O. v' h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% {8 b1 O% P' d% @) x' |8 e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( e2 v2 L9 S) o5 g5 ] delay(20);/ ], l3 d+ h/ q1 z- o! E0 W- V
}- U7 y/ }% f1 j' s7 U1 \& P
}
7 e2 `8 B/ K% Y3 N( v |
|