|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! |/ Z; q* o5 j3 S) a$ c! t
void PSCInit(void)
8 C9 B& }/ d7 w. K0 e/ l; p{
0 O1 C; Y) t+ N) S: V PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& ?6 t, E7 o; g6 m8 @* v3 g0 I
}
, s" M2 b3 [2 W" D1 Q- g1 S0 {4 V+ ?6 A! B2 D% q; j0 a3 S: Q
void GPIOBankPinMuxSet(void)5 y1 [; O6 K% G* K) H
{6 v$ F. |8 h3 V3 R0 h; f
// DRDY ------------ GPIO6[14] -- 111
; F" u+ w# U" @! m/ B // SPI1_CLK ------------ GPIO2[13] -- 460 R) U! p$ W' `( [: j5 J' u
// SPI1_SOMI------------ GPIO2[11] -- 449 I7 I5 o4 r# S% n b+ |
// SPI1_SIMO------------ GPIO2[10] -- 43
. l6 ]) r P% c; n // SPI1_CS2 ------------ GPIO1[0] -- 17
7 i: j" j, t8 {1 _. v // SPI1_CS3 ------------ GPIO1[1] -- 18
! ~* z! v# v a0 A0 R* \. ^ M6 }4 V! K2 q, \/ l; @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( ^4 W* o2 S* K% s& O/ i h. C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 Q# D. ^; {/ D- I6 D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);* g& z! @* w$ ?
6 n) h# r# Y5 G
//DRDY
! x0 Z! y) R- ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" V3 S8 N& \. d' L4 O2 M- I
// CS2,CS3
~# q* W1 r$ E GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 S# x8 D1 b5 d! r0 R$ j GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& \" ], m% p% t& d& }9 e //SIMO
7 s! @5 i E( O- C# j' u GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
1 c) J: i7 |5 r" P! j //SOMI
) P/ B4 v5 m1 A2 Y/ e' T! b, X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! d. ?2 f+ j7 b! h
//CLK
0 i% L" L: D3 d7 o- K GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* M6 A/ T. }) l+ C) U# I8 n9 W( j' v- L- A5 C3 ^7 }
// LDAC
$ k& _" W( g& ]# B" P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 J* x X& i4 n; c# V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ D' Y5 R$ ?( J
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 p' E( E) z: R6 G( s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" \( ^% W( w+ S* V
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY; v! {3 \8 v. e% Q
}
/ } J! l# u9 u. c. H. U0 d
& F# Y0 s1 X5 T# m P) N" `int main(void)+ b/ w9 }. h2 q6 k0 M
{* J- z/ U; i2 _. ]% p
// 外设使能
( }; F! G! K3 V+ ~: a PSCInit();
' B% O; [: F, c- R0 T$ @: R; K& S5 |6 z4 U+ f
2 ?1 [3 n6 @6 z, G R // 管脚复用配置
, T8 B$ r9 O( p4 P7 a) ^ GPIOBankPinMuxSet();1 \: L: r' t8 q
for(;;)
$ k2 d0 K8 ]4 d' `4 v {4 f1 A: X+ H& s
SET_SCLK();//时钟正常输出2 d6 u6 P' [7 ?" k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 L' `( j' K& y6 d' z7 ^ w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
. c0 ]7 h0 r1 h' H/ s. n: c( R" u' T. [* y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; z# p5 t* C6 v. \4 t( z+ D) m$ H; E
; |" {% ?; p% H. @ delay(20);
b6 _7 |2 s+ s7 C L CLR_SCLK();! b! L% A& g9 }% z _& Q6 }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
J& e# o, g4 p `# n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- J! j; m- A1 Y s9 W- h0 w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
W) h4 Z g( |- m3 ^6 s delay(20);0 \ O2 R4 ?+ C" R, T1 l
}
3 Y* d8 ~3 N3 p& d$ i& Y" |! o}
3 O* \: L1 O+ ~& a& Y& @0 O |
|