|
|
使用下面的例子代码,不能使SIMO和CS为低电平:1 c7 y, _: m* Q- v" R: e
void PSCInit(void)4 ^5 c7 K9 v* \9 [$ V# T
{
! G# q; w- I9 m4 }4 r1 c; p( l PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ ^" o3 Z1 |- p7 y! p2 [
}# \! t0 X- }$ `$ Q
2 u* X% t5 p- H2 [/ @% P9 b* Xvoid GPIOBankPinMuxSet(void)4 j6 b( ^" ?! ^% _( t' ~
{
2 F# c) {: C9 _( L0 d/ V" F3 Z // DRDY ------------ GPIO6[14] -- 111
- L N6 b; `$ B( S1 V // SPI1_CLK ------------ GPIO2[13] -- 463 e" Q$ P' l r2 z5 }$ V
// SPI1_SOMI------------ GPIO2[11] -- 44# v: C: A% Z4 t! |2 D
// SPI1_SIMO------------ GPIO2[10] -- 43; a" ^: R# S0 O. N$ T4 W
// SPI1_CS2 ------------ GPIO1[0] -- 17
5 M& C" p0 B0 n# k% ` // SPI1_CS3 ------------ GPIO1[1] -- 18, P* a1 W& r9 m u: e
' K7 w& e3 u3 V4 H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 I5 j7 P" `" M8 @$ ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" v" Z- [* {; e- H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! V, v! c% R- T: u- ?; R ?2 K& t, V4 u: o' n, ]
//DRDY9 R7 a: L- V: }" S# z l
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ K' I) L/ E9 B# \, t
// CS2,CS3
3 `) u* l5 H% S | GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ Q- ]' v- a4 U! ? GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ A) T1 T0 h8 Q0 A6 m //SIMO% B0 l% z1 Q( H# q( R6 g
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 i% ]. H# {" {* r2 B+ s5 @$ t' `
//SOMI' o- k! _- ?- [4 y8 k4 U9 E
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 l- x! _+ V$ N$ S0 _ //CLK
! ?, |6 i4 z- S- z. f9 Q# V GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. H% r8 Y: ]/ I Z
1 q5 @7 A0 c3 o+ Q# [7 ?, N // LDAC
$ g" _ r0 Z( q. m GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( E5 w! y/ F; ~9 a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 Q" v2 [5 u" }+ C/ v3 S- v9 o- V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 c/ r6 X, [' K! b7 e8 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: I8 J. f) g! N$ [5 I
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 J5 b; W* R+ [
}$ \: s. A+ J* o% w
' s, ]( U# @ u, D8 y+ x
int main(void)
5 c. @9 {& q7 |8 Q1 T{
1 n2 X/ B+ ~: {7 [9 C: L [; F8 v3 D // 外设使能
7 M3 {+ ?7 T; I' O* ^ PSCInit();
0 s( w4 p6 X* P* }# w
" i2 Z* I/ s7 W / X6 M$ t3 D" {
// 管脚复用配置% C% a0 x4 }* n& X
GPIOBankPinMuxSet();+ R+ U l4 T+ t, a0 ~
for(;;)
! \7 E8 b2 E, w0 ], d/ I {
4 l9 \7 x- V) C0 f# C, a, V. p SET_SCLK();//时钟正常输出
1 @8 f# @- C* f# T W+ Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 Q1 I, |" q) O; o+ R1 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 k0 w$ o+ `* x) S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
) _, R2 `; L3 G- s5 q
$ i# g4 \( P5 Z C X; M delay(20);4 l# W1 j$ |, |! u
CLR_SCLK();
, V. l. O6 K1 w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3/ y0 l; p+ q! ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 k, T1 g: T% C/ g" l8 B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; @' e( ^ N) h8 p; r, o* X delay(20);; d2 |4 F' M9 [5 C4 ^! ?) H7 o
}5 J9 o5 c9 @) g c0 e) V3 m8 J
}+ W9 ]7 s+ m( O
|
|