|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. S" T! ~: D& o" g+ I8 Vvoid PSCInit(void)
& }% r5 l1 S5 d. K: N{
4 {5 @- l# U7 `: l' I PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" o7 c* }( \% X3 e}
- V8 E, `7 @8 `7 w( B: }9 O0 b, Z m
; a, J. t+ o6 y7 z; @- X3 y# fvoid GPIOBankPinMuxSet(void)% r5 ]% Y2 y: m9 \% y
{
4 E/ C/ H7 o# Z: f, l/ H- x6 f5 n7 m" b // DRDY ------------ GPIO6[14] -- 111
" k# h# g# S) N) y9 ^! \( h0 s( |% z // SPI1_CLK ------------ GPIO2[13] -- 46& \8 V4 g! F6 l( B
// SPI1_SOMI------------ GPIO2[11] -- 44; r% Z k+ I8 Q: R& j) |9 z
// SPI1_SIMO------------ GPIO2[10] -- 43
7 ]$ l5 [" @% [$ Z1 b+ _ // SPI1_CS2 ------------ GPIO1[0] -- 17" t" {2 q* x4 ?, t0 Q
// SPI1_CS3 ------------ GPIO1[1] -- 182 @4 ~: Y7 d/ v4 a4 A6 v
4 @3 ]( z! I- F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; M' T4 Y, S8 X* a5 z& {1 U; z. p' i2 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- L2 C1 D( D3 @9 H" y# ]5 q( A7 l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);5 q* G) j- L) I
8 o7 t5 [! B* D) c( X. N //DRDY5 _/ y5 s* _8 B8 z: f
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY B4 v4 c+ ~; `) y9 q! L" u9 ]
// CS2,CS3
$ {; {+ a J, d: C GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 ?3 n0 l2 N% X4 T! Q% U& o
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* U( B8 x7 g" t! |) X Z //SIMO
' t, P0 p( u; W) h% Y# j7 |9 z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( v( W% U R( h3 I4 O4 A //SOMI; u H* t' h1 J2 M
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 {8 D* h1 p7 \/ [: v8 [
//CLK
- p. P1 b w' x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 V; y; t- \8 X: s" u
4 v8 Z& R; l* C( j, D
// LDAC+ s" |8 a8 i* v. z; j
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK, b" N1 i t0 T7 G( ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" G0 D0 ]- r0 g7 }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, [9 E$ E: M2 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' `4 A8 [7 \' G" b4 u GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 x4 r) z; A% h; R6 p) ?* D
}
; j" C8 y% t8 P3 C1 R* r
3 B ^. l0 w6 P/ c$ u0 k: tint main(void)+ m- `! z2 I- E6 D. B5 f }2 S5 P
{
5 v2 D/ b" N- o" b; x/ I9 E // 外设使能
- X5 l7 S1 w1 B# L" O PSCInit();4 N, _0 y. p- o8 C, H7 m
& `. ?, r2 H+ Z: v" R' _
8 j% k; c% w, H // 管脚复用配置$ P1 p t1 b. D% D: O7 h
GPIOBankPinMuxSet();7 q. R( N6 |; y; X! k
for(;;)
; p8 a' a# N) T- i+ i {
$ {/ }8 Y$ ~2 ^2 l7 j SET_SCLK();//时钟正常输出+ \* a, v1 R, L1 i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
T1 \1 P- d. x( F, X, ?5 ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" y- G. ?" M' w3 K: _+ j& h4 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: @' J S0 y- C& q/ U
7 G# p6 p5 E9 m: C% ? delay(20);
7 n: q; t) p+ c# R CLR_SCLK();
- B& d4 K5 o7 F# [4 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ C9 p9 K: V. Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: T5 C, A c7 J4 J5 r8 z! b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 u' t2 u: x2 l3 S# | delay(20);
5 O7 X" h9 E& ~ }
/ z9 I8 g. r2 ~( r6 G' c4 S+ a( F}
b0 V0 l2 R! O |
|