|
|
使用下面的例子代码,不能使SIMO和CS为低电平:& p1 ~4 h, H9 U- a" _
void PSCInit(void)1 d. b R( Q# y9 Y
{+ z6 u4 e. Q0 v% h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# Q& x5 E4 g2 I
}
9 q' b5 E8 T6 ^6 M) @; r% R
$ P; t/ S, N5 p7 e O+ P: vvoid GPIOBankPinMuxSet(void)- V. `+ L& ~5 @; `* g4 U% f
{( x. B+ P. {) v: m+ f; Z
// DRDY ------------ GPIO6[14] -- 111
1 h, a7 m, X/ L' ` // SPI1_CLK ------------ GPIO2[13] -- 46 D2 o6 N0 ?+ R( Y3 T# D. D9 t
// SPI1_SOMI------------ GPIO2[11] -- 44
, O! v$ j' @* S1 A: O8 H // SPI1_SIMO------------ GPIO2[10] -- 432 j$ ~1 U! }$ x5 m4 a# f
// SPI1_CS2 ------------ GPIO1[0] -- 17
' \ T- _" ?3 e' T/ q' L$ h* \ // SPI1_CS3 ------------ GPIO1[1] -- 18
' `0 o: w' V0 ~6 R2 ]! T" x$ }- |( M2 {8 N6 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, y( P E% x9 p( P3 p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 Y% \* X- N! C1 m( b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& [# V9 S3 h) U
; D! v a# \% r2 x, H* `" J
//DRDY1 ?/ q9 f2 x; o: u
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
# \% v- V& B" @0 _; }0 |. Y0 H+ y // CS2,CS3
& P2 S$ H% q( S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: B, [' q) O7 d8 m4 [4 \% f) m0 | GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
2 j) C% P& Q2 Y. S# c4 d //SIMO
1 I6 w* s0 v/ @3 j GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 z0 H$ W9 h) W6 {8 ^$ n' y4 A) k+ E
//SOMI: F/ e* F1 |! n5 m" C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 o- J* }- v5 k4 p$ u$ @$ D4 X3 k
//CLK, x& u. I, {: |7 |4 |- D
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 M" [- u" C+ _6 m# L8 s+ w
3 `3 U# X+ {! N
// LDAC. a2 v' T; F4 G% ?
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 n9 }+ p5 X' m! b! M6 {8 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ M5 f7 w1 F) ` K! X2 r6 N$ D7 t" ~; b! L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 Q& H" r3 Z3 a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! K: f4 U% \5 u1 w
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ m- ?0 Y6 r& a R2 n5 r- a}. k3 R5 ~! Z8 t; ?) {) D6 W. P
0 h: n( u' p2 Y3 c& [* Yint main(void)
! ^5 o; d8 h4 |* a{
1 M7 _6 R( g0 k. H // 外设使能
+ K/ O* b+ a8 l* F8 E& V PSCInit();
4 s6 Z3 d6 s M5 V% E& u. ~+ j1 _, v$ D. D, L8 ?
) ]! g+ s9 e7 @9 N9 ~; u" I9 w
// 管脚复用配置
: r3 v4 h6 T# N ^! n6 g GPIOBankPinMuxSet();
! C' Q z8 P& n% x5 s6 `$ l for(;;)9 m$ h. [' g6 i) ~* m B
{
" g) q" y ?. a* P) j/ ^ SET_SCLK();//时钟正常输出& Y) j9 M( O) T" j. A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' a, ^; a# ]7 f. v# F$ \! E$ L2 @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 u# g2 V( w' B9 ~" W( \. d8 P$ g2 J- @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" `0 w, T! E. x' O
q! {3 w1 J0 h& ]" b delay(20);
$ T: ^4 q! e. a) f i# Q, Q/ t. M; f CLR_SCLK();8 [, E! }8 [! k0 M2 y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
- y3 z) y6 _- N) D! N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 E, T# [6 k* {7 h" c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 r' o& [# h% I4 B6 q delay(20);
7 I" x% Y z7 t }
+ y. o6 f) [+ [0 g}
* S m1 z8 q( b% f3 z, E! p |
|