|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
7 c/ F- W. f9 J+ P Yvoid PSCInit(void)7 m; n$ ]5 l, [ H/ L; D9 Z0 z& ?
{. ` L. s' m b. S" {1 X6 F" u; u' R, K
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" s) s: D, t. c2 r8 ] u}& l& P) o; R. J/ h/ s; t2 s
+ `! O, C+ K' n3 Tvoid GPIOBankPinMuxSet(void)
; q8 v0 L9 c2 [ T- _8 n{
/ G+ K1 k; v0 P! ^7 ~* U // DRDY ------------ GPIO6[14] -- 1112 A9 _9 I1 |3 d2 O/ O* F: K
// SPI1_CLK ------------ GPIO2[13] -- 46
/ W9 |6 x+ Z$ H& E9 p& d8 u" ~ // SPI1_SOMI------------ GPIO2[11] -- 44
7 k+ X$ l! j& _+ h1 D // SPI1_SIMO------------ GPIO2[10] -- 430 ~9 |1 f8 i' L$ `6 |% s7 u6 u* i
// SPI1_CS2 ------------ GPIO1[0] -- 17$ U8 [+ k) x, M+ h2 S% Q- Q
// SPI1_CS3 ------------ GPIO1[1] -- 18
0 \. M M) r; s0 r1 R8 A/ V5 E/ C
9 w% Q) j% Z$ ^$ f. B4 x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);& }6 H6 d& m4 P% n6 `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 c5 y6 d" E5 N) ]2 V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, g2 C5 h. [( p: Q
8 d# R! Z- N1 s0 ]0 u" E. ]1 m //DRDY
" a( a5 o+ ]3 V% J9 m5 ?3 j% R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
$ Q7 H+ r9 T1 o* j$ y6 W6 p2 e // CS2,CS3: H- ~4 ]; [* `
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% x. S" u2 m" s. _6 z/ u. F$ }+ j GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ |( O7 d0 I( h, k; S3 R
//SIMO4 W! V h# o2 k
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
^, F$ d3 c: @; |" i T //SOMI) W! ~) u0 j+ D5 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ u3 U$ E1 [7 ^; |; Q
//CLK
, `6 P: ?( T3 Y4 A, r2 G* d' f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. i7 o) c; G6 {2 r% e
9 V% Q, d& ?2 f. v' T // LDAC* r+ V. @9 I4 [9 G
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. F5 B* G3 x" f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* M) U& e, K1 w. {" x1 y/ E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 n" O5 S% ~% ~" g; Q! Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 C: g; X; m3 t2 h) I) Z m0 V' p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
. _1 ]1 `2 |. b( J! C}
& R" g7 d1 I% T3 t. c& V
7 F; P" f) M' z7 U" \int main(void)
6 r3 s0 s. b' j; T6 _{
7 K! ~$ e2 I# P, _ // 外设使能2 U, H0 G! \8 ]1 v2 _
PSCInit();
1 K3 V7 \: r) j# d2 ^3 q I: C) W6 R2 l* A+ R
p9 V6 i) y, d! k. N // 管脚复用配置& L3 ]/ _) k* D: I6 ]' P
GPIOBankPinMuxSet();
* [( h4 _+ I1 h* X8 Z& p1 j2 H for(;;). _& _ ?. A' u* s3 ~
{
8 s) b7 t0 R) N5 L SET_SCLK();//时钟正常输出
2 A. D1 {* D4 x/ Q: W! e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 C( x/ D" k, C* y* _2 Y& G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 J e* x/ H# F# E1 @$ d1 A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 i. n5 @) P& k$ G% \* p( J2 M+ ]8 \" O& @
delay(20);
7 }4 d5 P( x s W+ H" E3 f CLR_SCLK();
$ b- Q# V7 h7 Z# h6 M( ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS37 W9 |7 B9 A2 g/ ]% m: D7 O$ i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" F6 s. x! u, V0 X$ T- |3 E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% z4 G1 o" E0 n+ x4 R
delay(20);: ]# }6 p/ d: q' o7 t y& T/ s
}
# R8 u/ p% D) |7 H}1 r" ?6 K1 g$ \7 h3 ?* l& r9 h
|
|