|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 `! F8 A) f# d2 n: L2 _# h
void PSCInit(void)7 X8 H5 b; d# N9 c5 ~6 T* W
{
5 ~" h0 r* b6 l9 e/ q5 X# u- E PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 m: z8 L. L- N, x9 V: s$ c
}
2 i3 {% U/ T3 R5 ~8 T: g2 L
1 d; |# a4 t% p, C$ O3 yvoid GPIOBankPinMuxSet(void)
0 S' @/ {/ M1 G% I1 K e( a{( A" d$ R% I- j5 b6 |2 L1 ~
// DRDY ------------ GPIO6[14] -- 1110 p3 m# S1 k- {- M) O" v
// SPI1_CLK ------------ GPIO2[13] -- 46
& s/ k; h% y& @# M // SPI1_SOMI------------ GPIO2[11] -- 44
. A) X9 ?/ ] e2 I0 M' }8 H' Z // SPI1_SIMO------------ GPIO2[10] -- 43
8 M5 a: t! { s' T( V // SPI1_CS2 ------------ GPIO1[0] -- 17* I; o; X8 [6 ]+ V
// SPI1_CS3 ------------ GPIO1[1] -- 18
* w: Q, U6 N+ X! N8 s0 s3 l' q2 l+ E; C. I- }8 e* F5 s+ I; w+ B9 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 d* D% q# r# ?" r i" W% f5 G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
3 w# w8 o* f# c9 F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 I# C# `# ~ L9 y
5 Y, u8 S- _. c. z4 t+ k8 P m //DRDY* ^8 J* s0 P* h7 }3 o3 `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; d. l+ s. t7 U" C: V
// CS2,CS3% l2 G- f* X6 O( X, N/ `9 Q* ^
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ }. Y- n1 c+ s' Q. Y5 z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ }/ d: W: d' j3 R* d) ]) G; [" ^ //SIMO
3 @% v. |& ~% b0 I9 L8 l GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 `/ o3 ?& b& c$ i/ X //SOMI9 E b+ e" E, K3 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; Q+ A# x. w& h; [) L
//CLK8 a- S4 W1 }, n, D
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; P5 S# e* S$ m7 b) q7 L0 V+ M. t
// LDAC
/ o0 x& O/ m+ s0 b5 O; s GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 J4 J4 K1 @- E* H# H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ E- t6 ~8 j/ _5 n: }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 U+ A; }. c3 m6 A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
4 Y% k" W9 D; W6 g% x0 x0 O1 n GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
3 a" t" B9 U& M2 \; T. X8 ?}4 W+ x x8 p2 s0 k* y. k3 G
" G, T* b) O8 C: h% l3 @8 g9 V6 A
int main(void), m5 t6 Z9 U! \
{$ ?! T" {" C8 k* S& ~
// 外设使能) C( n8 d8 l9 e- M" F5 C& A
PSCInit();
- ]0 H7 y. L5 {3 A3 x
9 ~3 G. p6 j8 [( o- T
8 Q5 P: m R4 F' o+ h# |! p8 i // 管脚复用配置
2 C% T4 ^7 Z' |& ~' K2 ^( | GPIOBankPinMuxSet();: ^# w3 i# e6 C% n2 Z7 \
for(;;)
# L8 _* ], m2 L# `9 k {7 ]' j0 k8 m; J3 U" A( O- a- s9 F
SET_SCLK();//时钟正常输出# E( A7 |- p) L) W# I6 g* t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) }' c5 }; A! a9 M$ g% S$ n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3( j$ ~( A0 L# @8 K( \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 |. v8 w. f8 H8 s' }
& r* d! e5 k9 ?) l9 B delay(20);
2 O) I" v1 d; u3 t) U, y CLR_SCLK();
- y8 i) ~% ?) ~/ k, F) c* e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& K# i' d2 q) s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# W; G/ N- f( b. I! K. ^7 w6 y5 D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; T; \9 i! d) P3 V# b
delay(20); e1 \, g2 Y3 m5 N0 v
}
3 i+ R: C' C3 S. z* X9 [7 y! ~}
/ |, F$ Y' T, ?. n0 ~8 v$ G9 T |
|