|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ W! r5 T( t& L; ?0 J* d9 c/ Y
void PSCInit(void)) h$ k! M! T) f) i; W) L
{
' y, p' V( E* j) N1 j7 K5 C0 }% ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 g" k1 c, w/ O" J( Z* s$ R}
: z* U3 H9 J* u6 ~& W* p* c5 z' S7 A- o% V
void GPIOBankPinMuxSet(void)
4 F4 f. s+ E: G; t! q{
0 e% c2 Q# o. Y( ^. G7 J4 m // DRDY ------------ GPIO6[14] -- 111
* v% J' ~6 | a9 t // SPI1_CLK ------------ GPIO2[13] -- 46
8 L6 s; ?. W1 G7 x. u" X // SPI1_SOMI------------ GPIO2[11] -- 44' i! Q+ e6 O& N, m# l" \5 a! k7 c
// SPI1_SIMO------------ GPIO2[10] -- 43
`; g% F/ S P // SPI1_CS2 ------------ GPIO1[0] -- 172 }" ~' w; |+ d/ [8 g4 s( ^* }
// SPI1_CS3 ------------ GPIO1[1] -- 181 f, c+ C- e' ]/ o
8 |* P& B0 x2 e1 x! F& ]# D* U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 }( i: ^: q/ |* A5 R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; C1 l# k+ {# w/ T+ ?) }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 a, P# H4 Y% `9 Q8 s+ O* \6 z% x, j" d6 @' }
//DRDY
$ ]8 U! Z" ?9 D GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' U4 L: I; o& ~ // CS2,CS3$ D/ M" ?0 h1 L, F
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ N' H2 y/ g8 |
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* }6 x! N6 V; k+ x1 W
//SIMO
$ {6 G3 G4 p# O7 [ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. W2 {0 h2 [& x
//SOMI/ o- p, N# {3 W, v' z1 C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 ~) O5 L v" _/ w- }5 h) v
//CLK
' k+ n" {% F* _- Y GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 K0 R/ K7 z- ?4 a# t& Q0 w
2 i) h( |8 y& v1 l" P2 x
// LDAC
4 N- m1 Y: b" \* | GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 ], h2 q% U4 Y# i0 D1 s( O! n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 T8 R- F3 d6 M. R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& Z& I! k! d1 E7 Y6 T; O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) R, Q; S+ c+ v/ }5 a1 z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ L, U: G0 w: q" R4 l% ?}) e( V, ]6 n% t5 |. F& {) \* N
0 }% B2 w P7 [' K: i- Eint main(void)
6 c6 v# C; V U: R7 x8 L% J) n{( c- L5 A( B% @: d
// 外设使能
- H$ s3 ~8 D8 x. o PSCInit();, [: l+ h3 R5 I0 }
9 L% d* B" n* t
W1 y* J7 ]& ~9 w0 \2 C9 Y6 p // 管脚复用配置7 C% _# X% Y' y# j) w3 Z# J1 u$ ?
GPIOBankPinMuxSet();' V+ d0 ^, n& c
for(;;)9 U' J E) }/ c6 T* |, L
{' d0 Q, C8 }( @) V G6 p
SET_SCLK();//时钟正常输出* a8 q- X$ b) A/ V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: H, O1 q; k0 G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 l$ D2 f2 Z* g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 ?0 e! Y: i( }) E( f( a- u- N5 B c d/ w
delay(20);
9 a$ k' R) _/ ?$ n5 z( ~/ d; l! H2 W CLR_SCLK();
, I& l" [6 I" n' G a1 H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ n* T+ ?& p. W/ }( P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 ]' ^% w7 o9 M" g) {" B# }" F+ W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: |7 w5 w5 Q: l4 M# P delay(20);9 ]4 P7 {6 Y0 [; m& r
}
3 L6 X0 M4 Z/ T8 @ A3 y} n( \5 {& L4 S& j, |* o) R
|
|