|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 b4 J* J5 d% I! v( Jvoid PSCInit(void)
# H1 r& i2 v% D) x% q9 R+ o' k{
5 @3 r" I) L3 U! O9 O PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 m- q' @6 W7 R+ l. l2 X, w
}- N3 q+ ?( U- T
+ ^" c* [2 a, x5 \; L6 x. F; Jvoid GPIOBankPinMuxSet(void)
& v h" T+ U: r: t{
; N3 X7 M+ n; c" y6 D6 D // DRDY ------------ GPIO6[14] -- 1116 t" @ z' z6 z+ p0 q% L
// SPI1_CLK ------------ GPIO2[13] -- 465 h3 Z) z$ x4 m1 H9 r: v) w
// SPI1_SOMI------------ GPIO2[11] -- 440 A, o& S$ A4 O1 q
// SPI1_SIMO------------ GPIO2[10] -- 43/ h1 A* U$ {4 _
// SPI1_CS2 ------------ GPIO1[0] -- 177 e( b& u$ r+ V! o8 F$ v
// SPI1_CS3 ------------ GPIO1[1] -- 18
- Q- G1 x: t% E: F: o' g7 I5 Y, h) w8 b T$ u9 X& T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 V7 ~$ q# v& w: D1 Z" N: N* w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ t! m+ W' b, m* p& q( |; b0 v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 j! d! R- Y0 [0 @2 F, |
) u7 f4 X# \" ~5 [! K" I( C! k5 k //DRDY( ~, Z7 I) Z' }4 e) X; Y; t3 \) _. `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 d$ |& }) U7 T+ @# U0 l) N" Y // CS2,CS3
' v5 l6 x4 h6 w1 h; Q' N* O( } D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* [0 v5 b. V1 U4 H0 K& c' J+ l: q4 u GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 ]- {" i- c: Y( T2 e //SIMO
4 y% A( b$ |, s$ K GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
`5 R; U+ u3 X+ R0 s //SOMI
- M, z3 B, Z. D7 Y1 }6 | GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 o" U& K2 ~: T" g: n/ r //CLK4 T; |) o9 B' L L
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) u9 \! f3 C! u' Q7 x1 p
" l7 c+ W& c- c$ R
// LDAC5 v8 o: C% {# t- F5 Y+ k" {9 P
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" N" |- r8 R1 F: G2 e! ]0 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" P/ @9 m; |+ x! S& }3 k% n5 P8 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# X6 O, @! J4 }- P& v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
, `' v( u* M' S: ?5 \ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 A7 s& A. y/ m}) H: \1 D! c- t t" K5 W8 d7 T+ P
% ]9 j! r3 D; S$ `' l% R( w7 `; _int main(void)
- g7 w- x8 E L) F1 e7 Z) a+ a{ @4 _& h1 Q: h8 A8 ]- y
// 外设使能
% B4 D2 k5 E( h/ T PSCInit();# G5 r' Y% f/ t( d7 R4 O. w9 {
; W' Q3 ~1 `; j/ m! x4 X3 h
- T/ V2 A4 @0 h1 o) m // 管脚复用配置+ s5 M: t% m: J3 z
GPIOBankPinMuxSet();
9 h- ?6 j9 `9 ~4 c) ]7 b f for(;;)4 } o# u+ M# D* ~& Y5 e
{
3 i6 ^" d8 ^- `+ e2 E. V SET_SCLK();//时钟正常输出
4 }( I: D. E% \) ?, ] GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 E. R- F) I9 ~% j$ a8 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 _( j$ V& G$ a5 }5 v4 s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 z9 _+ f B) B& i0 @" l
9 M. B X$ R% y- j3 x- v0 r: m delay(20);
) Y/ A3 T- v: j1 `* C CLR_SCLK();
3 w1 W; i2 {* M$ c$ d- M/ i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' H$ u! n; @3 y' k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3( m* F3 A5 B' n. J" @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- g- I1 \. m7 ^& [
delay(20);1 E2 _6 T* S) J6 |% V. Q
}- i) Y' |& l. R+ W) ~/ r8 p7 t
}
) Z) T* R/ S4 @ c- h. O, F |
|