|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" |1 g! w8 \5 _( y% lvoid PSCInit(void)
1 h; D5 j9 X4 F# ~( `{& Z8 Q& {7 j: d0 U" q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) a) k5 E& C, r9 L) ]}
$ C+ F9 J( j& |( B5 b- e4 I
& X: A& F( x6 L5 q$ \; v# W' }8 G4 Zvoid GPIOBankPinMuxSet(void)1 O* J: Y& q) f/ h3 O7 g8 \5 \+ {
{
/ k0 i1 `% x" B1 B: | // DRDY ------------ GPIO6[14] -- 111
" |* `" Z# f6 Y N. n# ]( W! Y // SPI1_CLK ------------ GPIO2[13] -- 46, s! H% U6 \$ f
// SPI1_SOMI------------ GPIO2[11] -- 44 i# R) ^* Y: b& U/ c
// SPI1_SIMO------------ GPIO2[10] -- 43
, g! g8 g5 }2 J) {. ^* n! [ // SPI1_CS2 ------------ GPIO1[0] -- 17
1 W% b/ c/ m) l. ?( ?( g // SPI1_CS3 ------------ GPIO1[1] -- 18
- d5 g% N. F9 M# I0 M, x0 Q
" R0 A( _) n! N9 h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
! |+ w6 [+ @( g: G. e% z" { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 g0 ^ o, ?) J0 l2 v, q* W# q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);; a# i0 h, M% h9 {$ A) Y8 g
0 g" s: a# r2 K: K- s //DRDY" X# V0 [$ t5 L P+ U
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
Q0 a0 |6 a: |+ x // CS2,CS3% p# E5 J) b7 X5 }! h) ^- [( p
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ c& }# Y3 s/ U3 `) h GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 S+ A+ W5 k% E/ Y( E7 p
//SIMO- u, Y4 c5 a( p6 \ a
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
# B* g/ J; F4 Z: s: |0 u9 f //SOMI
3 a+ }3 U3 D5 ? GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
$ _6 v6 |% l/ m8 A; v& Z //CLK0 @! a# S9 C% Z h" s0 }5 x6 g
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 I F' Z) l+ V/ c% Z
& M' l6 k4 z& G
// LDAC' D8 P! }# h. O8 L3 y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; h' N1 w, `9 G4 g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& r- ^! N0 r R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 Y, l1 C1 O( J9 L/ X& A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" G% v& a$ H' D GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
5 k$ s2 I' A. p# `* X. x! U}
, m+ b% `8 m1 g' u* n& W) h: c, |2 t) |' r9 [+ u2 \5 {9 b0 N
int main(void)8 D% I& L2 d: b9 I# \) ~8 B+ _6 u
{
3 N3 ~8 z& V6 v/ r) j8 ]% S // 外设使能
8 y# q: S, E% Y- z' o3 m" I PSCInit();
% ^+ {! a& @1 A+ v% H
$ N) A+ v4 r {* ~ l: g" F( h 5 s% \" y) c" e: a ^8 X# e& P# P
// 管脚复用配置% C& D) _0 B2 `$ x5 R4 l- U
GPIOBankPinMuxSet();
; }9 J: D3 a9 { for(;;)9 x' e7 x3 ^0 |' Z4 A6 g5 Q' R6 C
{" _: Z( O6 M" _$ N- H) H d
SET_SCLK();//时钟正常输出
& b" f2 a. p" A0 p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! |% j/ P9 c2 ?# ^! V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3& @" w1 F4 K6 K2 G0 M+ ?8 n7 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 C. Q4 T5 u5 o" N; E; p2 e, C) h7 K& G) k/ D7 A
delay(20);
. v" o4 V2 \5 \# r1 |8 r. A CLR_SCLK();
7 D) E! j: f0 M0 {+ D0 T0 @2 ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" P- Z: a, `2 W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 k8 o C8 X6 b, I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
y4 m* g8 n+ t O delay(20);
$ x6 b0 S/ A$ x$ A3 L& m8 G( ` }$ K0 Z; @# |+ R! ?: G$ G
}
. [0 l+ f1 C# s8 M" j, [2 D- Q! {$ j |
|