|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 j8 g. @/ f: s0 i6 avoid PSCInit(void)
$ w% F4 i; t! g. ]" m; Y: D{
& M2 ^, ]+ M* P PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ s( {3 K7 L; i# c}
. Q1 U4 P9 g& e) @% [6 W) V2 f& Y4 s5 ?5 s% Q
void GPIOBankPinMuxSet(void)
8 J! y) k9 r! D u1 m{, S$ e( z( _1 X; j; e
// DRDY ------------ GPIO6[14] -- 111
i$ }2 w! f7 E. ` // SPI1_CLK ------------ GPIO2[13] -- 46
4 x( S: `4 g7 m0 X4 u- a3 j // SPI1_SOMI------------ GPIO2[11] -- 44
% h9 Q# X) y! g: z% b, v // SPI1_SIMO------------ GPIO2[10] -- 43
$ A5 S4 d! `" O# Y, c' t // SPI1_CS2 ------------ GPIO1[0] -- 17) h2 i8 j. c# v+ _& A1 F3 r
// SPI1_CS3 ------------ GPIO1[1] -- 18
: M2 n9 t- N5 L2 ~7 ^3 B; N; c
5 {' w a; Z" j4 k: Y V7 d0 ` HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 y- X. |) T \9 M, z" d" L! w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ m) H# l7 d7 h5 |6 u& e' v( G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 m& Q+ N) Y' v$ _. C# R! i) T1 J# c6 X; g
//DRDY9 m+ @) ]% d; {+ k P' |+ N: c
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 M* f. W/ a. |
// CS2,CS3, E; w% {/ J) p) Q% t/ Z+ A, n
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, a" E$ n' m0 o- ~
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 f, U! R4 w6 }2 f/ F9 K1 [0 i //SIMO
. V2 p' e+ f3 l7 |: U GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 [ h* U1 T# t O a
//SOMI; R3 ^ @0 w; A6 q
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI e# x# i' W" _
//CLK. J: E5 z4 G* E, l/ R( G0 U
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& { `9 Q0 _4 W n4 M
7 l8 G+ `" _1 |
// LDAC0 w3 K% ^" ^1 Y/ S! ^8 S
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- a( w( Y' r3 O+ d5 z6 e6 j ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 o( u+ w" {/ R7 O$ f) G: K/ D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 b, ?$ T3 c+ C- M2 l7 N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" b/ i' `% w. Z1 S
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- b1 q1 q! b8 x- {7 u5 w}
5 J( U; |* ]9 C
7 R' L& G8 h- h7 d; U9 G9 @! U4 T8 dint main(void)
' P$ K+ k! D3 V3 J! O2 ]{
! s/ [" u3 |6 i // 外设使能; @' s; m) Z! Z3 j
PSCInit();& S1 c. n1 X, L2 U
/ w, x/ e. |( \* M. _) R' U u
; @5 j; J0 A/ l4 e0 H
// 管脚复用配置
' L* L9 W$ @6 A/ V2 f6 |& K# \ GPIOBankPinMuxSet();* I+ g+ a3 K+ a4 m: v+ V
for(;;): C) o6 x7 N; J" m5 q8 T
{2 m, w2 J$ [& y" A7 B( n- j
SET_SCLK();//时钟正常输出
8 `: l3 m7 k& x" a- p7 s" W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: i7 ~, u" C$ O9 {3 B: F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
~% U# l* J/ t- A7 w7 m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 c; p) `9 w; X0 b3 ]' a |' F1 j# q o, y) r$ \; I
delay(20);
( u( i. c% w1 x5 c* l CLR_SCLK();' U5 l, C* D; }) }% P( V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 Y% \5 X$ W1 T: n2 f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' ^, B8 x( ~0 Z( G2 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, A3 _' x$ s8 y5 w7 Q
delay(20);+ ?2 c7 V1 N, g
}
9 p; g- K# @% G1 e8 [/ K}
" C* L- O8 M; V+ ~' b! K |
|