|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
- |# \+ |# |0 avoid PSCInit(void)9 b' T' [- T" b5 _, v
{/ d2 j5 |( Z' F9 A; g1 f
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- ]: [: _6 z0 o2 I. M A
}
' i1 F" R; S" M5 o, }: {3 h6 i8 Y& o2 S
void GPIOBankPinMuxSet(void)3 g6 D/ k3 p$ O! ?5 a- f
{) H! u F( ]8 k! J9 ]0 w
// DRDY ------------ GPIO6[14] -- 111
. v3 \9 e* C6 h" ~8 V, y2 L // SPI1_CLK ------------ GPIO2[13] -- 46! F2 X* \. j" [7 {2 s8 |8 c1 }
// SPI1_SOMI------------ GPIO2[11] -- 44
; Y8 [' W$ e4 {6 m5 i" n) b+ i$ Z // SPI1_SIMO------------ GPIO2[10] -- 43
+ Q3 j. J4 ]4 ]) q- g // SPI1_CS2 ------------ GPIO1[0] -- 17
* {2 @0 r, j1 f7 G2 ~ // SPI1_CS3 ------------ GPIO1[1] -- 18
' c) u3 T8 Z9 E, g
: E* R9 F! ~# C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( X: v" A! x& ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 y" D9 {" T9 N$ N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" Q' V6 ]/ E; N1 s- N
, G# d0 W; P Q- Z6 V6 @+ j
//DRDY7 K) W# Y# _8 p+ }# h
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 Y; H& Y1 T( p+ V5 Q
// CS2,CS3' g: ~( g/ \# k& s/ W
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 F3 R N9 H5 R+ N. q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* z D0 e/ l$ D, a, _' D //SIMO- D+ _5 _* G2 }! g$ L; j. s
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! E- R/ x. B. D2 F* Z7 M0 y0 h3 c
//SOMI5 q, R% U6 o. D, t, _% r# c
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI V; l7 A9 b1 U* }, P$ L' I
//CLK. S" [* k. I$ V
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) Y( O' u( A$ E8 ^- w& o6 j$ }7 G! y
& C- r, d8 f4 e& M$ `: F w& q // LDAC V' f* c: w2 Z0 e3 w& Y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK \1 O6 S% m1 ]) ~+ ]" m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, P }! a4 E6 V/ t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 R( _2 K0 t' g: a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 N& G2 }/ h& @5 P8 M2 t# d GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# v3 @! z+ {8 u! s* {}$ B; R t$ n6 Y& b; t$ q ^' d* n% |
2 m! O( O% P! v7 Q. Y/ N* B0 c
int main(void)
7 Z' Y, P0 J8 ?& U, T* c/ \{
9 b- w/ `# I) X! p3 B w% ` // 外设使能
8 X$ W5 Y a8 e3 C PSCInit();
. T6 F8 L( L5 x6 P& j- c
3 y- @5 C! ?& K1 P, J
6 t4 T9 Z T: ^, d // 管脚复用配置 y! V0 `% t4 M( o& z% ^
GPIOBankPinMuxSet();
2 ^& v( }+ m$ [ for(;;)
* I7 A9 ^6 g! N, s' ^0 m {0 G, v& f- G& x1 X# S
SET_SCLK();//时钟正常输出+ @; ~; | m6 V$ B- \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! B; e2 d f, x9 e U& s& M8 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 }% x" H$ h1 Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ A* e& R, f6 j: G9 Z4 j2 A
- S+ y8 V; c/ S% C
delay(20);# p& |1 U0 N+ Y) C) q) @! {4 i/ |5 C
CLR_SCLK();
~, K$ C8 `# v! L; ?# j% X H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& @0 \8 N+ r8 W2 G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3- z) z1 L6 o& R! @- T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# N" O9 |2 m) w+ P9 Y$ }3 c* p/ \ delay(20);' |* @3 a# R0 D8 J F8 c( V) a% O
}
3 M: t* T$ p- S" p& r# J/ I}1 o5 o. m1 ?: L
|
|