|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 V, ?# w. ^& d Y. [- Ivoid PSCInit(void)' W7 f& `) o; ?- c0 d
{& a. @4 [ j, |$ A
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 y7 {* e9 G) c, y5 d
}4 J( ^- s. k4 {+ F: Z& Z6 J
8 J$ r# n1 f. F% \0 q2 `# `9 {" qvoid GPIOBankPinMuxSet(void)
. F N% _* t' L5 v1 K+ a' z9 U{# Y* ~+ ~& e' P
// DRDY ------------ GPIO6[14] -- 111# F# e: I$ \" i
// SPI1_CLK ------------ GPIO2[13] -- 46! B' Z6 v. t5 Y! s
// SPI1_SOMI------------ GPIO2[11] -- 44
4 D) X! S4 y ~" J // SPI1_SIMO------------ GPIO2[10] -- 43
4 `+ W* Z/ D( U& ` p // SPI1_CS2 ------------ GPIO1[0] -- 17( D: A. b6 p- E! L! V2 k7 r
// SPI1_CS3 ------------ GPIO1[1] -- 18) [1 d; u: n( i) |2 Y" X# S" Q
; ? y+ O, H) F! R6 X4 e/ M9 u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 h' ^$ P! J* T6 p" y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 y. X }3 a, ]. j
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);. Y4 g2 e/ x* o" B( \
! ^& C9 ^% j7 l8 |7 |0 F //DRDY
9 D$ r* `3 p4 q: b: P GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' D. |+ j6 G; |3 a* m: [ X1 U // CS2,CS3/ |) c Q& e5 F d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2% X6 z; m @- s
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3% o" l$ A; |2 Q3 ]
//SIMO
0 J1 D* \# j$ J# ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 h# J6 C$ | S/ E6 T' f0 ~. |
//SOMI3 f8 w- q4 Y) \( Z9 I' t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) \. L5 g2 A9 T' {! W( d& Y/ I! q //CLK
$ ^& i! \8 e2 H& q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# G* x; w- T- X' w
8 ~- ?$ W6 i( A- g
// LDAC
: D% |- L6 J% G" M- N GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 {8 O8 j( b* `4 C, h( V4 t$ Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* M( ]+ B# T& o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 ^/ w0 H( ^2 V3 Q# V/ D) e' O8 d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# `6 z+ X& t7 P& Y8 F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY) n( [3 r* F1 r
}
7 U8 j+ b# P0 {0 Z* F9 ]" k* [
! G$ ?9 [& t# s6 {1 T2 V+ A1 p4 Gint main(void)
9 ]3 q' P7 Z; b# ~ X9 T7 p) t7 h{* t$ \3 d$ h Q6 I" `( B
// 外设使能
5 W6 g0 H4 X1 B! H" S1 d3 @ PSCInit();
8 l' E( f% m- s2 V5 t, f
+ U5 Y3 G8 I- K 8 r+ ^7 I" B: R: Y
// 管脚复用配置5 X. P" q' X+ ^+ n! L
GPIOBankPinMuxSet();& R& y1 _2 @7 Z$ {: G
for(;;)
/ z, g, K# a+ s {
1 v* l B, l5 ?% d SET_SCLK();//时钟正常输出
4 w& b4 p- O- M' c$ F; X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ `/ V' P5 A+ |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) k, b; h- M& X2 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& \- Y! n5 u& {: b& {& A" h* C7 j0 F
delay(20);9 f; d0 F, b$ z7 D" K X/ f$ S
CLR_SCLK();
. k; u* C' j; x9 t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, c' g" p! H" ~+ |- o6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
) R% O4 L; e8 E* V" T P9 R" ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' R Z: e8 `8 D' f/ H3 B delay(20);
* D d% d; u/ ^' n }
# O- m4 J9 s) F}+ x3 i w1 t( S f% B& f! c. D
|
|