|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
! O8 M8 j/ k1 A5 V' K; }void PSCInit(void)
0 x" Y ^ ]! d' p! u{% S K2 I( E5 T) ?/ S2 K8 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: L, W. ]1 t! S: o% y1 m0 T+ h}
Z$ Q5 d; P5 a4 ^7 F/ {' ~2 V+ q& `/ a. _
void GPIOBankPinMuxSet(void)
7 n3 U. l$ B. z5 {1 X{: L9 |4 e! @& B: X
// DRDY ------------ GPIO6[14] -- 111! F4 \, G6 o# ] Q' E; `! @
// SPI1_CLK ------------ GPIO2[13] -- 462 E: n; m) P6 C# R8 ` C
// SPI1_SOMI------------ GPIO2[11] -- 44, I. G1 ~. B! T' V+ N! w; l
// SPI1_SIMO------------ GPIO2[10] -- 43
9 N* [& v! C. w" f: w // SPI1_CS2 ------------ GPIO1[0] -- 17
4 Q: k- j$ _/ f7 L // SPI1_CS3 ------------ GPIO1[1] -- 18# B# X" r3 v7 l& C; X j
+ g8 X( j* R: s) i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
) e$ @, T2 c8 ]5 L' _4 m# N0 U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& V9 e/ g1 G4 ~3 v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 v( v! L0 J" Z- @& B2 m |0 x7 @
* A8 |0 {' x1 H+ g& F4 J8 H4 [
//DRDY7 x7 p- b4 d! D% G( |6 e. [- Y6 s, i7 t
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ f; X+ J. C5 z* B% T9 |+ P // CS2,CS3, R! x6 g) {6 @. _5 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; s: D: Q% Q; T
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
. }/ S3 i9 i5 I( z //SIMO3 J" q K, g$ n+ r$ }. s2 d! E
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" M& B/ R* Z2 P e2 ? v" t4 Z( f) x
//SOMI
h6 J& X- k3 u. Z5 y! @4 S o4 ] GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: u4 n, S' i& i! Q" `$ b //CLK
5 C$ W `) k3 V+ O+ @* g. v8 H- q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* e2 b3 p9 H% R0 s7 l6 ?2 f! y' F
2 m% P0 Z1 Y6 w# b# A' A // LDAC
4 G5 ^8 ~/ @2 v. F GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& {) ]% E7 U5 H8 S) L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 i4 g# ]% P" f) w' y, ^! [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( \% |4 p, r7 m! i5 M5 x/ c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
4 _* ?! a, r7 B6 L GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 F- z+ L& h2 _
}4 m4 W* R. y0 W. C% \& \* }8 g. w
0 H5 [: p- U9 [+ K1 g6 `- g# l
int main(void)$ T+ `$ j" f- C7 e3 v8 Q# A. B
{% x/ a- l q. z
// 外设使能: E+ M8 W2 V" ~2 W K8 O7 ^$ H0 C8 p
PSCInit();% t5 r; v! _* `8 Y
7 Z) o: \8 @! S- B) J$ P- A# e
8 L& _" B' q! u: i @# E5 h$ l B // 管脚复用配置9 S( \) p" q$ E7 m& T& W, g, s% k
GPIOBankPinMuxSet();
( V& Y* Q/ Y& f' c% F# } e E for(;;)3 a1 [3 j% p! Y& S& m
{: N7 [1 E! s6 |7 g( v+ _
SET_SCLK();//时钟正常输出% R, t9 F5 C2 P) P% L5 m# m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
h1 a7 R& M! C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& }! S! j' T+ K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- j9 Y2 e/ D0 ~7 k0 C& E* t G% D
/ [: M! D1 o3 v. o: x& h* S delay(20);
9 e' r! ]+ G C' r. y6 P' t CLR_SCLK();, p9 L& g+ V' [: d6 x- n# Z" X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
) Q6 d9 [! M+ O3 }* ~2 j' v- r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- h* ?; T& g0 L- _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# m( I4 T3 r( K8 E) V4 v delay(20);
$ [( P( @ j9 {- b+ b& G) y }/ J: M v2 @0 n" p1 ?, O
}
1 g7 r4 e" J: n. ]) ^) j |
|