|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 F3 h% M' u7 P% Y
void PSCInit(void)
H2 j% ]. Y4 ~8 m; B{$ p* D. F, |. X
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 J6 j) H$ b/ ]6 o; t}
+ Y5 Y Q l7 Q6 M2 {8 E% m# Y) ^( n3 o' i! n, [7 F
void GPIOBankPinMuxSet(void)
9 B3 ]; I+ W! E- q. D, Z! n{1 n: l h7 g; E1 Z- E0 Z( z. ~
// DRDY ------------ GPIO6[14] -- 111. l3 D! j; ^9 v: O
// SPI1_CLK ------------ GPIO2[13] -- 46
3 |+ `2 \$ z- U1 U& t* b // SPI1_SOMI------------ GPIO2[11] -- 44- W; D D! O0 s$ L
// SPI1_SIMO------------ GPIO2[10] -- 43$ @- L) k8 w3 @" |( {- P
// SPI1_CS2 ------------ GPIO1[0] -- 17
- m8 B% r1 S- C // SPI1_CS3 ------------ GPIO1[1] -- 18
, u- G+ K4 ?! B" [! T. |; [8 W5 U5 u
+ K( k3 K& B+ u* o* ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
! w: Q' O/ I4 s% X* l6 |) P" x; q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);! O9 d, l6 C2 R8 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# ]- m0 ~, @9 }
. G) ?5 }( u0 z! M- |. v6 X, z //DRDY* b# |; p* {5 w s) X
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' l0 i7 x% A/ o0 Q1 t // CS2,CS3
5 G- v1 @0 z: k: y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 e+ |6 Y* c% P
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 x7 n6 s, M4 n
//SIMO
: J. \/ z$ e) x% d$ T$ t GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ ?# ~; F/ }0 y6 U9 I9 ^0 s //SOMI
& Z3 w0 m0 R% W: L* u GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 B7 S1 a5 G/ u6 M. A* I, I% @
//CLK" p. N! s* @( J, ^* `/ p
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# @/ q; g, |4 E& D( ^: D
( j8 e2 N/ j' } // LDAC
, f' e* ]( G% H2 l/ P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 o! C# B! O6 E5 x; u7 A# l4 m {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 @" l2 ~. d5 o; e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 J7 Q0 B% R0 a% T+ ^" f# G7 k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
$ n3 Q, h# e+ _: {+ Q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY: H j! v$ L- q4 o4 Y
}
8 U! f$ p& r( w/ ?; L8 y; {. X, u$ A% q% e" e! j( N! M$ F& Q
int main(void)
1 F, q, U0 {" U2 ~& y4 s- M7 `7 d{
3 n* Z$ N" f) N ^$ K // 外设使能
& X8 d: A% t6 ]! O PSCInit();0 M$ I8 x+ X$ W4 u0 f3 T% a- `
! O2 I0 \* c4 Z& F - [+ R4 T8 I" w W1 t. x
// 管脚复用配置$ q8 e1 o9 A6 L! d
GPIOBankPinMuxSet();
- t8 X+ x* \! D: S+ M for(;;)
: U* J2 Z7 k8 A& R. K {
; ^. \& }, L: y+ D3 |: { SET_SCLK();//时钟正常输出
}; ~) J% F& d/ b4 T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 a' A# i8 e* }5 i6 a
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ L- `. Q; _. B( d0 _9 Y' j, f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ J+ Y2 { Q% p, v2 o" T: ~2 _4 c! [
' [6 z6 N+ c+ n/ q: ~+ k delay(20);
r7 H$ z+ y3 Q CLR_SCLK();2 s: V( o M# n+ l! i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS33 x% E$ I R. G; i- A/ Y" X" x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* O8 s( F( \/ J% `7 w/ L; k- p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN }$ Z: I+ \" p% n
delay(20);6 J7 x7 j& s- C6 K# s. N4 I
}
9 H8 _! c- N4 W( ?& \# T7 [}; N) E; b Z: } v1 g
|
|