|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 _& q9 ]$ ~! M+ ?5 {( o( o2 D; O
void PSCInit(void)* a' S1 r2 L% C6 k6 y
{, b" \! E: ?; ^9 ?% Z1 d& u9 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 o0 U! {, Y# `1 R
}
3 v+ _( U3 t* Y: }- r. k9 B7 n, B# ]0 g
void GPIOBankPinMuxSet(void)
) O& |3 U* E3 W. C' f3 J% l Y/ l{
9 p' Y4 N" X! f // DRDY ------------ GPIO6[14] -- 111
$ ]" ]3 P- [0 G1 |8 V // SPI1_CLK ------------ GPIO2[13] -- 466 @3 R$ t9 f( m) l
// SPI1_SOMI------------ GPIO2[11] -- 44
' t2 I3 D. k, D: G5 P% Z3 g6 y- W // SPI1_SIMO------------ GPIO2[10] -- 43$ }+ T; {4 k8 R$ l# j1 Y1 I) o% f7 Y
// SPI1_CS2 ------------ GPIO1[0] -- 17
( m7 K0 n+ E# p% W5 @, c0 M // SPI1_CS3 ------------ GPIO1[1] -- 182 \ n. B% _! E6 Y! M
- [; F% l- z' w6 \5 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 h; w# e7 b$ n$ G$ ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); v; H! S7 i" T# p* f+ D# G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ H, g& ?; \, `( e; u* p
0 ?, Y. m8 D: {' G* R5 _; R1 }
//DRDY0 k. _# P( F- z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ C6 @- g& E$ t. H- S
// CS2,CS3
3 x b5 F- p4 K- ^) H- \& V* W GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
r7 t8 T3 B8 I3 y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# V0 a; L$ c8 {
//SIMO- k& J) s% o$ }$ A, `4 X
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO5 M G9 p3 I' }* c- i o
//SOMI
$ \# r8 k& ]% Z5 M( p$ A4 ^ e) s GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* u0 }) g9 K; G. S8 T6 Y. J2 m
//CLK
- }5 ~+ R- ~3 q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
6 }( j5 G& O) m/ Y; P/ q( o' ^. {8 ?/ o
// LDAC, n4 w" Z8 K. b; c8 r% M4 e
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: x7 S8 y. r3 D& n7 h" D+ }3 C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN ~. [: G8 c6 R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! e/ m# A( w8 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" |. w9 C' i1 J' O) u1 T
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY8 l6 u$ J8 o3 Z3 k
}4 N/ R$ W9 ?# m% V4 [) I( a
2 k- s l1 h: F4 r' [5 b1 R7 E
int main(void)
1 f+ n5 m% M7 ]. [4 z, W{+ P U* q! R+ ^& I7 s, ?' f
// 外设使能
e" ?$ P% B; ]& t1 w3 O PSCInit();" H8 F$ N# S6 A+ ~: H0 P8 _! Q, t
, A8 q; T, S! q; ]2 v$ d
4 f- C( v, K# C( d2 \" P: i. u8 n // 管脚复用配置
6 t" S9 M: m# n x6 |5 X GPIOBankPinMuxSet();
7 f K, B' b- e7 m+ U7 u S for(;;), r, m4 J- G; B2 Z- y4 V! B: P
{
6 |. p, `4 U0 P. S3 U6 _ SET_SCLK();//时钟正常输出' y9 `- R9 H% r8 E. \7 b0 G5 @- G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; |) y1 K+ O9 T( \- s' Q6 c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, X- A3 F4 b& \# u; @- J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 D/ p. `; C8 V9 F# H! x) X) V" K% h, H
delay(20);
9 q) u/ ~) C2 L% A' ]* V" c CLR_SCLK();
6 i4 y. ~& w' A* d8 @$ j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* H3 n$ @5 v9 m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 s* H1 \, @' ]- I7 F4 a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. @7 L, g( a& L0 Y/ S delay(20);, ~( z' T5 t& r& g$ d6 F" Z# x
} z8 Y6 q9 G d4 i
}
( d; [0 q: d3 p# C3 t% I |
|